128 lines
6.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|