kreta/KretaWeb/Areas/Adminisztracio/Models/HelyettesitesBevitelModel.cs
2024-03-13 00:33:46 +01:00

129 lines
6.4 KiB
C#

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<SelectListItem> HelyettesitesTipusList => FrameworkEnumExtensions.EnumToList((int)GeneratedAdatszotarTipusEnum.HelyettesitesTipus, ClaimData.SelectedTanevID.Value).ToSelectListItemList(selectedValue: (int)HelyettesitesTipusEnum.szakszeru_helyettesites);
public List<SelectListItem> HelyettesitesGyakorisagTipusList => EnumExtensions.EnumToDictionary<HelyettesitesGyakorisagTipusEnum>(ClaimData.SelectedTanevID.Value).ToSelectListItemList(selectedValue: (int)HelyettesitesGyakorisagTipusEnum.Egyedi);
public List<SelectListItem> HelyettesitesOsztalybanSzakosTanarList { get; set; }
public List<SelectListItem> HelyettesitesNemOsztalybanSzakosTanarList { get; set; }
public List<SelectListItem> HelyettesitesOsztalybanNemSzakosTanarList { get; set; }
public List<SelectListItem> HelyettesitesNemOsztalybanNemSzakosTanarList { get; set; }
public List<SelectListItem> OsszevonasOsztalybanSzakosTanarList { get; set; }
public List<SelectListItem> OsszevonasNemOsztalybanSzakosTanarList { get; set; }
public List<SelectListItem> OsszevonasOsztalybanNemSzakosTanarList { get; set; }
public List<SelectListItem> OsszevonasNemOsztalybanNemSzakosTanarList { get; set; }
public List<SelectListItem> FelugyeletTanarList { get; set; }
public List<SelectListItem> OsszesTanarList { get; set; }
public bool IsTulora { get; set; }
public bool IsTuloraMentes { get; set; }
public IEnumerable<ValidationResult> 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; }
}
}