feat(dal, api): в таблицах Process, Subprocess, Tnks, Works поле EsppId - уникальное. Обновлены соответсвующе контроллеры (валидация esppId), добавлены методы удаления если нет дочерних элементов.
This commit is contained in:
@@ -46,40 +46,6 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Создать процесс
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost(ApiRoutes.Process.Create)]
|
||||
public async Task<IActionResult> Create([FromBody] ProcessRequest request)
|
||||
{
|
||||
var resultValidate = await validator.ValidateAsync(request);
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await processService.Get().FirstOrDefaultAsync(t => t.Name == request.Name);
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Процесс с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var process = new Process
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name,
|
||||
EsppId = request.EsppId
|
||||
};
|
||||
|
||||
if (!await processService.CreateAsync(process) || !await processService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при записи нового процесса в базу данных" } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил процесс: {process.Name}, {process.EsppId}");
|
||||
|
||||
var locationUri = uriService.GetUri(ApiRoutes.Process.Get, ApiRoutes.Process.getParam, process.Id);
|
||||
|
||||
return Created(locationUri, new Response<ProcessResponse>(mapper.Map<ProcessResponse>(process), true));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Список процессов постранично
|
||||
/// </summary>
|
||||
@@ -146,6 +112,44 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Создать процесс
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost(ApiRoutes.Process.Create)]
|
||||
public async Task<IActionResult> Create([FromBody] ProcessRequest request)
|
||||
{
|
||||
var resultValidate = await validator.ValidateAsync(request);
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await processService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == request.Name.ToLower().Trim());
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Процесс с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var existEsppId = await processService.Get().FirstOrDefaultAsync(t => t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Процесс с EsppId: {request.EsppId} уже существует." } }));
|
||||
|
||||
var process = new Process
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name.Trim(),
|
||||
EsppId = request.EsppId
|
||||
};
|
||||
|
||||
if (!await processService.CreateAsync(process) || !await processService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при добавлении процесса." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил процесс: {process.Name}, {process.EsppId}");
|
||||
|
||||
var locationUri = uriService.GetUri(ApiRoutes.Process.Get, ApiRoutes.Process.getParam, process.Id);
|
||||
|
||||
return Created(locationUri, new Response<ProcessResponse>(mapper.Map<ProcessResponse>(process), true));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Обновить процесс
|
||||
/// </summary>
|
||||
@@ -159,17 +163,21 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var orig = await processService.Get()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
//проверка на уникальность esppId
|
||||
var existEsppId = await processService.Get().FirstOrDefaultAsync(t => t.Id != id && t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Уже есть процесс с EsppId: {request.EsppId}" } }));
|
||||
|
||||
var orig = await processService.Get().FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (orig == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении процесса. Не найден процесс Id: {id}" } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении процесса." } }));
|
||||
|
||||
orig.Name = request.Name;
|
||||
orig.Name = request.Name.Trim();
|
||||
orig.EsppId = request.EsppId;
|
||||
|
||||
if (!await processService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка записи в базу данных изменений процесса." } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении процесса." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} обновил процесс: {orig.Id}, {orig.Name}, {orig.EsppId}");
|
||||
|
||||
@@ -178,24 +186,27 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Удалить подпроцесс
|
||||
/// Удалить процесс (если у него нет подпроцессов)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
//[HttpDelete(ApiRoutes.Process.Delete)]
|
||||
//public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
//{
|
||||
// var process = await processService.GetAsync(id);
|
||||
[HttpDelete(ApiRoutes.Process.Delete)]
|
||||
public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
{
|
||||
var process = await processService.Get().Include(t => t.Subprocesses).FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
// if (process == null)
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении процесса. Не найден процесс Id: {id}" } }));
|
||||
if (process == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении процесса." } }));
|
||||
|
||||
// if (!processService.Delete(process) || !await processService.CommitAsync())
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении процесса из базы данных" } }));
|
||||
if (process.Subprocesses.Any())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении процесса. У данного процесса есть подпроцессы ({process.Subprocesses.Count()} шт.)" } }));
|
||||
|
||||
// logger.LogInformation($"Пользователь {User.Identity?.Name} удалил процесс: {process.Id}, {process.Name}, {process.EsppId}");
|
||||
if (!processService.Delete(process) || !await processService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении процесса." } }));
|
||||
|
||||
// return NoContent();
|
||||
//}
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} удалил процесс: {process.Id}, {process.Name}, {process.EsppId}");
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,20 +128,24 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await subprocessService.Get().FirstOrDefaultAsync(t => t.Name == request.Name);
|
||||
var existName = await subprocessService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == request.Name.Trim().ToLower());
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Подпроцесс с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var existEsppId = await subprocessService.Get().FirstOrDefaultAsync(t => t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Подпроцесс с EsppId: {request.EsppId} уже существует." } }));
|
||||
|
||||
var subprocess = new Subprocess
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name,
|
||||
Name = request.Name.Trim(),
|
||||
EsppId = request.EsppId,
|
||||
ProcessId = request.ProcessId,
|
||||
};
|
||||
|
||||
if (!await subprocessService.CreateAsync(subprocess) || !await subprocessService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при записи нового подпроцесса в базу данных" } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при добавлении подпроцесса." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил подпроцесс: {subprocess.Name}, {subprocess.EsppId}, {subprocess.ProcessId}");
|
||||
|
||||
@@ -151,8 +155,6 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Обновить подпроцесс
|
||||
/// </summary>
|
||||
@@ -166,13 +168,17 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var orig = await subprocessService.Get()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
//проверка на уникальность esppId
|
||||
var existEsppId = await subprocessService.Get().FirstOrDefaultAsync(t => t.Id != id && t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Уже есть подпроцесс с EsppId: {request.EsppId}" } }));
|
||||
|
||||
var orig = await subprocessService.Get().FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (orig == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении подпроцесса. Не найден подпроцесс Id: {id}" } }));
|
||||
|
||||
orig.Name = request.Name;
|
||||
orig.Name = request.Name.Trim();
|
||||
orig.EsppId = request.EsppId;
|
||||
orig.ProcessId = request.ProcessId;
|
||||
|
||||
@@ -186,24 +192,27 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Удалить подпроцесс
|
||||
/// Удалить подпроцесс (если у него нет ТНК)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
//[HttpDelete(ApiRoutes.Subprocess.Delete)]
|
||||
//public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
//{
|
||||
// var subprocess = await subprocessService.GetAsync(id);
|
||||
[HttpDelete(ApiRoutes.Subprocess.Delete)]
|
||||
public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
{
|
||||
var subprocess = await subprocessService.Get().Include(t=>t.Tnks).FirstOrDefaultAsync(t=>t.Id==id);
|
||||
|
||||
// if (subprocess == null)
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении подпроцесса. Не найден подпроцесс Id: {id}" } }));
|
||||
if (subprocess == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении подпроцесса." } }));
|
||||
|
||||
// if (!subprocessService.Delete(subprocess) || !await subprocessService.CommitAsync())
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении подпроцесса из базы данных" } }));
|
||||
if (subprocess.Tnks.Any())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении подпроцесса. У данного подпроцесса есть ТНК ({subprocess.Tnks.Count()} шт.)" } }));
|
||||
|
||||
// logger.LogInformation($"Пользователь {User.Identity?.Name} удалил подпроцесс: {subprocess.Id}, {subprocess.Name}, {subprocess.EsppId}, {subprocess.ProcessId}");
|
||||
if (!subprocessService.Delete(subprocess) || !await subprocessService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении подпроцесса." } }));
|
||||
|
||||
// return NoContent();
|
||||
//}
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} удалил подпроцесс: {subprocess.Id}, {subprocess.Name}, {subprocess.EsppId}, {subprocess.ProcessId}");
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,20 +128,24 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await tnkService.Get().FirstOrDefaultAsync(t => t.Name == request.Name);
|
||||
var existName = await tnkService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == request.Name.Trim().ToLower());
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Вид работы с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var existEsppId = await tnkService.Get().FirstOrDefaultAsync(t => t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"ТНК с EsppId: {request.EsppId} уже существует." } }));
|
||||
|
||||
var tnk = new Tnk
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name,
|
||||
Name = request.Name.Trim(),
|
||||
EsppId = request.EsppId,
|
||||
SubprocessId = request.SubprocessId,
|
||||
};
|
||||
|
||||
if (!await tnkService.CreateAsync(tnk) || !await tnkService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при записи новой ТНК в базу данных" } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка добавлении ТНК." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил ТНК: {tnk.Name}, {tnk.EsppId}, {tnk.SubprocessId}");
|
||||
|
||||
@@ -164,18 +168,23 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
//проверка на уникальность esppId
|
||||
var existEsppId = await tnkService.Get().FirstOrDefaultAsync(t => t.Id != id && t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Уже есть ТНК с EsppId: {request.EsppId}" } }));
|
||||
|
||||
var orig = await tnkService.Get()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (orig == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении ТНК. Не найдена ТНК Id: {id}" } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении ТНК." } }));
|
||||
|
||||
orig.Name = request.Name;
|
||||
orig.Name = request.Name.Trim();
|
||||
orig.EsppId = request.EsppId;
|
||||
orig.SubprocessId = request.SubprocessId;
|
||||
|
||||
if (!await tnkService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка записи в базу данных изменений ТНК." } }));
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении ТНК." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} обновил ТНК: {orig.Id}, {orig.Name}, {orig.EsppId}, {orig.SubprocessId}");
|
||||
|
||||
@@ -184,24 +193,27 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Удалить ТНК
|
||||
/// Удалить ТНК (если у него нет работ)
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
//[HttpDelete(ApiRoutes.Tnk.Delete)]
|
||||
//public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
//{
|
||||
// var tnk = await tnkService.GetAsync(id);
|
||||
[HttpDelete(ApiRoutes.Tnk.Delete)]
|
||||
public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
{
|
||||
var tnk = await tnkService.Get().Include(t => t.Works).FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
// if (tnk == null)
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении ТНК. Не найдена ТНК Id: {id}" } }));
|
||||
if (tnk == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении ТНК." } }));
|
||||
|
||||
// if (!tnkService.Delete(tnk) || !await tnkService.CommitAsync())
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении ТНК из базы данных" } }));
|
||||
if (tnk.Works.Any())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении ТНК. У данного ТНК есть работы ({tnk.Works.Count()} шт.)" } }));
|
||||
|
||||
// logger.LogInformation($"Пользователь {User.Identity?.Name} удалил ТНК: {tnk.Id}, {tnk.Name}, {tnk.EsppId}, {tnk.SubprocessId}");
|
||||
if (!tnkService.Delete(tnk) || !await tnkService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении ТНК." } }));
|
||||
|
||||
// return NoContent();
|
||||
//}
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} удалил ТНК: {tnk.Id}, {tnk.Name}, {tnk.EsppId}, {tnk.SubprocessId}");
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,41 +93,6 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Создать вид работы
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost(ApiRoutes.Work.Create)]
|
||||
public async Task<IActionResult> Create([FromBody] WorkRequest request)
|
||||
{
|
||||
var resultValidate = await validator.ValidateAsync(request);
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await workService.Get().FirstOrDefaultAsync(t => t.Name == request.Name);
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Вид работы с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var work = new Work
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name,
|
||||
EsppId = request.EsppId,
|
||||
TnkId = request.TnkId,
|
||||
};
|
||||
|
||||
if (!await workService.CreateAsync(work) || !await workService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создании вида работ." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил вид работ: {work.Name}, {work.EsppId}, {work.TnkId}");
|
||||
|
||||
var locationUri = uriService.GetUri(ApiRoutes.Work.Get, ApiRoutes.Work.getParam, work.Id);
|
||||
|
||||
return Created(locationUri, new Response<WorkResponse>(mapper.Map<WorkResponse>(work), true));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Получить работу по id
|
||||
/// </summary>
|
||||
@@ -148,6 +113,45 @@ namespace PARR.API.Controllers.V1
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Создать вид работы
|
||||
/// </summary>
|
||||
/// <param name="request"></param>
|
||||
/// <returns></returns>
|
||||
[HttpPost(ApiRoutes.Work.Create)]
|
||||
public async Task<IActionResult> Create([FromBody] WorkRequest request)
|
||||
{
|
||||
var resultValidate = await validator.ValidateAsync(request);
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
var existName = await workService.Get().FirstOrDefaultAsync(t => t.Name.ToLower() == request.Name.Trim().ToLower());
|
||||
if (existName != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.Name), Message = $"Вид работы с именем \"{request.Name}\" уже существует." } }));
|
||||
|
||||
var existEsppId = await workService.Get().FirstOrDefaultAsync(t => t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Вид работы с EsppId: {request.EsppId} уже существует." } }));
|
||||
|
||||
var work = new Work
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
Name = request.Name.Trim(),
|
||||
EsppId = request.EsppId,
|
||||
TnkId = request.TnkId,
|
||||
};
|
||||
|
||||
if (!await workService.CreateAsync(work) || !await workService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создании вида работ." } }));
|
||||
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} добавил вид работ: {work.Name}, {work.EsppId}, {work.TnkId}");
|
||||
|
||||
var locationUri = uriService.GetUri(ApiRoutes.Work.Get, ApiRoutes.Work.getParam, work.Id);
|
||||
|
||||
return Created(locationUri, new Response<WorkResponse>(mapper.Map<WorkResponse>(work), true));
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Обновить вид работ
|
||||
/// </summary>
|
||||
@@ -161,13 +165,19 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
//проверка на уникальность esppId
|
||||
var existEsppId = await workService.Get().FirstOrDefaultAsync(t => t.Id != id && t.EsppId == request.EsppId);
|
||||
if (existEsppId != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { FieldName = nameof(request.EsppId), Message = $"Уже есть вид работ с EsppId: {request.EsppId}" } }));
|
||||
|
||||
|
||||
var orig = await workService.Get()
|
||||
.FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
if (orig == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при изменении вида работ. Не найдена работа Id: {id}" } }));
|
||||
|
||||
orig.Name = request.Name;
|
||||
orig.Name = request.Name.Trim();
|
||||
orig.EsppId = request.EsppId;
|
||||
orig.TnkId = request.TnkId;
|
||||
|
||||
@@ -181,25 +191,28 @@ namespace PARR.API.Controllers.V1
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Удалить вид работ
|
||||
/// Удалить вид работ (если у него нет заданий (AppInWork))
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
//[HttpDelete(ApiRoutes.Work.Delete)]
|
||||
//public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
//{
|
||||
// var work = await workService.GetAsync(id);
|
||||
[HttpDelete(ApiRoutes.Work.Delete)]
|
||||
public async Task<IActionResult> Delete([FromRoute] Guid id)
|
||||
{
|
||||
var work = await workService.Get().Include(t => t.ApplicationsInWorks).FirstOrDefaultAsync(t => t.Id == id);
|
||||
|
||||
// if (work == null)
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении вида работ. Не найдена работа, Id: {id}" } }));
|
||||
if (work == null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении вида работ." } }));
|
||||
|
||||
// if (!workService.Delete(work) || !await workService.CommitAsync())
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении вида работ." } }));
|
||||
if (work.ApplicationsInWorks.Any())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении вида работ. У данной работы есть задания ({work.ApplicationsInWorks.Count()} шт.)" } }));
|
||||
|
||||
// logger.LogInformation($"Пользователь {User.Identity?.Name} удалил вид работ: {work.Id}, {work.Name}, {work.EsppId}, {work.TnkId}");
|
||||
if (!workService.Delete(work) || !await workService.CommitAsync())
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении вида работ." } }));
|
||||
|
||||
// return NoContent();
|
||||
//}
|
||||
logger.LogInformation($"Пользователь {User.Identity?.Name} удалил вид работ: {work.Id}, {work.Name}, {work.EsppId}, {work.TnkId}");
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user