using Microsoft.EntityFrameworkCore; using PARR.DAL.Services.Interfaces.Job; using PARR.DAL.Services.Interfaces.Unit; namespace PARR.TemplateGeneratorWorker.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 IsValidAsync(Guid jobId, Guid unitId) { using (var scope = serviceProvider.CreateScope()) { var jobService = GetServiceInScope(scope); var job = await jobService .Get().AsNoTracking() .FirstOrDefaultAsync(t => t.Id == jobId); if (job == null) { logger.LogError($"Не найдена регалментная работа {nameof(jobId)}: {jobId}"); return false; } var unitService = GetServiceInScope(scope); var unit = await unitService .Get().AsNoTracking() .FirstOrDefaultAsync(t => t.Id == unitId); if (unit == null) { logger.LogError($"Не найден элемент конфигурации {nameof(unitId)}: {unitId}"); return false; } return true; } } private Service GetServiceInScope(IServiceScope scope) { var service = scope.ServiceProvider.GetService(); if (service == null) throw new Exception($"Не найден сервис: {nameof(Service)}"); return service; } } }