kreta/KretaWeb/Areas/Intezmeny/Logic/TanevRendjeLogic.cs
2024-03-13 00:33:46 +01:00

128 lines
6.1 KiB
C#

using System;
using System.Data;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Enums;
using Kreta.Framework;
using Kreta.Resources;
using Kreta.Web.Areas.Intezmeny.Models;
using Kreta.Web.Helpers;
namespace Kreta.Web.Areas.Intezmeny.Logic
{
public static class TanevRendjeLogic
{
public static void TanevRendjeValidation(System.Web.Http.ModelBinding.ModelStateDictionary ModelState, TanevRendjeModel model)
{
TanevCO tanev;
var tanevHelper = new TanevHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanev = tanevHelper.GetTanevInfo();
if (model.Datum.HasValue && (model.Datum.Value < tanev.KezdoNap || tanev.UtolsoNap < model.Datum.Value))
{
ModelState.AddModelError("Datum", ErrorResource.ADatumCsakAKivalasztottTanevbeEsoIdoszakLehet);
}
if (!model.ElteroOrarendSzerintiTanitasNapDatum.HasValue)
{
ModelState.AddModelError("ElteroOrarendSzerintiTanitasNapDatumReq", ErrorResource.AzElteroOrarendSzerintiNapDatumKotelezo);
}
if (model.ElteroOrarendSzerintiTanitasNapDatum.HasValue && (model.ElteroOrarendSzerintiTanitasNapDatum.Value < tanev.KezdoNap || tanev.UtolsoNap < model.ElteroOrarendSzerintiTanitasNapDatum.Value))
{
ModelState.AddModelError("ElteroOrarendSzerintiTanitasNapDatum", ErrorResource.AzElteroOrarendSzerintiTanitasNapDatumCsakAKivalasztottTanevbeEsoIdoszakLehet);
}
if (model.OsszesCsop == false && model.SelectedOsztalyCsoportIdList.Count == 0)
{
ModelState.AddModelError("OsszesCsop", StringResourcesUtil.GetString(4335));//Ha a tanév rendje esemény nem érvényes az összes osztályra, akkor legalább egy osztályt ki kell választani
}
if (model.Datum.HasValue && model.ElteroOrarendSzerintiTanitasNapDatum.HasValue && !IsOrarendiNap(model) && model.Datum.Value.Date != model.ElteroOrarendSzerintiTanitasNapDatum.Value.Date)
{
ModelState.AddModelError("ElteroOrarendSzerintiTanitasNapDatum", ErrorResource.AzElteroOrarendSzerintiTanitasNapDatumMegKellEgyezniTanevRendjeDatummal);
}
var helper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
bool useRequiredValidation = helper.IsTanoraOrNapirendRogzitheto(model.NapTipusa.Value);
if (useRequiredValidation)
{
if (!model.CsengetesiRend.HasValue)
ModelState.AddModelError("CsengetesiRend", ErrorResource.CsengetesiRendMegadasaKotelezo);
if (!model.OrarendiNap && !model.UresOrarend)
ModelState.AddModelError("OrarendiNapUresOrarend", IntezmenyResource.OrarendiNapUresOrarend);
}
}
public static void CheckTanevRendjeUtkozes(TanevRendjeModel model)
{
var tanevrendHelper = new TanevrendHelper(ConnectionTypeExtensions.GetSessionConnectionType());
tanevrendHelper.CheckTanevRendjeUtkozes(
model.Datum.Value,
model.SelectedOsztalyCsoportIdList,
model.OsszesCsop,
model.TanevRendjeId
);
}
public static bool IsEgyediNap(TanevRendjeModel model)
{
if (model.UresOrarend || model.NapTipusa.Value == (int)NapTipusEnum.roviditett_orakat_tartalmazo_tanitasi_nap || model.Datum.Value != model.ElteroOrarendSzerintiTanitasNapDatum.Value)
return true;
var napData = new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNaptariNapData(model.Datum.Value);
var elteroNapData = new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNaptariNapData(model.ElteroOrarendSzerintiTanitasNapDatum.Value);
if (napData.Tables[0].Rows.Count == 1)
{
var napDataHetirend = napData.Tables[0].Rows[0].Field<int>("Hetirend");
var napDataNap = napData.Tables[0].Rows[0].Field<int>("Hetnapja");
var elteroNapDataHetirend = elteroNapData.Tables[0].Rows[0].Field<int>("Hetirend");
var elteroNapDataNap = elteroNapData.Tables[0].Rows[0].Field<int>("Hetnapja");
if ((napDataHetirend != elteroNapDataHetirend && elteroNapDataHetirend != (int)HetiRendTipusEnum.MindegyikHet) || napDataNap != elteroNapDataNap)
return true;
}
return false;
}
public static bool IsEgyediNapByDate(DateTime datum)
{
return new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIsEgyediNapByDate(datum);
}
public static bool IsEgyediNapByDateAndOsztalyCsoportId(DateTime datum, int osztalyCsoportId)
{
return new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetIsEgyediNapByDateAndOsztalyCsoportId(datum, osztalyCsoportId);
}
public static bool IsOrarendiNap(TanevRendjeModel model)
{
var napTipusData = new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNapTipusData(model.NapTipusa.Value);
if (napTipusData.Tables[0].Rows.Count == 1)
{
var isTanorai = napTipusData.Tables[0].Rows[0].Field<bool>("IsTanorai_BOOL");
var isTanorankivuli = napTipusData.Tables[0].Rows[0].Field<bool>("IsTanorankivuli_BOOL");
if (isTanorai || isTanorankivuli)
return true;
}
return false;
}
public static TanevRendjeModel SetNapEsHetirend(TanevRendjeModel model)
{
var napData = new NaptariNapHelper(ConnectionTypeExtensions.GetSessionConnectionType()).GetNaptariNapData(model.ElteroOrarendSzerintiTanitasNapDatum.Value);
model.Hetirend = napData.Tables[0].Rows[0].Field<int>("Hetirend");
model.Nap = napData.Tables[0].Rows[0].Field<int>("Hetnapja");
return model;
}
}
}