feat(api): создан SubprocessController+валидация входных данных

This commit is contained in:
Mikhail Kuznetsov
2024-03-06 15:09:48 +10:00
parent 563f56b770
commit 9f3b470854
4 changed files with 258 additions and 8 deletions

View File

@@ -0,0 +1,40 @@
using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.DAL.Services.Interfaces;
namespace PARR.API.Validators
{
public class SubprocessValidator : AbstractValidator<SubprocessRequest>
{
private readonly IProcessService processService;
private bool? isValid = null;
public SubprocessValidator(
IProcessService processService
)
{
this.processService = processService;
RuleFor(t => t.Name).NotEmpty().NotNull().WithMessage("Имя подпроцесса не может быть пустым");
RuleFor(t => t.EsppId).NotEmpty().NotNull().WithMessage("EsppId не может быть пустым");
RuleFor(t => t.ProcessId).NotEmpty().NotNull().WithMessage("Подпроцесс должна быть связан с процессом. ProcessId не может быть пустым");
RuleFor(t => t.ProcessId)
.MustAsync(async (entity, value, c) => await IsProcessExist(entity))
.WithMessage("У данного подпроцесса указан несуществующий Id процесса");
}
private async Task<bool> IsProcessExist(SubprocessRequest request)
{
//чтобы не делать 2 раза валидацию
if (isValid.HasValue)
return isValid.Value;
isValid = await processService.GetAsync(request.ProcessId) != null;
return isValid.Value;
}
}
}