feat(templateGeneratorWorker): Создан Worker читающий очередь и генерирующий новые объекты Template

This commit is contained in:
Mikhail Kuznetsov
2025-08-14 15:20:04 +10:00
parent 1272ce92ec
commit 2c005f038e
17 changed files with 446 additions and 20 deletions

View File

@@ -0,0 +1,62 @@
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<ValidatorService> logger;
public ValidatorService(
IServiceProvider serviceProvider,
ILogger<ValidatorService> logger
)
{
this.serviceProvider = serviceProvider;
this.logger = logger;
}
public async Task<bool> IsValidAsync(Guid jobId, Guid unitId)
{
using (var scope = serviceProvider.CreateScope())
{
var jobService = GetServiceInScope<IJobService>(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<IUnitService>(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<Service>(IServiceScope scope)
{
var service = scope.ServiceProvider.GetService<Service>();
if (service == null)
throw new Exception($"Не найден сервис: {nameof(Service)}");
return service;
}
}
}