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

117 lines
4.4 KiB
C#

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<int> OsztalyCsoportIdList { get; set; } = new List<int>();
[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<int>(),
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;
}
}
}