namespace PARR.API.Contracts.V1.Responses
{
    public class TemplateBaseResponse
    {
        public Guid Id { get; set; }

        public required string Name { get; set; }

        public bool IsActiveTemplate { get; set; }

        public bool IsActiveSchedule { get; set; }

        public string? ScheduleEsppId { get; set; }

        public DateTimeOffset? LastRun { get; set; }

        public DateTimeOffset NextRun { get; set; }

        ///// <summary>
        ///// NextRun с учетом ЗО (локальное время по ЗО, не UTC)
        ///// </summary>
        //public DateTimeOffset? NextRunResponseAreaInLocal { get; set; }

        public bool IsResponseAreaTimezone { get; set; }

        /// <summary>
        /// Рабочая группа (формируется из шорткода)
        /// </summary>
        public string? WorkGroup { get; set; }

        /// <summary>
        /// ЗО, формируется из шорткода
        /// </summary>
        public string? ResponseArea { get; set; }

        public UnitWithAttributesResponse? Unit { get; set; }

        public TemplateStatusTypeResponse? StatusType { get; set; }

        public TemplateAgentResponse? Agent { get; set; }

        public List<RobotConfigurationResponse>? SyncStatus { get; set; }

        public int OrderCount { get; set; }

        public bool IsAutoDistributionEnabled { get; set; }

        //public ScheduleResponseAreaTimeOffsetResponse? ResponseAreaOffset { get; set; }
    }


    public class TemplateListResponse : TemplateBaseResponse
    {

    }



    public class TemplateResponse : TemplateBaseResponse
    {
        public required string Category { get; set; }

        public required string Initiator { get; set; }

        public required string ClosingCode { get; set; }

        public required string ShortDescription { get; set; }

        public required string FullDescription { get; set; }

        public required string Solution { get; set; }

        public required string TemplateDuration { get; set; }

        public JobResponse? Job { get; set; }

        public ProcessResponse? Process { get; set; }

        public SubprocessResponse? Subprocess { get; set; }

        public TnkResponse? Tnk { get; set; }

        /// <summary>
        /// Расписание
        /// </summary>
        public EsppScheduleResponse? Schedule { get; set; }

        /// <summary>
        /// Тип исклчения
        /// </summary>
        public ScheduleExcludeTypeResponse? ScheduleExcludeType { get; set; }

        /// <summary>
        /// Тип исключения - календарь
        /// </summary>
        public ScheduleExcludeTypeCalendarResponse? ScheduleExcludeTypeCalendar { get; set; }

        public JobGroupDistributionConfigResponse? DistributionConfig { get; set; }
    }
}
