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

114 lines
4.8 KiB
C#

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 ElektronikusUzenetSearchModel : BaseFeljegyzesModel
{
#region Properties
public int? CsoportIdSearch { get; set; }
public List<int> TanuloIdList { get; set; } = new List<int>();
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; }
public string ControllerName { get; set; }
public string ApiControllerName { 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<int> { 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;
}
}
}