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("Hetirend"); var napDataNap = napData.Tables[0].Rows[0].Field("Hetnapja"); var elteroNapDataHetirend = elteroNapData.Tables[0].Rows[0].Field("Hetirend"); var elteroNapDataNap = elteroNapData.Tables[0].Rows[0].Field("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("IsTanorai_BOOL"); var isTanorankivuli = napTipusData.Tables[0].Rows[0].Field("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("Hetirend"); model.Nap = napData.Tables[0].Rows[0].Field("Hetnapja"); return model; } } }