using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.Core; using Kreta.Resources; using Microsoft.Ajax.Utilities; using ModelStateDictionary = System.Web.Http.ModelBinding.ModelStateDictionary; namespace Kreta.Web.Areas.Feljegyzes.Models { public class KozossegiSzolgalatModel { #region Constructors public KozossegiSzolgalatModel() { } public KozossegiSzolgalatModel(KozossegiSzolgalatCo co) { Id = co.Id; TanuloId = co.TanuloId; IntervallumKezdete = co.IntervallumKezdete; IntervallumVege = co.IntervallumVege; TeljesitesiHelye = co.TeljesitesiHelye; TeljesitesiHelyeNemet = co.TeljesitesiHelyeNemet; TeljesitesiHelyeHorvat = co.TeljesitesiHelyeHorvat; TeljesitesiHelyeRoman = co.TeljesitesiHelyeRoman; TeljesitesiHelyeSzerb = co.TeljesitesiHelyeSzerb; Oraszam = co.Oraszam; KozossegiSzolgalatTipusa = co.KozossegiSzolgalatTipusa; Megjegyzes = co.Megjegyzes; MegjegyzesNemet = co.MegjegyzesNemet; MegjegyzesHorvat = co.MegjegyzesHorvat; MegjegyzesRoman = co.MegjegyzesRoman; MegjegyzesSzerb = co.MegjegyzesSzerb; RogzitesDatuma = co.RogzitesDatuma; } #endregion Constructors #region Properties public int? Id { get; set; } public int FeljegyzoId { get; set; } public int TanuloId { get; set; } public int OsztalyCsoportId { get; set; } public List NemzetiDokumentumNyelvek { get; set; } = new List(); [KretaRequired] [DateRange(ErrorMessageResourceName = nameof(ErrorResource.IntervallumKezdeteNemErvenyes), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(FeljegyzesekResource.IntervallumKezdete), ResourceType = typeof(FeljegyzesekResource))] public DateTime IntervallumKezdete { get; set; } [KretaRequired] [DateRange(ErrorMessageResourceName = nameof(ErrorResource.IntervallumVegeNemErvenyes), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(FeljegyzesekResource.IntervallumVege), ResourceType = typeof(FeljegyzesekResource))] public DateTime IntervallumVege { get; set; } [Display(Name = nameof(FeljegyzesekResource.IntezmenyNeve), ResourceType = typeof(FeljegyzesekResource))] [KretaRequired] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string TeljesitesiHelye { get; set; } [Display(Name = nameof(FeljegyzesekResource.IntezmenyNeveNemet), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string TeljesitesiHelyeNemet { get; set; } [Display(Name = nameof(FeljegyzesekResource.IntezmenyNeveHorvat), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string TeljesitesiHelyeHorvat { get; set; } [Display(Name = nameof(FeljegyzesekResource.IntezmenyNeveRoman), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string TeljesitesiHelyeRoman { get; set; } [Display(Name = nameof(FeljegyzesekResource.IntezmenyNeveSzerb), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(255, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string TeljesitesiHelyeSzerb { get; set; } [KretaRequired] [Display(Name = nameof(FeljegyzesekResource.Oraszam), ResourceType = typeof(FeljegyzesekResource))] public double? Oraszam { get; set; } [Display(Name = nameof(FeljegyzesekResource.Megjegyzes), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string Megjegyzes { get; set; } [Display(Name = nameof(FeljegyzesekResource.MegjegyzesNemet), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string MegjegyzesNemet { get; set; } [Display(Name = nameof(FeljegyzesekResource.MegjegyzesHorvat), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string MegjegyzesHorvat { get; set; } [Display(Name = nameof(FeljegyzesekResource.MegjegyzesRoman), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string MegjegyzesRoman { get; set; } [Display(Name = nameof(FeljegyzesekResource.MegjegyzesSzerb), ResourceType = typeof(FeljegyzesekResource))] [MaxLength(1000, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] public string MegjegyzesSzerb { get; set; } [KretaRequired] [Display(Name = nameof(FeljegyzesekResource.RogzitesDatuma), ResourceType = typeof(FeljegyzesekResource))] public DateTime RogzitesDatuma { get; set; } [KretaRequired] [Display(Name = nameof(FeljegyzesekResource.Tevekenyseg), ResourceType = typeof(FeljegyzesekResource))] public int? KozossegiSzolgalatTipusa { get; set; } public List KozossegiSzolgalatTipusList { get; set; } #endregion Properties public ModelStateDictionary Validate() { var modelStateDictionary = new ModelStateDictionary(); var now = DateTime.Today; if (Oraszam > 50) { modelStateDictionary.AddModelError(nameof(Oraszam), ErrorResource.OraszamEgyes50Koze); } if (IntervallumVege > now) { modelStateDictionary.AddModelError(nameof(IntervallumVege), FeljegyzesekResource.IntervallumVegeNagyobbMintAMaiNap); } if (IntervallumKezdete > IntervallumVege) { modelStateDictionary.AddModelError(nameof(IntervallumKezdete), FeljegyzesekResource.IntervallumKezdeteNagyobbMintAVege); } if (TeljesitesiHelye.IsNullOrWhiteSpace()) { modelStateDictionary.AddModelError(nameof(TeljesitesiHelye), string.Format(CommonResource.Required, $"\"{FeljegyzesekResource.IntezmenyNeve}\"")); } if (!Oraszam.HasValue) { modelStateDictionary.AddModelError(nameof(Oraszam), string.Format(CommonResource.Required, $"\"{FeljegyzesekResource.Oraszam}\"")); } else { var oraszam = Oraszam.Value; if (oraszam < 1) { modelStateDictionary.AddModelError(nameof(Oraszam), FeljegyzesekResource.AzOraszamNemLehetKisebb1); } } if (!KozossegiSzolgalatTipusa.IsEntityId()) { modelStateDictionary.AddModelError(nameof(KozossegiSzolgalatTipusa), string.Format(CommonResource.Required, $"\"{FeljegyzesekResource.Tevekenyseg}\"")); } if (RogzitesDatuma < IntervallumKezdete) { modelStateDictionary.AddModelError(nameof(RogzitesDatuma), FeljegyzesekResource.RogzitesDatumaNemLehetNagyobbMintAzIntervallumKedete); } return modelStateDictionary; } public KozossegiSzolgalatCo ToCo() { var result = new KozossegiSzolgalatCo { Id = Id, TanuloId = TanuloId, IntervallumKezdete = IntervallumKezdete, IntervallumVege = IntervallumVege, Megjegyzes = Megjegyzes, MegjegyzesNemet = MegjegyzesNemet, MegjegyzesHorvat = MegjegyzesHorvat, MegjegyzesRoman = MegjegyzesRoman, MegjegyzesSzerb = MegjegyzesSzerb, //NOTE: Validáció miatt nem lehet null az Oraszam!!! Oraszam = Oraszam.Value, TeljesitesiHelye = TeljesitesiHelye, TeljesitesiHelyeNemet = TeljesitesiHelyeNemet, TeljesitesiHelyeHorvat = TeljesitesiHelyeHorvat, TeljesitesiHelyeRoman = TeljesitesiHelyeRoman, TeljesitesiHelyeSzerb = TeljesitesiHelyeSzerb, FeljegyzoId = FeljegyzoId, //NOTE: Validáció miatt nem lehet null a KozossegiSzolgalatTipusa!!! KozossegiSzolgalatTipusa = KozossegiSzolgalatTipusa.Value, RogzitesDatuma = RogzitesDatuma }; return result; } } }