using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using PARR.DAL.Services.Interfaces; namespace PARR.TemplateDistributor.Services { internal class ValidatorService : IValidatorService { private readonly IServiceProvider serviceProvider; private readonly ILogger logger; public ValidatorService(IServiceProvider serviceProvider, ILogger logger ) { this.serviceProvider = serviceProvider; this.logger = logger; } public async Task IsValidApplicationAndWorksAsync(Guid applicationInWorkId) { using (var scope = serviceProvider.CreateScope()) { var service = scope.ServiceProvider.GetService(); if (service == null) throw new Exception($"Не найден сервис: {nameof(IApplicationsInWorkService)}"); var appInWork = await service.Get() .Include(aiw => aiw.EsppSchValues) .FirstOrDefaultAsync(t => t.Id == applicationInWorkId); if (appInWork == null) { logger.LogError($"Не найдена регалментная работа {nameof(applicationInWorkId)}: {applicationInWorkId}"); return false; } if (appInWork.IsAutoDistributionEnabled && appInWork.EsppSchValues.Count !=1) { logger.LogError($"Регалментная работа {nameof(applicationInWorkId)}: {applicationInWorkId} должна иметь только одно значение EsppSchTypeValue" + $", соответствующее режиму равномерного распределения по периоду"); return false; } return true; } } } }