fix(api): исправлена валидация в AppInWork, Create, Update, проверка на уникальность ПО и работы.
This commit is contained in:
@@ -109,6 +109,11 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
//уникальная запись по полям ApplicationId, WorkId
|
||||
var existSameAiW = await applicationsInWorkService.GetAsync(request.ApplicationId, request.WorkId);
|
||||
if (existSameAiW != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Задание на выполнение работ с такими ПО и работой уже существует" } }));
|
||||
|
||||
var applicationInWork = new ApplicationsInWork
|
||||
{
|
||||
Id = Guid.NewGuid(),
|
||||
@@ -167,6 +172,11 @@ namespace PARR.API.Controllers.V1
|
||||
if (!resultValidate.IsValid)
|
||||
return BadRequest(new Response(resultValidate.Errors));
|
||||
|
||||
//уникальная запись по полям ApplicationId, WorkId у которой id!=[FromRoute]id
|
||||
var existSameAiW = await applicationsInWorkService.Get().FirstOrDefaultAsync(t => t.Id != id && t.ApplicationId == request.ApplicationId && t.WorkId == request.WorkId);
|
||||
if (existSameAiW != null)
|
||||
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Задание на выполнение работ с такими ПО и работой уже существует" } }));
|
||||
|
||||
var orig = await applicationsInWorkService.GetAsync(id);
|
||||
|
||||
if (orig == null)
|
||||
|
||||
@@ -44,9 +44,9 @@ namespace PARR.API.Validators
|
||||
|
||||
RuleFor(t => t.ApplicationId)
|
||||
.MustAsync(async (entity, value, c) => await IsApplicationExist(entity))
|
||||
.WithMessage("Указан несуществующий Id программного обеспечения")
|
||||
.MustAsync(async (entity, value, c) => await AppInWorkIsUnique(entity))
|
||||
.WithMessage("Задание на выполнение работ с такими ПО и Работой уже существует");
|
||||
.WithMessage("Указан несуществующий Id программного обеспечения");
|
||||
//.MustAsync(async (entity, value, c) => await AppInWorkIsUnique(entity))
|
||||
// .WithMessage("Задание на выполнение работ с такими ПО и работой уже существует");
|
||||
//.WithMessage("У данного задания на выполнение работ указан несуществующий Id программного обеспечения");
|
||||
|
||||
|
||||
@@ -123,21 +123,21 @@ namespace PARR.API.Validators
|
||||
return true;
|
||||
}
|
||||
|
||||
private async Task<bool> AppInWorkIsUnique(ApplicationInWorkRequest request)
|
||||
{
|
||||
//уникальная запись по полям ApplicationId, WorkId
|
||||
//private async Task<bool> AppInWorkIsUnique(ApplicationInWorkRequest request)
|
||||
//{
|
||||
// //уникальная запись по полям ApplicationId, WorkId
|
||||
|
||||
var existSameAiW = await applicationsInWorkService.GetAsync(request.ApplicationId, request.WorkId);
|
||||
// var existSameAiW = await applicationsInWorkService.GetAsync(request.ApplicationId, request.WorkId);
|
||||
|
||||
//TODO: тут спорно, нужна ли эта проверка? Мы же можем создать несколько РР на одно и тоже ПО но с разным расписанием?
|
||||
//к тому же, в методе update, такой проверки нет!
|
||||
//if (existSameAiW != null)
|
||||
// return BadRequest(new Response(false, new List<ErrorModel> {
|
||||
// new ErrorModel { Message = $"Уже существует задание на выполнение работ для программного обеспечения id({request.ApplicationId}) и работой id({request.WorkId})." } }
|
||||
// ));
|
||||
// //TODO: тут спорно, нужна ли эта проверка? Мы же можем создать несколько РР на одно и тоже ПО но с разным расписанием?
|
||||
// //к тому же, в методе update, такой проверки нет!
|
||||
// //if (existSameAiW != null)
|
||||
// // return BadRequest(new Response(false, new List<ErrorModel> {
|
||||
// // new ErrorModel { Message = $"Уже существует задание на выполнение работ для программного обеспечения id({request.ApplicationId}) и работой id({request.WorkId})." } }
|
||||
// // ));
|
||||
|
||||
return existSameAiW == null;
|
||||
}
|
||||
// return existSameAiW == null;
|
||||
//}
|
||||
|
||||
private async Task<bool> IsWorkExist(ApplicationInWorkRequest request)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user