feat(api): создан TnkController+валидация входных данных
This commit is contained in:
40
PARR.API/Validators/TnkRequestValidator.cs
Normal file
40
PARR.API/Validators/TnkRequestValidator.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using FluentValidation;
|
||||
using PARR.API.Contracts.V1.Requests;
|
||||
using PARR.DAL.Services.Interfaces;
|
||||
|
||||
namespace PARR.API.Validators
|
||||
{
|
||||
public class TnkRequestValidator : AbstractValidator<TnkRequest>
|
||||
{
|
||||
private readonly ISubprocessService subprocessService;
|
||||
private bool? isValid = null;
|
||||
|
||||
public TnkRequestValidator(
|
||||
ISubprocessService subprocessService
|
||||
)
|
||||
{
|
||||
this.subprocessService = subprocessService;
|
||||
|
||||
RuleFor(t => t.Name).NotEmpty().NotNull().WithMessage("Имя ТНК не может быть пустым");
|
||||
|
||||
RuleFor(t => t.EsppId).NotEmpty().NotNull().WithMessage("EsppId не может быть пустым");
|
||||
|
||||
RuleFor(t => t.SubprocessId).NotEmpty().NotNull().WithMessage("ТНК должна быть связана с подпроцессом. SubprocessId не может быть пустым");
|
||||
|
||||
RuleFor(t => t.SubprocessId)
|
||||
.MustAsync(async (entity, value, c) => await IsSubprocessExist(entity))
|
||||
.WithMessage("У данной ТНК указан несуществующий Id подпроцесса");
|
||||
}
|
||||
|
||||
private async Task<bool> IsSubprocessExist(TnkRequest request)
|
||||
{
|
||||
//чтобы не делать 2 раза валидацию
|
||||
if (isValid.HasValue)
|
||||
return isValid.Value;
|
||||
|
||||
isValid = await subprocessService.GetAsync(request.SubprocessId) != null;
|
||||
|
||||
return isValid.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -24,7 +24,7 @@ namespace PARR.API.Validators
|
||||
|
||||
RuleFor(t => t.TnkId)
|
||||
.MustAsync(async (entity, value, c) => await IsTnkExist(entity))
|
||||
.WithMessage("У данной работы указан не существующий Id ТНК");
|
||||
.WithMessage("У данной работы указан несуществующий Id ТНК");
|
||||
}
|
||||
|
||||
private async Task<bool> IsTnkExist(WorkRequest request)
|
||||
|
||||
Reference in New Issue
Block a user