namespace PARR.API.Contracts.V1.Requests
{
    public class JobGroupRequest
    {
        public required string Name { get; set; }

        //public bool? IsUmbrella { get; set; }

        public Guid GroupTypeId { get; set; }

        /// <summary>
        /// Поле по которому групиируем, если тип - ГРУППА
        /// </summary>
        public Guid? GroupingUnitFieldId { get; set; }

        public bool? IsGroupByResponsible { 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; }

        /// <summary>
        /// Использовать таймзону рабочей группы ответственного за ЭК шаблона
        /// </summary>
        public bool IsWorkGroupTimezone { get; set; }

        public Guid ScheduleExcludeTypeId { get; set; }

        public Guid? ScheduleExcludeTypeCalendarId { get; set; }

        public bool IsAutoDistributionEnabled { get; set; }

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

        //public bool IsAgent { get; set; }

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

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

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

        public List<EsppSchValueRequest> Schedule { get; set; } = new List<EsppSchValueRequest>();
    }

    public class EsppSchValueRequest
    {
        public Guid TypeValueId { get; set; }

        public Guid TypeConfigId { get; set; }
    }

    public class DistributionConfigRequest
    {
        public Guid DistributionPeriodId { get; set; }

        /// <summary>
        /// Исключать выходные и праздники
        /// </summary>
        public bool IsExcludeWeekends { get; set; }

        /// <summary>
        /// Группировать по рабочей группе
        /// </summary>
        public bool IsGroupingByWorkGroup { get; set; }
    }
}
