using System.ComponentModel.DataAnnotations;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Core.CustomAttributes;
using Kreta.Resources;

namespace Kreta.Web.Areas.Intezmeny.Models
{
    public class OktatottSzakmakGridModel : IKretaIdentity
    {
        #region Fields

        /// <summary>
        /// Technikai paraméter(ek) a reflection-ös exporthoz.
        /// </summary>
        public const string OktatottSzakmakExportAttributeId = nameof(OktatottSzakmakExportAttributeId);

        #endregion Fields

        public OktatottSzakmakGridModel() { }

        public OktatottSzakmakGridModel(UjSzktSzakmajegyzekOsszerendelesItemCo itemCo)
        {
            ID = itemCo.Id.ToString();
            OktatasiNevelesiFeladatId = itemCo.OktatasiNevelesiFeladatId.Value;
            AgazatUjSzktTipusId = itemCo.AgazatUjSzktTipusId.Value;
            SzakmaTipusId = itemCo.SzakmaTipusId;
            SzakmaIranyTipusId = itemCo.SzakmaIranyTipusId;
            SzakkepesitesMegnevezese = itemCo.SzakkepesitesMegnevezese;
            OktatasiNevelesiFeladatNev = itemCo.OktatasiNevelesiFeladatNev;
            AgazatiBesorolas = itemCo.AgazatiBesorolas?.ToString("00");
            SzakkepesitesAzonositoszam = itemCo.SzakkepesitesAzonositoszam;
            JelenlegZajloKepzes = itemCo.JelenlegZajloKepzes.GetDisplayName();
            KepzesreFogadhatoTanulokSzama = itemCo.KepzesreFogadhatoTanulokSzama.Value;
            JelenlegKepzettTanulokSzama = itemCo.JelenlegKepzettTanulokSzama;
            IsNyilatkozott = itemCo.IsNyilatkozott.GetDisplayName();
            EszkozallomanyAvultsaga = itemCo.EszkozallomanyAvultsaga;
            EszkozokDarabszama = itemCo.EszkozokDarabszama;
            EgyebEszkozallomanyInformacio = itemCo.EgyebEszkozallomanyInformacio;
            TanmuhelyekSzama = itemCo.TanmuhelyekSzama;
        }

        public string ID { get; }

        public int OktatasiNevelesiFeladatId { get; set; }

        public int AgazatUjSzktTipusId { get; set; }

        public int? SzakmaTipusId { get; set; }

        public int? SzakmaIranyTipusId { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 00, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameSzakkepesitesMegnevezese), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.SzakkepesitesMegnevezese), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string SzakkepesitesMegnevezese { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 01, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameOktatasiNevelesiFeladatNev), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.OktatasiNevelesiFeladatNev), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string OktatasiNevelesiFeladatNev { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 02, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameAgazatiBesorolas), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.AgazatiBesorolas), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string AgazatiBesorolas { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 03, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameSzakkepesitesAzonositoszam), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.SzakkepesitesAzonositoszam), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string SzakkepesitesAzonositoszam { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 04, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameJelenlegZajloKepzes), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.JelenlegZajloKepzes), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string JelenlegZajloKepzes { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 05, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameKepzesreFogadhatoTanulokSzama), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.KepzesreFogadhatoTanulokSzama), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public int KepzesreFogadhatoTanulokSzama { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 06, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameJelenlegKepzettTanulokSzama), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        [Display(Name = nameof(UjSzktSzakmajegyzekOsszerendelesResource.JelenlegKepzettTanulokSzama), ResourceType = typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public int JelenlegKepzettTanulokSzama { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 07, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameIsNyilatkozott), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string IsNyilatkozott { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 08, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameEszkozallomanyAvultsaga), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string EszkozallomanyAvultsaga { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 09, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameEszkozokDarabszama), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string EszkozokDarabszama { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 10, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameEgyebEszkozallomanyInformacio), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string EgyebEszkozallomanyInformacio { get; set; }

        [SimpleExportColumn(OktatottSzakmakExportAttributeId, 11, nameof(UjSzktSzakmajegyzekOsszerendelesResource.ImportHeaderNameTanmuhelyekSzama), typeof(UjSzktSzakmajegyzekOsszerendelesResource))]
        public string TanmuhelyekSzama { get; set; }

    }
}