using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web.Http.ModelBinding; using Foolproof; 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.Security; namespace Kreta.Web.Areas.Feljegyzes.Models { public class ElektronikusUzenetModel : BaseFeljegyzesModel { #region Properties public List TanuloIdList { get; set; } = new List(); public int? OsztalyCsoportId { get; set; } [Display(Name = nameof(FeljegyzesekResource.IsFaliujsagMegjelenes), ResourceType = typeof(FeljegyzesekResource))] public bool? IsFaliujsagMegjelenes { get; set; } [Display(Name = nameof(FeljegyzesekResource.IsMindenkinek), ResourceType = typeof(FeljegyzesekResource))] public bool? IsMindenkinek { get; set; } [RequiredIf("IsFaliujsagMegjelenes", true, ErrorMessage = "A következő mező kitöltése kötelező: \"Érvényesség vége\".")] [Display(Name = nameof(FeljegyzesekResource.ErvenyessegVege), ResourceType = typeof(FeljegyzesekResource))] public DateTime? Vege { get; set; } public DateTime? MinimumErvenyessegVege { get; set; } public DateTime? MaximumErvenyessegVege { get; set; } #endregion Properties public ModelStateDictionary Validate() { var modelStateDictionary = BaseValidation(); if (!OsztalyCsoportId.IsEntityId()) { modelStateDictionary.AddModelError(nameof(OsztalyCsoportId), OsztalyCsoportResource.OsztalyCsoportKotelezo); } if (!TanuloIdList.Any()) { modelStateDictionary.AddModelError(nameof(TanuloIdList), TanuloResource.LegalabbEgyTanuloKivalasztasaKotelezo); } if (IsFaliujsagMegjelenes.HasValue && IsFaliujsagMegjelenes.Value) { if (!Vege.HasValue) { modelStateDictionary.AddModelError(nameof(Vege), string.Format(CommonResource.Required, $"\"{FeljegyzesekResource.ErvenyessegVege}\"")); } else { FeljegyzesHelperCo feljegyzesHelperCo = new FeljegyzesHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetFeljegyzesHelperCo(); var minimumErvenyessegVege = feljegyzesHelperCo.MinimumErvenyessegVege; var maximumErvenyessegVege = feljegyzesHelperCo.MaximumErvenyessegVege; var minOk = Vege >= minimumErvenyessegVege; var maxOk = Vege <= maximumErvenyessegVege; if (!minOk || !maxOk) { modelStateDictionary.AddModelError(nameof(Vege), string.Format(FeljegyzesekResource.AzErvenyessegVegeCsakKozeEshet, minimumErvenyessegVege.ToString("yyyy. MM. dd."), maximumErvenyessegVege.ToString("yyyy. MM. dd."))); } if (EsemenyDatuma.HasValue && Vege.Value < EsemenyDatuma.Value) { modelStateDictionary.AddModelError(nameof(Vege), FeljegyzesekResource.AzErvenyessegVegeNemLehetKisebbADatumnal); } } } return modelStateDictionary; } public FeljegyzesCo ToCo() { var result = new FeljegyzesCo { Id = Id, FeljegyzoId = FeljegyzoId, FeljegyzoNev = null, Kezdete = IsFaliujsagMegjelenes != null && IsFaliujsagMegjelenes.Value ? EsemenyDatuma : null, IsFaliujsagMegjelenes = IsFaliujsagMegjelenes, IsMindenkinek = IsMindenkinek, Megjegyzes = Megjegyzes, //NOTE: A OsztalyCsoportId nem lehet null, ha mégis, akkor ott hibás a működés! OsztalyCsoportIdList = new List { OsztalyCsoportId.Value }, EsemenyDatuma = EsemenyDatuma, TanitasiOraId = null, TantargyId = null, TanuloIdList = TanuloIdList, Targy = string.IsNullOrWhiteSpace(Targy) ? EsemenyTipusEnum.ElektronikusUzenet.GetDisplayName(ClaimData.SelectedTanevID.Value) : Targy, Tartalom = Tartalom, Tipus = (int)EsemenyTipusEnum.ElektronikusUzenet, Vege = IsFaliujsagMegjelenes != null && IsFaliujsagMegjelenes.Value ? Vege : null }; return result; } } }