using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Http.ModelBinding; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.Enums; using Kreta.Resources; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.Feljegyzes.Models { public class FaliujsagBejegyzesModel : BaseFeljegyzesModel { #region Constructors public FaliujsagBejegyzesModel() { } public FaliujsagBejegyzesModel(FeljegyzesCo co) { Id = co.Id; FeljegyzoId = co.FeljegyzoId; FeljegyzoNev = co.FeljegyzoNev; OsztalyCsoportIdList = co.OsztalyCsoportIdList; EsemenyDatuma = co.EsemenyDatuma; Targy = co.Targy; Megjegyzes = co.Megjegyzes; Tartalom = co.Tartalom; Vege = co.Vege; IsMindenkinek = co.IsMindenkinek; HasAdminJogosultsag = co.HasAdminJogosultsag; } #endregion Constructors #region Properties public List OsztalyCsoportIdList { get; set; } = new List(); [Display(Name = nameof(FeljegyzesekResource.BejegyzesElerhetoEgeszIntezmenySzamara), ResourceType = typeof(FeljegyzesekResource))] public bool? IsMindenkinek { get; set; } [KretaRequired] [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 (!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(bool isFogadoora = false) { var result = new FeljegyzesCo { Id = Id, FeljegyzoId = FeljegyzoId, FeljegyzoNev = null, Kezdete = EsemenyDatuma, IsFaliujsagMegjelenes = true, IsMindenkinek = IsMindenkinek, Megjegyzes = Megjegyzes, OsztalyCsoportIdList = OsztalyCsoportIdList, EsemenyDatuma = EsemenyDatuma, TanitasiOraId = null, TantargyId = null, TanuloIdList = new List(), Targy = string.IsNullOrWhiteSpace(Targy) ? EsemenyTipusEnum.FaliujsagBejegyzes.GetDisplayName(ClaimData.SelectedTanevID.Value) : Targy, Tartalom = Tartalom, Tipus = (int)EsemenyTipusEnum.FaliujsagBejegyzes, Vege = Vege }; if (isFogadoora) { var now = DateTime.Now; var newKezdetDatum = result.Vege.Value.AddDays(-7).Date.AddHours(now.Hour).AddMinutes(now.Minute); result.Kezdete = newKezdetDatum < now ? now : newKezdetDatum; } return result; } } }