From 59113e87da37174a5609bdfefba1616f544f217c Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Wed, 17 Apr 2024 09:07:46 +1000 Subject: [PATCH] =?UTF-8?q?fix(api):=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=BB=D0=B5=D0=BD=D0=B0=20=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D0=B2=20AppInWork,=20Create,=20Upda?= =?UTF-8?q?te,=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0=20=D0=BD?= =?UTF-8?q?=D0=B0=20=D1=83=D0=BD=D0=B8=D0=BA=D0=B0=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D1=81=D1=82=D1=8C=20=D0=9F=D0=9E=20=D0=B8=20=D1=80=D0=B0=D0=B1?= =?UTF-8?q?=D0=BE=D1=82=D1=8B.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1/ApplicationInWorkController.cs | 10 +++++++ .../Validators/ApplicationInWorkValidator.cs | 30 +++++++++---------- 2 files changed, 25 insertions(+), 15 deletions(-) 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) {