Files
parr_api/PARR.API/Validators/TemplateActivatorRequestValidator.cs

44 lines
1.7 KiB
C#

using FluentValidation;
using PARR.API.Contracts.V1.Requests;
using PARR.Constants;
using PARR.DAL.Services.Interfaces;
using PARR.DAL.Services.Interfaces.Job;
namespace PARR.API.Validators
{
public class TemplateActivatorRequestValidator : AbstractValidator<TemplateActivatorRequest>
{
public TemplateActivatorRequestValidator(
ITemplateService templateService,
IJobService jobService,
IJobGroupService jobGroupService
)
{
RuleFor(t => t.EntityType).Must(type =>
Enum.IsDefined(typeof(SyncTaskEntityTypeEnum), type)
).WithMessage("Некорректное значение EntityType");
RuleFor(t => t.EsppObject).Must(obj =>
Enum.IsDefined(typeof(TemplateActivatorEsppObjectTypesEnum), obj)
).WithMessage("Некорректное значение EsppObject");
RuleFor(t => t.Id)
.MustAsync(async (entity, value, c) =>
{
switch (entity.EntityType)
{
case SyncTaskEntityTypeEnum.JobGroup:
return await jobGroupService.GetAsync(value) != null;
case SyncTaskEntityTypeEnum.Job:
return await jobService.GetAsync(value) != null;
case SyncTaskEntityTypeEnum.Template:
return await templateService.GetAsync(value) != null;
}
return false;
})
.WithMessage("Некорректное значение Id");
}
}
}