namespace PARR.API.Validators
{
    //public class GeneratorTemplateRequestValidator : AbstractValidator<GeneratorTemplateRequest>
    //{
    //    private readonly IApplicationsInWorkService applicationsInWorkService;

    //    private bool? isValid = null;

    //    public GeneratorTemplateRequestValidator(IApplicationsInWorkService applicationsInWorkService)
    //    {
    //        this.applicationsInWorkService = applicationsInWorkService;

    //        RuleFor(t => t.WorkId)
    //            .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, entity.ApplicationId))
    //            .WithMessage("У данной работы нет связанных приложений");

    //        RuleFor(t => t.ApplicationId)
    //            .MustAsync(async (entity, value, c) => await IsApplicationContainWork(entity, value))
    //            .WithMessage("У данного приложения нет связанных работ");

    //        //TODO: возможно сделать проверку, по данному выражению есть ли ЭК
    //        RuleFor(t => t.Ek).NotEmpty().WithMessage("Недопустимое значение ЭК. Возможные значения: *, ВРТ-*-ДВС");

    //        RuleFor(t => t.Action)
    //            .Must(t => t.ToLower() == GenerateTemplateActionsEnum.create.ToString() || t.ToLower() == GenerateTemplateActionsEnum.deactivate.ToString())
    //            .WithMessage($"Допустимые значения: {GenerateTemplateActionsEnum.create}, {GenerateTemplateActionsEnum.deactivate}");

    //        //0 - все статусы, 1,2,3,4,5,6,7,9
    //        var ekStatuses = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 9 };
    //        //RuleFor(t => t.Status).Must(t => ekStatuses.Contains(t)).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
    //        RuleFor(t => t.Status).Must((statuses) =>
    //        {
    //            if (statuses.Count < 1)
    //                return false;

    //            var isContains = true;
    //            statuses.ForEach(status =>
    //            {
    //                if (ekStatuses.Contains(status) == false)
    //                    isContains = false;
    //            });

    //            return isContains;
    //        }).WithMessage("Допустимые значения: 0 - все статусы, 1,2,3,4,5,6,7,9");
    //    }

    //    private async Task<bool> IsApplicationContainWork(GeneratorTemplateRequest request, Guid applicationId)
    //    {
    //        //чтобы не делать 2 раза валидацию
    //        if (isValid.HasValue)
    //            return isValid.Value;

    //        isValid = await applicationsInWorkService.GetAsync(applicationId, request.WorkId) != null;

    //        return isValid.Value;
    //    }
    //}
}
