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

namespace Kreta.Web.Areas.Hianyzas.Models
{
    public class MulasztasGridModel : IKretaIdentity
    {
        #region Fields

        public const string MulasztasExportAttributeId = nameof(MulasztasExportAttributeId);

        #endregion

        public string ID { get; set; }

        public int TanuloId { get; set; }

        [Display(Name = nameof(MulasztasResource.TanuloNeve), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 00, nameof(MulasztasResource.TanuloNeve), typeof(MulasztasResource))]
        public string TanuloNev { get; set; }

        [Display(Name = nameof(MulasztasResource.TanuloNeve), ResourceType = typeof(MulasztasResource))]
        public string TanuloNevElotagNelkul { get; set; }

        [SimpleExportColumn(MulasztasExportAttributeId, 01, nameof(TanuloResource.TanuloAzonositoja), typeof(TanuloResource))]
        [Display(Name = nameof(TanuloResource.TanuloAzonositoja), ResourceType = typeof(TanuloResource))]
        public string OktatasiAzonosito { get; set; }

        [Display(Name = nameof(MulasztasResource.Datum), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 02, nameof(MulasztasResource.Datum), typeof(MulasztasResource))]
        public DateTime Datum { get; set; }

        [Display(Name = nameof(MulasztasResource.Ora), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 03, nameof(MulasztasResource.Ora), typeof(MulasztasResource))]
        public int Oraszam { get; set; }

        [Display(Name = nameof(OsztalyCsoportResource.OsztalyCsoport), ResourceType = typeof(OsztalyCsoportResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 04, nameof(OsztalyCsoportResource.OsztalyCsoport), typeof(OsztalyCsoportResource))]
        public string OsztCsopNev { get; set; }

        [Display(Name = nameof(AdminisztracioResource.Tantargy), ResourceType = typeof(AdminisztracioResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 05, nameof(AdminisztracioResource.Tantargy), typeof(AdminisztracioResource))]
        public string TargyNev { get; set; }

        [Display(Name = nameof(MulasztasResource.Tipus), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 06, nameof(MulasztasResource.Tipus), typeof(MulasztasResource))]
        public string MulTip_DNAME { get; set; }

        [Display(Name = nameof(MulasztasResource.KesesPerc), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 07, nameof(MulasztasResource.KesesPerc), typeof(MulasztasResource))]
        public int KesesPerc { get; set; }

        [Display(Name = nameof(MulasztasResource.Igazolt), ResourceType = typeof(MulasztasResource))]
        public string Igazolt { get; set; }

        [Display(Name = nameof(MulasztasResource.Igazolt), ResourceType = typeof(MulasztasResource))]
        public bool? Igazolt_BOOL { get; set; }

        [Display(Name = nameof(MulasztasResource.Igazolt), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 08, nameof(MulasztasResource.Igazolt), typeof(MulasztasResource))]
        public string Igazolt_BNAME { get; set; }

        [Display(Name = nameof(MulasztasResource.IgazolasTipusa), ResourceType = typeof(MulasztasResource))]
        public int? IgazolasTipus { get; set; }

        [Display(Name = nameof(MulasztasResource.IgazolasTipusa), ResourceType = typeof(MulasztasResource))]
        [SimpleExportColumn(MulasztasExportAttributeId, 09, nameof(MulasztasResource.IgazolasTipusa), typeof(MulasztasResource))]
        public string IgazolasTipus_DNAME { get; set; }

        public bool Valid { get; set; }

        [Display(Name = nameof(MulasztasResource.Megjegyzes), ResourceType = typeof(MulasztasResource))]
        public string Megjegyzes { get; set; }

        [Display(Name = nameof(MulasztasResource.Megjegyzes), ResourceType = typeof(MulasztasResource))]
        public string IgazolasMegjegyzes { get; set; }

        public string AnyjaNeve { get; set; }

        public string SzuletesiIdo { get; set; }

        public string SzuletesiIdoFormatted { get; set; }

        public string TanitasiOraId { get; set; }

        public bool IsMulasztasKezelheto { get; set; }

        [SimpleExportColumn(MulasztasExportAttributeId, 10, nameof(OrarendResource.OnlineOra), typeof(OrarendResource))]
        public string IsOnlineOra_BNAME { get; set; }

        public MulasztasGridModel()
        {

        }

        public MulasztasGridModel(MulasztasItemCo itemCo)
        {
            ID = itemCo.ID.ToString();
            TanuloNev = itemCo.TanuloNev;
            TanuloNevElotagNelkul = itemCo.TanuloNevElotagNelkul;
            OktatasiAzonosito = itemCo.OktatasiAzonosito;
            Datum = itemCo.Datum.Value;
            Oraszam = itemCo.Oraszam;
            OsztCsopNev = itemCo.OsztCsopNev;
            TargyNev = itemCo.TargyNev;
            MulTip_DNAME = itemCo.MulTip_DNAME;
            KesesPerc = itemCo.KesesPerc;
            Igazolt = itemCo.Igazolt;
            Igazolt_BNAME = itemCo.Igazolt_BNAME;
            Igazolt_BOOL = itemCo.Igazolt_BOOL;
            IgazolasTipus = itemCo.IgazolasTipus;
            IgazolasTipus_DNAME = itemCo.IgazolasTipus_DNAME;
            IsMulasztasKezelheto = itemCo.IsMulasztasKezelheto;
            IsOnlineOra_BNAME = itemCo.IsOnlineOra_BNAME;
            IgazolasMegjegyzes = itemCo.IgazolasMegjegyzes;
        }
    }
}