using PARR.Domain.Entities;
using PARR.Domain.Entities.Base.History;
using PARR.Domain.Entities.JobEntities;

namespace PARR.TemplateMatcher.Services.SimpleSync
{
    /// <summary>
    /// Контекст синхронизации простого шаблона. Передаётся между этапами.
    /// </summary>
    public class SimpleSyncContext
    {
        public Guid JobId { get; init; }
        public string JobName { get; set; } = string.Empty;
        public HistoryInitiator Initiator { get; init; } = null!;
        public Job Job { get; set; } = null!;
        public HashSet<Guid> FilteredUnitIds { get; set; } = new();

        /// <summary>
        /// Имена юнитов для логирования. Заполняется на этапе фильтрации.
        /// </summary>
        public Dictionary<Guid, string> UnitNames { get; set; } = new();

        public List<Template> ExistingUsedTemplates { get; set; } = new();
        public List<Guid> NewUnitIds { get; set; } = new();
        public List<Template> UnusedTemplates { get; set; } = new();
        public List<(Template Template, string ExpectedName)> TemplatesToRename { get; set; } = new();

        /// <summary>
        /// Возвращает строку вида 'Имя' (ID) для логирования.
        /// Если имя неизвестно — возвращает только ID.
        /// </summary>
        public string FormatUnit(Guid unitId)
        {
            return UnitNames.TryGetValue(unitId, out var name)
                ? $"'{name}' ({unitId})"
                : $"({unitId})";
        }
    }
}
