using PARR.Core.Services.UnitFilterService.Models; using PARR.Domain.Entities.Base.History; using PARR.Domain.Entities.JobEntities; using PARR.Domain.Entities.JobGroupEntities; using PARR.TemplateMatcher.Models; namespace PARR.TemplateMatcher.Services.Implementations.GroupedSync; /// /// Контекст групповой синхронизации. Передаётся между этапами. /// public class GroupedSyncContext { public Guid JobGroupId { get; init; } public string JobGroupName { get; set; } = string.Empty; public HistoryInitiator Initiator { get; init; } = null!; public JobGroup JobGroup { get; set; } = null!; public List JobsInGroup { get; set; } = new(); public Job MaxJob { get; set; } = null!; public List FilteredUnits { get; set; } = new(); public Dictionary> ReverseMapping { get; set; } = new(); public List TemplateGroups { get; set; } = new(); public HashSet<(Guid JobId, Guid UnitId, int Index)> ExpectedTemplateKeys { get; set; } = new(); /// /// Имена юнитов для логирования. Заполняется на этапе фильтрации. /// public Dictionary UnitNames { get; set; } = new(); /// /// Возвращает строку вида 'Имя' (ID) для логирования. /// public string FormatUnit(Guid unitId) { return UnitNames.TryGetValue(unitId, out var name) ? $"'{name}' ({unitId})" : $"({unitId})"; } }