using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Web.Mvc; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Helpers; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework.Util; using Kreta.Resources; using Kreta.Web.Helpers; using Kreta.Web.Security; namespace Kreta.Web.Areas.Adminisztracio.Models { public class HelyettesitesBevitelModel : IValidatableObject { public int HelyettesitesBevitelCalendarEventId { get; set; } public int? HelyettesitesBevitelHelyettesitesId { get; set; } public int? HelyettesitesBevitelGroupId { get; set; } public CalendarOraTypeEnum HelyettesitesBevitelCalendarOraType { get; set; } [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(CommonResource.Tanar), ResourceType = typeof(CommonResource))] public int? HelyettesitesBevitelTanarId { get; set; } [Display(Name = nameof(OrarendResource.JelenlegiHelyettesito), ResourceType = typeof(OrarendResource))] public string HelyettesitesBevitelTanarNev { get; set; } [Required(ErrorMessageResourceName = nameof(ErrorResource.Required), ErrorMessageResourceType = typeof(ErrorResource))] [Display(Name = nameof(OrarendResource.HelyettesitesTipusa), ResourceType = typeof(OrarendResource))] public int HelyettesitesBevitelHelyettesitesTipusId { get; set; } [Display(Name = nameof(OrarendResource.OraKezdete), ResourceType = typeof(OrarendResource))] public DateTime HelyettesitesBevitelOraKezdeteDate { get; set; } [Display(Name = nameof(OrarendResource.OraKezdete), ResourceType = typeof(OrarendResource))] public string HelyettesitesBevitelOraKezdeteDateText => HelyettesitesBevitelOraKezdeteDate.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds); [Display(Name = nameof(OrarendResource.OraVege), ResourceType = typeof(OrarendResource))] public DateTime HelyettesitesBevitelOraVegeDate { get; set; } [Display(Name = nameof(OrarendResource.OraVege), ResourceType = typeof(OrarendResource))] public string HelyettesitesBevitelOraVegeDateText => HelyettesitesBevitelOraVegeDate.ToString(Core.Constants.ToStringPattern.HungarianDateTimeWithoutSeconds); [MaxLength(500, ErrorMessageResourceName = nameof(CommonResource.MaxLengthValidation), ErrorMessageResourceType = typeof(CommonResource))] [Display(Name = nameof(OrarendResource.HelyettesitesOka), ResourceType = typeof(OrarendResource))] public string HelyettesitesBevitelHelyettesitesOka { get; set; } public int HelyettesitesBevitelHelyettesitesGyakorisagTipus { get; set; } public string HelyettesitesTitle { get; set; } [Display(Name = nameof(OrarendResource.TartosHelyettesitesVege), ResourceType = typeof(OrarendResource))] public DateTime? HelyettesitesBevitelTartosHelyettesitesVegeDate { get; set; } public List HelyettesitesTipusList => FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HelyettesitesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList(selectedValue: (int)HelyettesitesTipusEnum.szakszeru_helyettesites); public List HelyettesitesGyakorisagTipusList => EnumExtensions.EnumToDictionary(ClaimData.SelectedTanevID.Value).ToSelectListItemList(selectedValue: (int)HelyettesitesGyakorisagTipusEnum.Egyedi); public List HelyettesitesOsztalybanSzakosTanarList { get; set; } public List HelyettesitesNemOsztalybanSzakosTanarList { get; set; } public List HelyettesitesOsztalybanNemSzakosTanarList { get; set; } public List HelyettesitesNemOsztalybanNemSzakosTanarList { get; set; } public List OsszevonasOsztalybanSzakosTanarList { get; set; } public List OsszevonasNemOsztalybanSzakosTanarList { get; set; } public List OsszevonasOsztalybanNemSzakosTanarList { get; set; } public List OsszevonasNemOsztalybanNemSzakosTanarList { get; set; } public List FelugyeletTanarList { get; set; } public List OsszesTanarList { get; set; } public bool IsTulora { get; set; } public bool IsTuloraMentes { get; set; } public IEnumerable Validate(ValidationContext validationContext) { if (HelyettesitesBevitelHelyettesitesGyakorisagTipus == (int)HelyettesitesGyakorisagTipusEnum.Tartos) { DateTime minimumDate; DateTime maximumDate; var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType()); minimumDate = helper.GetElsoTanitasiNapDate(); if (HelyettesitesBevitelOraKezdeteDate.Date > minimumDate) { minimumDate = HelyettesitesBevitelOraKezdeteDate.Date; } maximumDate = helper.GetUtolsoTanitasiNapDate(); if (HelyettesitesBevitelTartosHelyettesitesVegeDate.HasValue) { var minOk = HelyettesitesBevitelTartosHelyettesitesVegeDate >= minimumDate; var maxOk = HelyettesitesBevitelTartosHelyettesitesVegeDate <= maximumDate; if (!minOk || !maxOk) { yield return new ValidationResult(string.Format(OrarendResource.ATartosHelyettesitesVegdatumaCsakKozeEshet, minimumDate.ToString(Core.Constants.ToStringPattern.HungarianDate), maximumDate.ToString(Core.Constants.ToStringPattern.HungarianDate))); } } else { yield return new ValidationResult(string.Format(CommonResource.Required, OrarendResource.TartosHelyettesitesVege)); } } } } public class NemMegtartottHelyettesitesBevitelModel { public int? HelyettesitesBevitelCalendarEventId { get; set; } public DateTime? HelyettesitesBevitelOraKezdeteDate { get; set; } public DateTime? HelyettesitesBevitelOraVegeDate { get; set; } public string HelyettesitesBevitelHelyettesitesOka { get; set; } } }