From bdf160a98e2faaf7c74da4600a4cde1346047346 Mon Sep 17 00:00:00 2001 From: Mikhail Trubnikov Date: Wed, 20 Sep 2023 16:10:52 +1000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B4=D0=B5=D0=BB=D0=B0=D0=BB=20?= =?UTF-8?q?=D0=B2=D0=B0=D0=BB=D0=B8=D0=B4=D0=B0=D1=82=D0=BE=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../V1/GeneratorTemplateController.cs | 4 +-- .../GeneratorTemplateRequestValidator.cs | 32 ++++++++++++------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/PARR.API/Controllers/V1/GeneratorTemplateController.cs b/PARR.API/Controllers/V1/GeneratorTemplateController.cs index 37567e1f..8deb8b11 100644 --- a/PARR.API/Controllers/V1/GeneratorTemplateController.cs +++ b/PARR.API/Controllers/V1/GeneratorTemplateController.cs @@ -1,5 +1,4 @@ -using AutoMapper; -using FluentValidation; +using FluentValidation; using Microsoft.AspNetCore.Mvc; using PARR.API.Contracts.V1; using PARR.API.Contracts.V1.Requests; @@ -7,7 +6,6 @@ using PARR.API.Contracts.V1.Responses.Base; using PARR.API.Controllers.V1.Base; using PARR.API.Services.Interfaces; using PARR.BLL.Domain.Mq; -using PARR.DAL.Services.Interfaces; using System.Text.Json; namespace PARR.API.Controllers.V1 diff --git a/PARR.API/Validators/GeneratorTemplateRequestValidator.cs b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs index 09e18c86..25ea8fca 100644 --- a/PARR.API/Validators/GeneratorTemplateRequestValidator.cs +++ b/PARR.API/Validators/GeneratorTemplateRequestValidator.cs @@ -7,31 +7,39 @@ namespace PARR.API.Validators { public class GeneratorTemplateRequestValidator : AbstractValidator { - private readonly IApplicationService applicationService; + private readonly IApplicationsInWorkService applicationsInWorkService; - public GeneratorTemplateRequestValidator(IApplicationService applicationService) + private bool? isValid = null; + + public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService) { - this.applicationService = applicationService; + this.applicationsInWorkService = applicationsInWorkService; - RuleFor(t => t.WorkId).NotEmpty(); + RuleFor(t => t.WorkId) + .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId)) + .WithMessage("У данной работы нет связанных приложений"); RuleFor(t => t.ApplicationId) - .MustAsync(async (entity, value, c) => await IsExistApplication(entity, value)) - .WithMessage("Нет приложения с таким Id."); + .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value)) + .WithMessage("У данного приложения нет связанных работ"); - RuleFor(t => t.Ek).NotEmpty(); + //TODO: возможно сделать проверку, по данному выражению есть ли ЭК + RuleFor(t => t.Ek).NotEmpty().WithMessage("ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС"); RuleFor(t => t.Action) .Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString()) .WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}"); - } - //todo: сделать валидацию в тбл AppInWorks - - private async Task IsExistApplication(GeneratorTemplateRequest request, Guid applicationId) + private async Task IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId) { - return await applicationService.GetAsync(applicationId) != null; + //чтобы не делать 2 раза валидацию + if (isValid.HasValue) + return isValid.Value; + + isValid = await applicationsInWorkService.Get(applicationId, request.WorkId) != null; + + return isValid.Value; } } }