- 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
1.0 KiB
C#
34 lines
1.0 KiB
C#
using Microsoft.Extensions.Logging;
|
||
using PARR.Core.Repositories.Interfaces.Job;
|
||
using PARR.TemplateMatcher.Services.Interfaces;
|
||
|
||
namespace PARR.TemplateMatcher.Services.Implementations
|
||
{
|
||
internal class JobGroupValidatorService : IJobGroupValidatorService
|
||
{
|
||
private readonly ILogger<IJobValidatorService> _logger;
|
||
private readonly IJobGroupRepository _jobGroupService;
|
||
|
||
public JobGroupValidatorService(
|
||
ILogger<IJobValidatorService> logger,
|
||
IJobGroupRepository jobGroupService
|
||
)
|
||
{
|
||
_logger = logger;
|
||
_jobGroupService = jobGroupService;
|
||
}
|
||
public async Task<bool> IsValidJobGroupAsync(Guid jobGroupId)
|
||
{
|
||
var isExist = await _jobGroupService.GetAsync(jobGroupId);
|
||
|
||
if (isExist == null)
|
||
{
|
||
_logger.LogError($"Не найдена регалментная работа {nameof(jobGroupId)}: {jobGroupId}");
|
||
return false;
|
||
}
|
||
|
||
return true;
|
||
}
|
||
}
|
||
}
|