using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
using Kreta.BusinessLogic.Classes;
using Kreta.Resources;
using Kreta.Web.Security;

namespace Kreta.Web.Areas.Alkalmazott.Models
{
    public class AlkalmazottModModel
    {
        public AlkalmazottModModel()
        {
            PedagogusStatuszaList = new List<SelectListItem>();
            NemList = new List<SelectListItem>();
        }

        public int? AlkalmazottId { get; set; }
        public string AlkalmazottArray { get; set; }
        public bool IsKozpontilagSzinkronizalt { get; set; }

        [Display(Name = nameof(AlkalmazottResource.PedagogusStatus), ResourceType = typeof(AlkalmazottResource))]
        public int? PedagogusStatusza { get; set; }

        public List<SelectListItem> PedagogusStatuszaList;

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

        [Display(Name = nameof(CommonResource.Nem), ResourceType = typeof(CommonResource))]
        public int? ModifyNem { get; set; }

        [Display(Name = nameof(CommonResource.Tanev), ResourceType = typeof(CommonResource))]
        public int? TanevID { get; set; }

        public List<SelectListItem> NemList { get; set; }

        [Display(Name = nameof(CommonResource.Nev), ResourceType = typeof(CommonResource))]
        public string AlkalmazottNev { get; set; }

        [Display(Name = nameof(AlkalmazottResource.KivalasztottAlkalmazottak), ResourceType = typeof(AlkalmazottResource))]
        public string AlkalmazottNevArray { get; set; }

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

        [Range(0, 1000, ErrorMessageResourceName = nameof(ErrorResource.OraszamNemLehetNegativ), ErrorMessageResourceType = typeof(ErrorResource))]
        [Display(Name = nameof(CommonResource.Oraszama), ResourceType = typeof(CommonResource))]
        public double? Oraszam { get; set; }

        [Range(0, 1000, ErrorMessageResourceName = nameof(ErrorResource.KotelezoOraszamNemLehetNegativ), ErrorMessageResourceType = typeof(ErrorResource))]
        [Display(Name = nameof(AlkalmazottResource.FeladattalTerheltOraszam), ResourceType = typeof(AlkalmazottResource))]
        public double? MunkaidoKedvezmenyOraszam { get; set; }

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

        [Display(Name = nameof(AlkalmazottResource.Munkakor), ResourceType = typeof(AlkalmazottResource))]
        public int? MunkaKor { get; set; }

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

        [Display(Name = nameof(AlkalmazottResource.AlkalmazasKezdete), ResourceType = typeof(AlkalmazottResource))]
        [DateRange(ErrorMessageResourceName = nameof(ErrorResource.AlkalmazasKezdetenekDatumaNemErvenyes), ErrorMessageResourceType = typeof(ErrorResource))]
        public DateTime? AlkalmazasKezdete { get; set; }

        [Display(Name = nameof(AlkalmazottResource.AlkalmazasVege), ResourceType = typeof(AlkalmazottResource))]
        [DateRange(ErrorMessageResourceName = nameof(ErrorResource.AlkalmazasVegenekDatumaNemErvenyes), ErrorMessageResourceType = typeof(ErrorResource))]
        public DateTime? AlkalmazasVege { get; set; }

        [Display(Name = nameof(CommonResource.Feladatellatasihely), ResourceType = typeof(CommonResource))]
        public int? FeladatellatasiHely { get; set; }

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

        [Display(Name = nameof(AlkalmazottResource.TartosanTavollevo), ResourceType = typeof(AlkalmazottResource))]
        public int? TartosHelyettesites { get; set; }

        [Display(Name = nameof(AlkalmazottResource.NyugdijasTovabbfoglalkoztatott), ResourceType = typeof(AlkalmazottResource))]
        public int? Nyugdijas { get; set; }

        [Display(Name = nameof(AlkalmazottResource.FeladattalTerheltOraszamOka), ResourceType = typeof(AlkalmazottResource))]
        public int? MunkaidoKedvezmenyOka { get; set; }

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

        [Display(Name = nameof(AlkalmazottResource.ReszmunkaidoSzazalek), ResourceType = typeof(AlkalmazottResource))]
        public double? ReszmunkaidosSzazalek { get; set; }

        [Display(Name = nameof(AlkalmazottResource.MunkaidoAdatokModositasa), ResourceType = typeof(AlkalmazottResource))]
        public bool NeedUpdateMunkaidoAdatai { get; set; }

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

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

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

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

        /*[Display(Name = nameof(AlkalmazottResource.SzabadAllashely), ResourceType = typeof(AlkalmazottResource))]
        public int? SzabadAllashely { get; set; }*/

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

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

        [Display(Name = nameof(AlkalmazottResource.AttanitoSZCnbelul), ResourceType = typeof(AlkalmazottResource))]
        public int? IsAttanitoSzCnBelul { get; set; }

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

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

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

        public List<SelectListItem> IgenNemList { get; set; }

        [Display(Name = nameof(AlkalmazottResource.Osztalyfonok), ResourceType = typeof(AlkalmazottResource))]
        public int? IsOsztalyfonok { get; set; }

        public bool IsNszfhUjSzkt { get { return ClaimData.IsSelectedTanev20_21OrLater && ClaimData.IsSzakkepzoIntezmeny; } }

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

        public bool IsKlebelsberg { get; set; }

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

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

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

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

        public bool IsFromSzervezet { get; set; }

        // NOTE: Itt azért nem a nameof(SzervezetResource.Szervezet)-ből jön a szöveg, mert ez a property fixen mindig ezzel a label-el kell, hogy megjelenjen, függetlenül a nyelviesítéstől!
        [Display(Name = nameof(DualisResource.DualisKepzohelyNeveEsAdoszama), ResourceType = typeof(DualisResource))]
        public int? OktatoSzervezetId { get; set; }
    }
}