55 lines
2.7 KiB
C#
55 lines
2.7 KiB
C#
using FluentValidation;
|
||
using PARR.API.Contracts.V1.Requests;
|
||
using PARR.DAL.Services.Interfaces;
|
||
|
||
namespace PARR.API.Validators
|
||
{
|
||
public class ApplicationInWorkValidator : AbstractValidator<ApplicationInWorkRequest>
|
||
{
|
||
private readonly IApplicationsInWorkService applicationsInWorkService;
|
||
private readonly IWorkService workService;
|
||
|
||
public ApplicationInWorkValidator(
|
||
IApplicationsInWorkService applicationsInWorkService,
|
||
IWorkService workService
|
||
)
|
||
{
|
||
this.applicationsInWorkService = applicationsInWorkService;
|
||
this.workService = workService;
|
||
|
||
RuleFor(t => t.TemplateDuration)
|
||
.NotNull().NotEmpty().WithMessage("Длительность данного задания на выполнение работ не может быть пустым")
|
||
.Matches("^\\d{1,2}\\s\\d{2}[:]\\d{2}[:]\\d{2}$")
|
||
.WithMessage("Длительность данного задания на выполнение работ должна соответствовать шаблону dd hh:mm:ss(7 00:00:00)");
|
||
|
||
RuleFor(t => t.ShortDescription)
|
||
.NotNull().NotEmpty().WithMessage("Краткое описание данного задания на выполнение работ не может быть пустым");
|
||
|
||
RuleFor(t => t.FullDescription)
|
||
.NotNull().NotEmpty().WithMessage("Подробное описание данного задания на выполнение работ не может быть пустым");
|
||
|
||
RuleFor(t => t.Solution)
|
||
.NotNull().NotEmpty().WithMessage("Решение данного задания на выполнение работ не может быть пустым");
|
||
|
||
RuleFor(t => t.WorkId)
|
||
.MustAsync(async (entity, value, c) => await IsWorkExist(entity))
|
||
.WithMessage("У данного задания на выполнение работ указан несуществующий Id работы");
|
||
|
||
RuleFor(t => t.ApplicationId)
|
||
.MustAsync(async (entity, value, c) => await IsApplicationExist(entity))
|
||
.WithMessage("У данного задания на выполнение работ указан несуществующий Id программного обеспечения");
|
||
}
|
||
|
||
|
||
private async Task<bool> IsWorkExist(ApplicationInWorkRequest request)
|
||
{
|
||
return await workService.GetAsync(request.WorkId) != null;
|
||
}
|
||
|
||
private async Task<bool> IsApplicationExist(ApplicationInWorkRequest request)
|
||
{
|
||
return await workService.GetAsync(request.WorkId) != null;
|
||
}
|
||
}
|
||
}
|