diff --git a/PARR.API/Controllers/V1/ApplicationInWorkController.cs b/PARR.API/Controllers/V1/ApplicationInWorkController.cs index 71f4c03e..5b013f7d 100644 --- a/PARR.API/Controllers/V1/ApplicationInWorkController.cs +++ b/PARR.API/Controllers/V1/ApplicationInWorkController.cs @@ -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 { 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 { new ErrorModel { Message = "Задание на выполнение работ с такими ПО и работой уже существует" } })); + var orig = await applicationsInWorkService.GetAsync(id); if (orig == null) diff --git a/PARR.API/Validators/ApplicationInWorkValidator.cs b/PARR.API/Validators/ApplicationInWorkValidator.cs index 8acbdfe0..225d309b 100644 --- a/PARR.API/Validators/ApplicationInWorkValidator.cs +++ b/PARR.API/Validators/ApplicationInWorkValidator.cs @@ -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 AppInWorkIsUnique(ApplicationInWorkRequest request) - { - //уникальная запись по полям ApplicationId, WorkId + //private async Task 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 { - // new ErrorModel { Message = $"Уже существует задание на выполнение работ для программного обеспечения id({request.ApplicationId}) и работой id({request.WorkId})." } } - // )); + // //TODO: тут спорно, нужна ли эта проверка? Мы же можем создать несколько РР на одно и тоже ПО но с разным расписанием? + // //к тому же, в методе update, такой проверки нет! + // //if (existSameAiW != null) + // // return BadRequest(new Response(false, new List { + // // new ErrorModel { Message = $"Уже существует задание на выполнение работ для программного обеспечения id({request.ApplicationId}) и работой id({request.WorkId})." } } + // // )); - return existSameAiW == null; - } + // return existSameAiW == null; + //} private async Task IsWorkExist(ApplicationInWorkRequest request) {