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

55 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}
}