using PARR.Domain.Common.Rabbit.Messages;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace PARR.AIHITMainLoader.Models
{
    public class CvkData : IMainData
    {
        [Column("ЗОНА_ОТВЕТСТВЕННОСТИ")]
        public string? ResponseArea { get; set; }
   
        [Column("КАТЕГОРИЯ_ЭК")]
        public string? EKCategory { get; set; }
        
        [Key]
        [Column("КОД_ПОИСКА_ЭК")]
        public string? EKFindCode { get; set; }
        
        [Column("КРАТКОЕ_НАИМЕНОВАНИЕ")]
        public string? ShortName { get; set; }
        
        [Column("МВЗ")]
        public string? MVZ { get; set; }
       
        [Column("МОДЕЛЬ")]
        public string? Model { get; set; }
        
        [Column("ОТВЕТСТВЕННЫЙ_ЗА_ЭК")]
        public string? ResponsibleByEK { get; set; }
        
        [Column("ПОДКАТЕГОРИЯ_ЭК")]
        public string? EKSubCategory { get; set; }
        
        [Column("ПРОИЗВОДИТЕЛЬ_РАЗРАБОТЧИК")]
        public string? Developer { get; set; }
       
        [Column("РАБОЧАЯ_ГР_ОТВ_ЗА_ЭК")]
        public string? WorkGroup { get; set; }
        
        [Column("СТАТУС")]
        public string? Status { get; set; }
       
        [Column("ТИП_ЭК")]
        public string? EKType { get; set; }
        
        [Column("РГ_смены")]
        public string? ShiftWorkGroup { get; set; }

        [Column("Сервер СПД")]
        public string? SPDServerType { get; set; }

        [Column("Сервер БИР")]
        public string? BIRServerType { get; set; }

        [Column("АКТИВЕН")]
        public int Active { get; set; }

        [Column("НЕУНИКАЛЬНЫЙ_ЭК")]
        public int IsNotUnique { get; set; }

        [Column("ЗО_РГ")]
        public string? WorkGroupResponseArea { get; set; }

        [Column("ДОПОЛНИТЕЛЬНАЯ_ИНФОРМАЦИЯ")]
        public string? AdditionalInformation { get; set; }

        [Column("ПАРР тег")]
        public string? Tag { get; set; }

        public AihitMainDataMq ToMainData()
        {
            return new AihitMainDataMq
            {
                Name = EKFindCode!,//TODO Ты прям уверен???
                Properties = new Dictionary<string, string?>
                {
                    {"ЗОНА_ОТВЕТСТВЕННОСТИ", ResponseArea },
                    {"КАТЕГОРИЯ_ЭК", EKCategory },
                    {"КРАТКОЕ_НАИМЕНОВАНИЕ", ShortName },
                    {"MVZ", MVZ },
                    {"МОДЕЛЬ", Model },
                    {"ОТВЕТСТВЕННЫЙ_ЗА_ЭК", ResponsibleByEK },
                    {"ПОДКАТЕГОРИЯ_ЭК", EKSubCategory },
                    {"ПРОИЗВОДИТЕЛЬ_РАЗРАБОТЧИК", Developer },
                    {"РАБОЧАЯ_ГР_ОТВ_ЗА_ЭК", WorkGroup },
                    {"СТАТУС", Status },
                    {"ТИП_ЭК", EKType },
                    {"РГ_смены", ShiftWorkGroup },
                    {"Сервер СПД", SPDServerType },
                    {"Сервер БИР", BIRServerType },
                    {"АКТИВЕН", Active.ToString() },
                    {"НЕУНИКАЛЬНЫЙ_ЭК", IsNotUnique.ToString() },
                    {"ЗО_РГ", WorkGroupResponseArea },
                    {"ДОПОЛНИТЕЛЬНАЯ_ИНФОРМАЦИЯ", AdditionalInformation },
                    {"ПАРР тег", Tag }
                }
            };
        }


    }
}
