- SimpleTemplateSynchronizer и GroupedTemplateSynchronizer переведены на паттерн Pipeline с разделением на Read/Write этапы - Выделены контракты этапов (ISimpleSyncStage, IGroupedSyncStage) и контексты (SimpleSyncContext, GroupedSyncContext) - Read-этапы безопасны для тестов (не пишут в БД/MQ), Write-этапы изолированы через отдельные интерфейсы - Добавлено [Perf]-логирование каждого этапа с метриками времени выполнения - Логи приведены к человекочитаемому формату 'Имя' (ID) для Job, JobGroup и Unit - Устранено дублирование данных в контекстах (FilteredUnits перезаписывается, TemplateGroups строго типизирован) - Константы неиспользуемых шаблонов вынесены в UnusedTemplateConstants - Структура проекта реорганизована: SimpleSync, GroupedSync, Implementations, Interfaces
34 lines
995 B
C#
34 lines
995 B
C#
using Microsoft.Extensions.Logging;
|
||
using PARR.Core.Repositories.Interfaces.Job;
|
||
using PARR.TemplateMatcher.Services.Interfaces;
|
||
|
||
namespace PARR.TemplateMatcher.Services.Implementations
|
||
{
|
||
internal class JobValidatorService : IJobValidatorService
|
||
{
|
||
private readonly ILogger<IJobValidatorService> logger;
|
||
private readonly IJobRepository jobService;
|
||
|
||
public JobValidatorService(
|
||
ILogger<IJobValidatorService> logger,
|
||
IJobRepository jobService
|
||
)
|
||
{
|
||
this.logger = logger;
|
||
this.jobService = jobService;
|
||
}
|
||
public async Task<bool> IsValidJobAsync(Guid jobId)
|
||
{
|
||
var isExist = await jobService.GetAsync(jobId);
|
||
|
||
if (isExist == null)
|
||
{
|
||
logger.LogError($"Не найдена регалментная работа {nameof(jobId)}: {jobId}");
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
}
|
||
}
|