Доделал валидатор
This commit is contained in:
@@ -1,5 +1,4 @@
|
|||||||
using AutoMapper;
|
using FluentValidation;
|
||||||
using FluentValidation;
|
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using PARR.API.Contracts.V1;
|
using PARR.API.Contracts.V1;
|
||||||
using PARR.API.Contracts.V1.Requests;
|
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.Controllers.V1.Base;
|
||||||
using PARR.API.Services.Interfaces;
|
using PARR.API.Services.Interfaces;
|
||||||
using PARR.BLL.Domain.Mq;
|
using PARR.BLL.Domain.Mq;
|
||||||
using PARR.DAL.Services.Interfaces;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
|
|
||||||
namespace PARR.API.Controllers.V1
|
namespace PARR.API.Controllers.V1
|
||||||
|
|||||||
@@ -7,31 +7,39 @@ namespace PARR.API.Validators
|
|||||||
{
|
{
|
||||||
public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
|
public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
|
||||||
{
|
{
|
||||||
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)
|
RuleFor(t => t.ApplicationId)
|
||||||
.MustAsync(async (entity, value, c) => await IsExistApplication(entity, value))
|
.MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
|
||||||
.WithMessage("Нет приложения с таким Id.");
|
.WithMessage("У данного приложения нет связанных работ");
|
||||||
|
|
||||||
RuleFor(t => t.Ek).NotEmpty();
|
//TODO: возможно сделать проверку, по данному выражению есть ли ЭК
|
||||||
|
RuleFor(t => t.Ek).NotEmpty().WithMessage("ЭК, принимает регулярное выражение. Например: *, ВРТ-*-ДВС");
|
||||||
|
|
||||||
RuleFor(t => t.Action)
|
RuleFor(t => t.Action)
|
||||||
.Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
|
.Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
|
||||||
.WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
|
.WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//todo: сделать валидацию в тбл AppInWorks
|
private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
|
||||||
|
|
||||||
private async Task<bool> IsExistApplication(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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user