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

        public required string Name { get; set; }

        //public bool? IsUmbrella { 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 DateTimeOffset ReferenceDate { get; set; }

        public int? UserTimeZoneOffsetMinutes { get; set; }

        public bool IsWorkGroupTimezone { get; set; }

        public required JobGroupTypeResponse GroupType { get; set; }

        /// <summary>
        /// По какому полю грппируется, если используется тип ГРУППОВОЙ
        /// </summary>
        public FieldResponse? GroupingUnitField { get; set; }

        /// <summary>
        /// Группировать по ответственному за ЭК. (только если тип ГРУППОВОЙ)
        /// </summary>
        public bool? IsGroupByResponsible { get; set; }


        /// <summary>
        /// Включено автораспределение
        /// </summary>
        public bool IsAutoDistributionEnabled { get; set; }

        //    public bool IsAgent { get; set; }

        //    public string? AgentName { get; set; }

        //    public int? AgentTimeOutSec { get; set; }

        //    public string? AgentScript { get; set; }
    }

    public class JobGroupResponse : JobGroupWithDistributionConfigResponse //: JobGroupBaseResponse
    {
        //public List<JobResponse>? Jobs { get; set; }
        public int JobsCount { get; set; }

        public JobGroupScheduleResponse? Schedule { get; set; }

        public MatchingStatusResponse? MatchingStatus { get; set; }

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

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

        ///// <summary>
        ///// Настройки автораспределения
        ///// </summary>
        //public JobGroupDistributionConfigResponse? DistributionConfig { get; set; }
    }

    public class JobGroupScheduleResponse
    {
        public string Timezone { get; set; } = string.Empty;

        public EsppScheduleTypeScheduleResponse? TypeSchedule { get; set; }

        public List<EsppScheduleValResponse>? Values { get; set; }
    }

    public class JobGroupWithDistributionConfigResponse : JobGroupBaseResponse
    {
        /// <summary>
        /// Настройки автораспределения
        /// </summary>
        public JobGroupDistributionConfigResponse? DistributionConfig { get; set; }
    }


}
