using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.Core; using Kreta.Enums; using Kreta.Resources; using Kreta.Web.Helpers; using Kreta.Web.Helpers.TabStrip; using Kreta.Web.Security; using Newtonsoft.Json; namespace Kreta.Web.Areas.OsztalyCsoport.Models { public abstract class CsoportBaseModel { public int? ID { get; set; } [Display(Name = nameof(OsztalyCsoportResource.CsoportNeve), ResourceType = typeof(OsztalyCsoportResource))] [KretaRequired(StringResourcesId = 1311)] [StringLength(maximumLength: 255, ErrorMessageResourceName = nameof(ErrorResource.CsoportNeveMax255CsoportAlapadatok), ErrorMessageResourceType = typeof(ErrorResource))] public string CsoportNeve { get; set; } [Display(Name = nameof(OsztalyCsoportResource.CsoportTipus), ResourceType = typeof(OsztalyCsoportResource))] [KretaRequiredIf("IsFromSzervezet", false, ErrorMessageResourceName = nameof(ErrorResource.CsoportTipusMegadasaKotelezo), ErrorMessageResourceType = typeof(ErrorResource))] public int? CsoportTipusId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.CsoportTipus), ResourceType = typeof(OsztalyCsoportResource))] public string CsoportTipusNev => CsoportTipusId.GetDisplayName(ClaimData.SelectedTanevID.Value); [Display(Name = nameof(OsztalyCsoportResource.EvfolyamNeve), ResourceType = typeof(OsztalyCsoportResource))] public int? EvfolyamTipusa { get; set; } [Display(Name = nameof(OsztalyCsoportResource.EvfolyamNeve), ResourceType = typeof(OsztalyCsoportResource))] public string EvfolyamNev => EvfolyamTipusa.HasValue && EvfolyamTipusa.Value > 0 ? EvfolyamTipusa.Value.GetDisplayName(ClaimData.SelectedTanevID.Value) : ""; [Display(Name = nameof(OsztalyCsoportResource.Csoportvezeto), ResourceType = typeof(OsztalyCsoportResource))] public int? CsoportvezetoId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Csoportvezeto), ResourceType = typeof(OsztalyCsoportResource))] public string CsoportvezetoNev { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Terem), ResourceType = typeof(OsztalyCsoportResource))] public int? CsoportTeremId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Terem), ResourceType = typeof(OsztalyCsoportResource))] public string TeremNev { get; set; } [Display(Name = nameof(OsztalyCsoportResource.TanulokSzama), ResourceType = typeof(OsztalyCsoportResource))] [KretaRange(0, int.MaxValue)] public int TanulokSzama { get; set; } [Display(Name = nameof(TanuloResource.NovendekekSzama), ResourceType = typeof(TanuloResource))] [KretaRange(0, int.MaxValue)] public int NovendekekSzama { get { return TanulokSzama; } set { TanulokSzama = value; } } [Display(Name = nameof(CommonResource.Feladatellatasihely), ResourceType = typeof(CommonResource))] [KretaRequiredIf("IsFromSzervezet", false, ErrorMessageResourceName = nameof(ErrorResource.FeladatellatasiHelyKitolteseKotelezo), ErrorMessageResourceType = typeof(ErrorResource))] public int? FeladatEllatasiHelyId { get; set; } [Display(Name = nameof(CommonResource.Feladatellatasihely), ResourceType = typeof(CommonResource))] public string FeladatEllatasiHelyName { get; private set; } [StringLength(255, ErrorMessageResourceName = nameof(ErrorResource.AMegjegyzesMax255KarakterLehet), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(OsztalyCsoportResource.Megjegyzes), ResourceType = typeof(OsztalyCsoportResource))] public string Megjegyzes { get; set; } [Display(Name = nameof(OsztalyCsoportResource.IsGyogypedagogiaiLogopediai), ResourceType = typeof(OsztalyCsoportResource))] public bool IsGyogypedagogiaiLogopediai { get; set; } [Display(Name = nameof(OsztalyCsoportResource.IsGyogypedagogiaiLogopediai), ResourceType = typeof(OsztalyCsoportResource))] public string IsGyogypedagogiaiLogopediai_BNAME => IsGyogypedagogiaiLogopediai ? CommonResource.Igen : CommonResource.Nem; [Display(Name = nameof(OsztalyCsoportResource.TechnikaiCsoport), ResourceType = typeof(OsztalyCsoportResource))] public bool TechnikaiCsoport { get; set; } [Display(Name = nameof(OsztalyCsoportResource.TechnikaiCsoport), ResourceType = typeof(OsztalyCsoportResource))] public string TechnikaiCsoportString => TechnikaiCsoport ? CommonResource.Igen : CommonResource.Nem; [Display(Name = nameof(OsztalyCsoportResource.CsoportnaploMegnyitasDatuma), ResourceType = typeof(OsztalyCsoportResource))] public DateTime? CsoportNaploMegnyitasa { get; set; } [Display(Name = nameof(OsztalyCsoportResource.CsoportnaploMegnyitasDatuma), ResourceType = typeof(OsztalyCsoportResource))] public string CsoportNaploMegnyitasaRoviddatum => CsoportNaploMegnyitasa?.ToShortDateString() ?? ""; [Display(Name = nameof(OsztalyCsoportResource.CsoportnaploLezarasDatuma), ResourceType = typeof(OsztalyCsoportResource))] public DateTime? CsoportNaploLezarasa { get; set; } [Display(Name = nameof(OsztalyCsoportResource.CsoportnaploLezarasDatuma), ResourceType = typeof(OsztalyCsoportResource))] public string CsoportNaploLezarasaRoviddatum => CsoportNaploLezarasa?.ToShortDateString() ?? ""; [Display(Name = nameof(OsztalyCsoportResource.CsoportnaploLeirasa), ResourceType = typeof(OsztalyCsoportResource))] public string CsoportNaploLeirasa { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Naploszam), ResourceType = typeof(OsztalyCsoportResource))] [StringLength(maximumLength: 50, ErrorMessageResourceName = nameof(ErrorResource.ANaploszamMax50KarakterLehet), ErrorMessageResourceType = typeof(ErrorResource))] public string Naploszam { get; set; } public string AmiFelhelyIdsJSON { get; set; } [Display(Name = nameof(OsztalyCsoportResource.TervezettLetszam), ResourceType = typeof(OsztalyCsoportResource))] public int? TervezettLetszam { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Osztaly), ResourceType = typeof(OsztalyCsoportResource))] public int? OsztalyBontasId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Osztaly), ResourceType = typeof(OsztalyCsoportResource))] public string OsztalyBontasNev { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Osztalybontas), ResourceType = typeof(OsztalyCsoportResource))] public bool OsztalyBontas { get; set; } [Display(Name = nameof(OsztalyCsoportResource.Osztalybontas), ResourceType = typeof(OsztalyCsoportResource))] public string OsztalyBontas_BNAME => OsztalyBontas ? CommonResource.Igen : CommonResource.Nem; public List TabList { get; set; } public bool IsAutoEgyeniCsoport { get; set; } public bool IsFeladatellatasiHelySzures { get; set; } public bool IsAmiAlapkepzesesGimnaziumkentKezelendo { get; set; } public bool OsszevontOsztaly { get; set; } [Display(Name = nameof(OsztalyCsoportResource.KepzesTipusa), ResourceType = typeof(OsztalyCsoportResource))] public int? KepzesiFormaId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.KepzesTipusa), ResourceType = typeof(OsztalyCsoportResource))] public string KepzesiFormaString => KepzesiFormaId.HasValue ? KepzesiFormaId.Value.GetDisplayName(ClaimData.SelectedTanevID.Value) : string.Empty; public OsztalyCsoportTanuloinakMunkarendjeModel OsztalyCsoportTanuloinakMunkarendjeModel { get; set; } public bool IsFromSzervezet { get; set; } public string ControllerName { get; set; } public string ApiControllerName { get; set; } public bool IsKretaIntezmenyiAdminIsFromSzervezet { 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))] [KretaRequiredIf("IsFromSzervezet", true, ErrorMessageResourceName = nameof(DualisResource.DualisKepzohelyMegadasaKotelezo), ErrorMessageResourceType = typeof(DualisResource))] public int? CsoportSzervezetId { get; set; } [Display(Name = nameof(SzervezetResource.Szervezet), ResourceType = typeof(SzervezetResource))] public string SzervezetNeve { get; set; } public CsoportBaseModel() { TabList = new List(); OsztalyCsoportTanuloinakMunkarendjeModel = new OsztalyCsoportTanuloinakMunkarendjeModel(); OsztalyCsoportTanuloinakMunkarendjeModel.MunkarendGridModel = new OsztalyCsoportTanuloinakMunkarendjeGridModel(); } protected static void ConvertToBaseModel(CsoportBaseModel model, CsoportCO co) { List AmiFelhelyIds = Kreta.Web.Areas.OsztalyCsoport.Logic.OsztalyCsoportLogic.GetFeladatEllatasiHelyIdsBySelectedOktNevelesiKategoria((int)OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas); model.CsoportNeve = co.CsoportNeve; model.CsoportTipusId = co.CsoportTipus; model.CsoportvezetoId = co.CsoportvezetoId; model.CsoportvezetoNev = co.CsoportvezetoNeve; model.EvfolyamTipusa = co.EvfolyamTipusa; model.FeladatEllatasiHelyId = co.FeladatEllatasiHelyId > 0 ? (int?)co.FeladatEllatasiHelyId : null; model.FeladatEllatasiHelyName = co.FeladatEllatasiHelyName; model.ID = co.Id; model.Megjegyzes = co.Megjegyzes; model.CsoportTeremId = co.TeremID; model.TeremNev = co.TeremNev; model.TanulokSzama = co.TanulokSzama; model.TervezettLetszam = co.TervezettLetszam; model.CsoportNaploLeirasa = co.CsoportNaploLeirasa; model.Naploszam = co.Naploszam; model.AmiFelhelyIdsJSON = JsonConvert.SerializeObject(AmiFelhelyIds); model.CsoportNaploMegnyitasa = co.CsoportNaploMegnyitasa; model.CsoportNaploLezarasa = co.CsoportNaploLezarasa; model.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai; model.TechnikaiCsoport = co.TechnikaiCsoport; model.OsztalyBontas = co.OsztalyBontas; model.OsztalyBontasId = co.OsztalyBontasId; model.OsztalyBontasNev = co.OsztalyBontasNev; model.IsAutoEgyeniCsoport = co.IsAutoEgyeniCsoport; model.OsszevontOsztaly = co.OsszevontOsztaly; model.IsFeladatellatasiHelySzures = co.HasTanuloBesorolas; model.KepzesiFormaId = co.KepzesiFormaId; model.SzervezetNeve = co.SzervezetNeve; model.CsoportSzervezetId = co.SzervezetId.IsEntityId() ? co.SzervezetId : null; } protected CsoportCO ConvertBaseModelToCo() { return new CsoportCO() { CsoportNeve = this.CsoportNeve, CsoportTipus = this.CsoportTipusId, CsoportvezetoId = this.CsoportvezetoId, CsoportvezetoNeve = this.CsoportvezetoNev, EvfolyamTipusa = this.EvfolyamTipusa ?? (int)EvfolyamTipusEnum.na, FeladatEllatasiHelyId = this.FeladatEllatasiHelyId ?? 0, Id = this.ID ?? 0, Megjegyzes = this.Megjegyzes, TeremID = this.CsoportTeremId, TervezettLetszam = this.TervezettLetszam, OsztalyBontasId = this.OsztalyBontasId, IsGyogypedagogiaiLogopediai = this.IsGyogypedagogiaiLogopediai, TechnikaiCsoport = this.TechnikaiCsoport, OsztalyBontas = this.OsztalyBontas, OsztalyBontasNev = this.OsztalyBontasNev, CsoportNaploMegnyitasa = this.CsoportNaploMegnyitasa, CsoportNaploLezarasa = this.CsoportNaploLezarasa, Naploszam = this.Naploszam, CsoportNaploLeirasa = this.CsoportNaploLeirasa, KepzesiFormaId = this.KepzesiFormaId }; } } public class AlapkepzesCsoportModel : CsoportBaseModel { public AlapkepzesCsoportModel() : base() { } [Display(Name = nameof(OsztalyCsoportResource.VegzosEvfolyamuCsoportKozepfokuOktatasiIntezmenyben), ResourceType = typeof(OsztalyCsoportResource))] public bool Vegzos { get; set; } [Display(Name = nameof(OsztalyCsoportResource.VegzosEvfolyamuCsoportKozepfokuOktatasiIntezmenyben), ResourceType = typeof(OsztalyCsoportResource))] public string Vegzos_BNAME => Vegzos ? CommonResource.Igen : CommonResource.Nem; [Display(Name = nameof(OsztalyCsoportResource.KeresztfelevesCsoport), ResourceType = typeof(OsztalyCsoportResource))] public bool Keresztfeleves { get; set; } [Display(Name = nameof(OsztalyCsoportResource.IsGyogypedagogiaiLogopediai), ResourceType = typeof(OsztalyCsoportResource))] public bool IsGyogypedagogiaiLogopediai { get; set; } [Display(Name = nameof(OsztalyCsoportResource.TechnikaiCsoport), ResourceType = typeof(OsztalyCsoportResource))] public bool TechnikaiCsoport { get; set; } [Display(Name = nameof(OsztalyCsoportResource.TechnikaiCsoport), ResourceType = typeof(OsztalyCsoportResource))] public string TechnikaiCsoportString => TechnikaiCsoport ? CommonResource.Igen : CommonResource.Nem; [Display(Name = nameof(OsztalyCsoportResource.KeresztfelevesCsoport), ResourceType = typeof(OsztalyCsoportResource))] public string Keresztfeleves_BNAME => Keresztfeleves ? CommonResource.Igen : CommonResource.Nem; [Display(Name = nameof(OsztalyCsoportResource.IsGyogypedagogiaiLogopediai), ResourceType = typeof(OsztalyCsoportResource))] public string IsGyogypedagogiaiLogopediai_BNAME => IsGyogypedagogiaiLogopediai ? CommonResource.Igen : CommonResource.Nem; public static AlapkepzesCsoportModel ConvertToModel(CsoportCO co) { var model = new AlapkepzesCsoportModel(); ConvertToBaseModel(model, co); model.Vegzos = co.VegzosEvfolyamCsoport; model.Keresztfeleves = co.KeresztfelevesCsoport; model.IsGyogypedagogiaiLogopediai = co.IsGyogypedagogiaiLogopediai; model.TechnikaiCsoport = co.TechnikaiCsoport; return model; } public CsoportCO ConvertToCo() { var co = ConvertBaseModelToCo(); co.VegzosEvfolyamCsoport = this.Vegzos; co.KeresztfelevesCsoport = this.Keresztfeleves; co.IsGyogypedagogiaiLogopediai = this.IsGyogypedagogiaiLogopediai; co.TechnikaiCsoport = this.TechnikaiCsoport; co.SzervezetId = this.CsoportSzervezetId; co.IsFromSzervezet = this.IsFromSzervezet; return co; } } public class AmiCsoportModel : CsoportBaseModel { public AmiCsoportModel() : base() { } [Required(ErrorMessageResourceName = nameof(ErrorResource.MuveszetiAgMegadasaKotelezo), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(OsztalyCsoportResource.MuvesztiAg), ResourceType = typeof(OsztalyCsoportResource))] public int? MuveszetiAgId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.ZenemuveszetiAgTipusa), ResourceType = typeof(OsztalyCsoportResource))] public int? ZenemuveszetiAgTipusId { get; set; } [Display(Name = nameof(OsztalyCsoportResource.MuvesztiAg), ResourceType = typeof(OsztalyCsoportResource))] public string MuveszetiAgString => MuveszetiAgId.HasValue ? MuveszetiAgId.Value.GetDisplayName(ClaimData.SelectedTanevID.Value) : string.Empty; [Display(Name = nameof(OsztalyCsoportResource.ZenemuveszetiAgTipusa), ResourceType = typeof(OsztalyCsoportResource))] public string ZenemuveszetiAgTipusString => ZenemuveszetiAgTipusId.HasValue ? ZenemuveszetiAgTipusId.Value.GetDisplayName(ClaimData.SelectedTanevID.Value) : string.Empty; public static AmiCsoportModel ConvertToModel(CsoportCO co) { var model = new AmiCsoportModel(); ConvertToBaseModel(model, co); model.MuveszetiAgId = co.MuveszetiAgId; model.ZenemuveszetiAgTipusId = co.ZenemuveszetiAgTipusId; return model; } public CsoportCO ConvertToCo() { var co = ConvertBaseModelToCo(); co.MuveszetiAgId = this.MuveszetiAgId; co.ZenemuveszetiAgTipusId = this.ZenemuveszetiAgTipusId; return co; } } }