using PARR.Domain.Enums;
using PARR.EsppSync;
using PARR.EsppSync.Attributes;

namespace PARR.EsppScheduleSync.Domain
{
    internal class EsppObjectSchedule : IEsppObject
    {
        //Все поля описаны в документации по роботам: http://gitlab.dvgd.oao.rzd/devptk/parr/parr_api/-/wikis/EsppRobots

        public RobotsEnum Robot => RobotsEnum.ScheduleOrder;

        public required string TemplateName { get; set; }

        /// <summary>
        /// ИД расписания
        /// Не сраваниваем ЕСПП ИД, потому что У НАС РЕАЛЬНЫЙ ЕСПП ИД И ЕСПП ИД В БД МОГУ РАСХОДИТЬСЯ!!! УЖАССС!!!
        /// </summary>
        [SkipComparison]
        public string Code { get; set; } = string.Empty;

        [SkipComparison]
        public string ScheduleName { get; set; } = string.Empty;

        public bool IsActive { get; set; }

        [SkipComparison]
        public string ResponseArea { get; set; } = string.Empty;

        [SkipComparison]
        public string WorkGroup { get; set; } = string.Empty;

        /// <summary>
        /// Тип повторения: Регулярно, Ежегодно...
        /// </summary>
        public EsppSchTypeScheduleEnum TypeSchedule { get; set; }

        /// <summary>
        /// Интервал времени: Ежедневно, 1 00:00:00
        /// </summary>
        public string Interval { get; set; } = string.Empty;

        /// <summary>
        /// Еженедельно: Каждый понедельник
        /// </summary>
        public string Dayofweek { get; set; } = string.Empty;

        /// <summary>
        /// Ежемесячно: Каждое 23
        /// </summary>
        public string Dayofmonth { get; set; } = string.Empty;

        /// <summary>
        /// Ежемесячно-2: Каждый Первый
        /// </summary>
        public string Md1 { get; set; } = string.Empty;

        /// <summary> 
        /// Ежемесячно-2: Каждый Понедельник
        /// </summary>
        public string Md2 { get; set; } = string.Empty;


        /// <summary>
        /// Ежегодно: Каждый Январь
        /// </summary>
        public string Annualm { get; set; } = string.Empty;

        /// <summary>
        /// Ежегодно: Каждый 12
        /// </summary>
        public string Annualday { get; set; } = string.Empty;

        /// <summary>
        /// Ежегодно-2: Каждый Первый
        /// </summary>
        public string An1 { get; set; } = string.Empty;

        /// <summary>
        /// Ежегодно-2: Каждый Понедельник
        /// </summary>
        public string An2 { get; set; } = string.Empty;

        /// <summary>
        /// Ежегодно-2: Каждый Января
        /// </summary>
        public string An3 { get; set; } = string.Empty;

        /// <summary>
        /// Тип исключения: Нет исключений
        /// </summary>
        public string TypeV60calendar { get; set; } = string.Empty;

        /// <summary>
        /// Следующее срабатывание: 16/10/23 17:00:00
        /// </summary>
        public required string Scheduled { get; set; }

        /// <summary>
        /// В каком часовом поясе: Greenwich/Universal
        /// </summary>
        public required string Timezone { get; set; }

        /// <summary>
        /// Тип прекращения, Отсутствует дата завершения: Выбран radio button forever
        /// </summary>
        public required string TerminationType { get; set; }

        /// <summary>
        /// Завершение после: 0
        /// </summary>
        [SkipComparison]
        public string CompleteAfter { get; set; } = string.Empty;

        /// <summary>
        /// Рабочий график
        /// </summary>
        public string V60calendar { get; set; } = string.Empty;

        /// <summary>
        /// Время создания наряда (чч:мм:сс)
        /// </summary>
        public string BasisTime { get; set; }
    }
}
