using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers.Models; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.Core.Exceptions; using Kreta.Core.FeatureToggle; using Kreta.Core.FeatureToggle.Configuration; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Job.Tasks.Cache; using Kreta.Resources; using Newtonsoft.Json; namespace Kreta.BusinessLogic.Helpers { public class OrarendiOraHelper : LogicBase { public OrarendiOraHelper(IConnectionType connectionType) : base(connectionType) { } public bool HasHazifeladatOrHelyettesitesOrSzamonkeresForOrarendiOra(OraValidationCo co) { return Dal.CustomConnection.Run(ConnectionType, (h) => { OrarendiOraValidationCo oraValidationCo = SetErvenyessegDatumok(h, co.OrarendiOraValidationCo); IOrarendiOra entity = h.OrarendiOra().Get(oraValidationCo.Id.Value); if (new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).HasOrarendiOraKapcsolodoHazifeladatot(entity.OrarendiOraGroupId, oraValidationCo.OraErvenyessegKezdete, oraValidationCo.OraErvenyessegVege.Date, idoszakonKivul: false)) { return true; } if (entity.HelyettesTanarok.Any(x => !x.Torolt && (x.HelyettesitesNapja >= oraValidationCo.OraErvenyessegKezdete || x.HelyettesitesNapja <= oraValidationCo.OraErvenyessegVege.Date))) { return true; } if (entity.OrarendiOraGroupId.IsEntityId()) { return h.SzamonkeresElorejelzes().HasSzamonkeresByIdoszak(TanevId, entity.OrarendiOraGroupId.Value, oraValidationCo.OraErvenyessegKezdete, oraValidationCo.OraErvenyessegVege.Date, idoszakonKivul: false); } return false; }); } public bool HasHazifeladatOrHelyettesitesOrSzamonkeresNotInIdoszak(OraValidationCo co) { bool result; result = Dal.CustomConnection.Run(ConnectionType, (h) => { OrarendiOraValidationCo oraValidationCo = SetErvenyessegDatumok(h, co.OrarendiOraValidationCo); IOrarendiOra entity = h.OrarendiOra().Get(oraValidationCo.Id.Value); if (new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).HasOrarendiOraKapcsolodoHazifeladatot(entity.OrarendiOraGroupId, oraValidationCo.OraErvenyessegKezdete, oraValidationCo.OraErvenyessegVege, idoszakonKivul: true)) { return true; } if (entity.HelyettesTanarok.Any(x => !x.Torolt && (x.HelyettesitesNapja < oraValidationCo.OraErvenyessegKezdete || x.HelyettesitesNapja > oraValidationCo.OraErvenyessegVege))) { return true; } if (entity.OrarendiOraGroupId.IsEntityId()) { return h.SzamonkeresElorejelzes().HasSzamonkeresByIdoszak(TanevId, entity.OrarendiOraGroupId.Value, oraValidationCo.OraErvenyessegKezdete, oraValidationCo.OraErvenyessegVege, idoszakonKivul: true); } return false; }); return result; } public bool CheckUtkozesValidation(OraValidationCo validationCo, string errMsgOraData = null, bool isPrevalidation = false, bool isThrowExceptionOnCollision = true, bool isCheckKozponti = false, bool isForDelete = false, bool isTeremutkozesFigyelese = true) { return Dal.CustomConnection.Run(ConnectionType, h => { return CheckUtkozesValidation(h, validationCo, errMsgOraData, isPrevalidation, isThrowExceptionOnCollision, isCheckKozponti, isForDelete, isTeremutkozesFigyelese); }); } private bool CheckUtkozesValidation(IDalHandler dalHandler, OraValidationCo validationCo, string errMsgOraData = null, bool isPrevalidation = false, bool isThrowExceptionOnCollision = true, bool isCheckKozponti = false, bool isForDelete = false, bool isTeremutkozesFigyelese = true) { OraValidationCo EredetiOraValidationCo = new OraValidationCo(); OraValidationCo OraValidationCoForCheck = new OraValidationCo(); validationCo.OrarendiOraValidationCo = SetErvenyessegDatumok(dalHandler, validationCo.OrarendiOraValidationCo); bool isErvenyessegModositasTeljesIdoszakra = false; //osszehasonlitjuk az eredeti orarendioraval - ha nincs modositas nem validalunk es nem mentunk if (validationCo.OrarendiOraValidationCo.Id.HasValue) { EredetiOraValidationCo.OrarendiOraValidationCo = ConvertToOrarendiOraValidationCo(dalHandler.OrarendiOra().Get(validationCo.OrarendiOraValidationCo.Id.Value)); EredetiOraValidationCo.OrarendiOraValidationCo.IsFromSzervezet = validationCo.OrarendiOraValidationCo.IsFromSzervezet; EredetiOraValidationCo.OrarendiOraValidationCo.IsMentorOra = validationCo.OrarendiOraValidationCo.IsMentorOra; isErvenyessegModositasTeljesIdoszakra = validationCo.OrarendiOraValidationCo.IsModification && validationCo.OrarendiOraValidationCo.ModositasiIdoszakTipus == (int)OraModositasiIdoszakTipus.TeljesIdoszak && (validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete != EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete || validationCo.OrarendiOraValidationCo.OraErvenyessegVege != EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege); EredetiOraValidationCo.OrarendiOraValidationCo.TeremutkozesSystemSetting = validationCo.OrarendiOraValidationCo.TeremutkozesSystemSetting; EredetiOraValidationCo.OrarendiOraValidationCo.ModositasiIdoszakTipus = validationCo.OrarendiOraValidationCo.ModositasiIdoszakTipus; EredetiOraValidationCo.OrarendiOraValidationCo.IsModification = validationCo.OrarendiOraValidationCo.IsModification; EredetiOraValidationCo.OrarendiOraValidationCo.JSHelperNev = validationCo.OrarendiOraValidationCo.JSHelperNev; EredetiOraValidationCo.OrarendiOraValidationCo.ModificationDate = validationCo.OrarendiOraValidationCo.ModificationDate; EredetiOraValidationCo.OrarendiOraValidationCo.OraKezdete = validationCo.OrarendiOraValidationCo.OraKezdete.Date.Add(EredetiOraValidationCo.OrarendiOraValidationCo.OraKezdete.TimeOfDay); EredetiOraValidationCo.OrarendiOraValidationCo.OraVege = validationCo.OrarendiOraValidationCo.OraVege.Date.Add(EredetiOraValidationCo.OrarendiOraValidationCo.OraVege.TimeOfDay); EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete.Date.Add(validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete.TimeOfDay); EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege.Date.Add(validationCo.OrarendiOraValidationCo.OraErvenyessegVege.TimeOfDay); } OraValidationCoForCheck = JsonConvert.DeserializeObject(JsonConvert.SerializeObject(validationCo));//CloneObject OraValidationCoForCheck.OrarendiOraValidationCo.GroupId = EredetiOraValidationCo.OrarendiOraValidationCo.GroupId; OraValidationCoForCheck.OrarendiOraValidationCo.OraErvenyessegKezdete = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete; OraValidationCoForCheck.OrarendiOraValidationCo.OraErvenyessegVege = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege; validationCo.IsChanged = isErvenyessegModositasTeljesIdoszakra || !OraValidationCoForCheck.OrarendiOraValidationCo.IsEqualTo(EredetiOraValidationCo.OrarendiOraValidationCo); validationCo.OsztalyTanarTantargyModosult = validationCo.OrarendiOraValidationCo.OsztalyId != EredetiOraValidationCo.OrarendiOraValidationCo.OsztalyId || validationCo.OrarendiOraValidationCo.TanarId != EredetiOraValidationCo.OrarendiOraValidationCo.TanarId || validationCo.OrarendiOraValidationCo.TantargyId != EredetiOraValidationCo.OrarendiOraValidationCo.TantargyId || validationCo.OrarendiOraValidationCo.Oraszam != EredetiOraValidationCo.OrarendiOraValidationCo.Oraszam; if (validationCo.IsChanged || isForDelete) { //egynapos orak miatt es az sp_getorarend zart datum intervalumra szűr var ervenyessegvege = validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete.Date == validationCo.OrarendiOraValidationCo.OraErvenyessegVege.Date ? validationCo.OrarendiOraValidationCo.OraErvenyessegVege : validationCo.OrarendiOraValidationCo.OraErvenyessegVege.AddDays(-1); var aktualisHetirendek = GetAktualisHetirendek(dalHandler); DateTime bovitettIntervallumKezdete; DateTime bovitettIntervallumVege; if (EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete != default) { bovitettIntervallumKezdete = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete < validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete ? EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete : validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete; } else { bovitettIntervallumKezdete = validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete; } if (EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege != default) { bovitettIntervallumVege = EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege < ervenyessegvege ? ervenyessegvege : EredetiOraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege; } else { bovitettIntervallumVege = ervenyessegvege; } //lekerjuk az adatokat --> sp_GetOrarend List bovitettOraLista = GetOrarendiOrakUtkozesValidaciohoz(dalHandler, bovitettIntervallumKezdete, bovitettIntervallumVege, validationCo.OrarendiOraValidationCo.HetNapjaId, validationCo.OrarendiOraValidationCo.OraKezdete, validationCo.OrarendiOraValidationCo.OraVege ).Where(x => (validationCo.OrarendiOraValidationCo.HetirendId == (int)HetiRendTipusEnum.MindegyikHet ? aktualisHetirendek.Contains(x.HetirendTipusId) : x.HetirendTipusId == validationCo.OrarendiOraValidationCo.HetirendId) && x.IsEgyediNap == validationCo.OrarendiOraValidationCo.IsEgyediNap).ToList(); List OraListaOraSzamModositas = new List(); var oraszamModosult = validationCo.OrarendiOraValidationCo.IsModification && (validationCo.OrarendiOraValidationCo.OraKezdete != EredetiOraValidationCo.OrarendiOraValidationCo.OraKezdete || validationCo.OrarendiOraValidationCo.OraVege != EredetiOraValidationCo.OrarendiOraValidationCo.OraVege); if (oraszamModosult) { OraListaOraSzamModositas = GetOrarendiOrakUtkozesValidaciohoz(dalHandler, bovitettIntervallumKezdete, bovitettIntervallumVege, validationCo.OrarendiOraValidationCo.HetNapjaId, EredetiOraValidationCo.OrarendiOraValidationCo.OraKezdete, EredetiOraValidationCo.OrarendiOraValidationCo.OraVege ).Where(x => (validationCo.OrarendiOraValidationCo.HetirendId == (int)HetiRendTipusEnum.MindegyikHet ? aktualisHetirendek.Contains(x.HetirendTipusId) : x.HetirendTipusId == validationCo.OrarendiOraValidationCo.HetirendId) && x.IsEgyediNap == validationCo.OrarendiOraValidationCo.IsEgyediNap).ToList(); } List oraLista = bovitettOraLista.Where(x => x.Datum >= validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete.Date && x.Datum <= ervenyessegvege.Date).ToList(); if (!isForDelete) { if (isTeremutkozesFigyelese && !validationCo.OrarendiOraValidationCo.IsFromSzervezet) { var teremutkozesSystemSetting = GetTeremutkozesFigyelesSystemSettingValue(dalHandler); validationCo.OrarendiOraValidationCo.TeremutkozesSystemSetting = teremutkozesSystemSetting; //OrarendHelper.OrarendiOraTeremUtkozesEllenorzes helyett List teremUtkozoOraLista = TeremUtkozesValidation(oraLista, validationCo.OrarendiOraValidationCo); if (teremUtkozoOraLista.Count > 0 && teremutkozesSystemSetting != 3) //1 - nem lehet ütközés, 2 - figyelmeztetés, 3 - ütközés lehetséges { if (teremutkozesSystemSetting == 1) { var msg = OrarendResource.EbbenAzIdopontbanATeremFoglalt; if (!string.IsNullOrWhiteSpace(errMsgOraData)) { msg = $@"{errMsgOraData} {msg}"; } if (isThrowExceptionOnCollision) { throw new BlException(msg); } } validationCo.OrarendiOraValidationCo.HasTeremutkozes = true; validationCo.Msg.AppendFormat("{0}
", OrarendResource.EbbenAzIdopontbanATeremFoglalt); } } //CheckAzonosOraFelvitel helyett List azonosMentettOraLista = GetAzonosOraFelvitel(dalHandler, oraLista, validationCo.OrarendiOraValidationCo); if (!isPrevalidation) { if (azonosMentettOraLista.Count > 0) { if (!isCheckKozponti) { foreach (OrarendiOraTanitasiOraCo azonosMentettOra in azonosMentettOraLista) { if (azonosMentettOra.IsEgyediNap == validationCo.OrarendiOraValidationCo.IsEgyediNap) { DeletOrarendiOra(dalHandler, azonosMentettOra.OrarendiOraId.Value, (int)OraModositasiIdoszakTipus.TeljesIdoszak, validationCo.OrarendiOraValidationCo.ModificationDate); } } } else { validationCo.IsKozpontiDuplicate = azonosMentettOraLista.Any(o => o.KozpontiOraGroupId.HasValue || o.KozpontilagToroltOraGroupId.HasValue); } validationCo.GroupId = azonosMentettOraLista[0].GroupId; } } else { if (azonosMentettOraLista.Count > 0) { OrarendiOraTanitasiOraCo elsoAzonosMentettOra = azonosMentettOraLista[0]; if (isThrowExceptionOnCollision) { if (validationCo.OrarendiOraValidationCo.IsNapirend) { throw new BlException(OrarendResource.AzonosOraFelvitelNemLehetseges + $" { elsoAzonosMentettOra.OraErvenyessegKezdete.ToShortDateString() } - { elsoAzonosMentettOra.OraErvenyessegVege.ToShortDateString() } ({ elsoAzonosMentettOra.HetNapjaTipusId.GetDisplayName(TanevId) })"); } throw new BlException(OrarendResource.AzonosOraFelvitelNemLehetseges + $" { elsoAzonosMentettOra.OraErvenyessegKezdete.ToShortDateString() } - { elsoAzonosMentettOra.OraErvenyessegVege.ToShortDateString() } " + $"({ elsoAzonosMentettOra.HetNapjaTipusId.GetDisplayName(TanevId) } { elsoAzonosMentettOra.OraKezdete.Value.TimeOfDay:hh\\:mm} - { elsoAzonosMentettOra.OraVege.Value.TimeOfDay:hh\\:mm})"); } } else { if (!validationCo.OrarendiOraValidationCo.IsFromSzervezet) { var tevekenysegUtkozesSystemSettings = GetTevekenysegFigyelesSystemSettingValue(dalHandler); //OrarendiOraUtkozesEllenorzes - OrarendiOraUtkozesTipusEnum.Tanar - helyett List tanarUtkozoOraLista = TanarUtkozesValidation(oraLista, validationCo.OrarendiOraValidationCo); if (tanarUtkozoOraLista.Count > 0) { if (tevekenysegUtkozesSystemSettings == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges) //1 - nem lehet ütközés, 2 - figyelmeztetés { if (isThrowExceptionOnCollision) { throw new BlException(OrarendResource.AKivalasztottTanarnakFoglalkozasaVanEbbenAzIdopontban); } } else if (tevekenysegUtkozesSystemSettings == (int)TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes) { validationCo.Msg.AppendFormat("{0}
", OrarendResource.AKivalasztottTanarnakFoglalkozasaVanEbbenAzIdopontban); } } //OrarendiOraUtkozesEllenorzes - OrarendiOraUtkozesTipusEnum.OsztalyCsoport - helyett List osztalyUtkozoOraLista = OsztalyCsoportUtkozesValidation(oraLista, validationCo.OrarendiOraValidationCo); if (osztalyUtkozoOraLista.Count > 0) { if (tevekenysegUtkozesSystemSettings == (int)TevekenysegUtkozesEnum.UtkozesNemLehetseges) //1 - nem lehet ütközés, 2 - figyelmeztetés { if (isThrowExceptionOnCollision) { throw new BlException(OrarendResource.AKivalasztottOsztalynakcsoportnakOrajaVanEbbenAzIdopontban); } } else if (tevekenysegUtkozesSystemSettings == (int)TevekenysegUtkozesEnum.UtkozeskorFigyelmeztetes) { validationCo.Msg.AppendFormat("{0}
", OrarendResource.AKivalasztottOsztalynakcsoportnakOrajaVanEbbenAzIdopontban); } } if (validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete.Date == validationCo.OrarendiOraValidationCo.OraErvenyessegVege.Date) { var tanevRendjeMaxOraszam = TanevRendjeOraszamValidation(dalHandler, validationCo.OrarendiOraValidationCo.OsztalyId.Value, validationCo.OrarendiOraValidationCo.OraErvenyessegKezdete); if (validationCo.OrarendiOraValidationCo.Oraszam > tanevRendjeMaxOraszam) validationCo.ErrorMsg.AppendFormat("{0}
", string.Format(OrarendResource.AKivalasztottOsztalynakcsoportnakMaxNapiOraszama, tanevRendjeMaxOraszam)); } } } } if (!validationCo.OrarendiOraValidationCo.IsFromSzervezet && KapacitasUtkozesValidation(dalHandler, validationCo.OrarendiOraValidationCo)) { validationCo.Msg.AppendFormat("{0}
", OrarendResource.ATeremBefogadokepessegeKisebbMintAzOsztalyCsoportLetszamaSzeretneFolytatni); } if (validationCo.OrarendiOraValidationCo.Oraszam.HasValue && validationCo.OrarendiOraValidationCo.CsengetesiRendId.HasValue) { var orarendiOraOraszamIdopontMsg = CheckOrarendiOraOraszamIdopont(dalHandler, validationCo.OrarendiOraValidationCo.CsengetesiRendId.Value, validationCo.OrarendiOraValidationCo.Oraszam.Value, validationCo.OrarendiOraValidationCo.OraKezdete, validationCo.OrarendiOraValidationCo.OraVege); if (orarendiOraOraszamIdopontMsg.Length > 0) { validationCo.Msg.AppendFormat("{0}
", orarendiOraOraszamIdopontMsg); } } } //megvizsgájuk, vannak-e törlendő helyettesítések List torlendoHelyettesitesek = validationCo.OrarendiOraValidationCo.Id.HasValue ? GetTorlendoHelyettesitesek(oraszamModosult ? OraListaOraSzamModositas : bovitettOraLista, validationCo.OrarendiOraValidationCo, isForDelete, isErvenyessegModositasTeljesIdoszakra, isOraszamModosult: oraszamModosult) : new List(); validationCo.TorlendoHelyettesitesek = torlendoHelyettesitesek; if (!validationCo.OrarendiOraValidationCo.IsFromSzervezet && torlendoHelyettesitesek.Count > 0) { validationCo.Msg.AppendFormat(OrarendResource.ModositasiidoszakraLetezikHelyettesites, Constants.General.Sortores); } //megvizsgájuk, vannak-e törlendő előre bejelentett számonkérések if (EredetiOraValidationCo.OrarendiOraValidationCo.GroupId.HasValue) { var eloreJelzettSzamonkeresek = dalHandler.SzamonkeresElorejelzes().GetSzamonkeresForOrarendiOraGroupId(TanevId, EredetiOraValidationCo.OrarendiOraValidationCo.GroupId.Value); List torlendoSzamonkeresElorejelzesek = GetTorlendoSzamonkeresElorejelzesek(eloreJelzettSzamonkeresek, EredetiOraValidationCo.OrarendiOraValidationCo, validationCo.OrarendiOraValidationCo, isForDelete, isErvenyessegModositasTeljesIdoszakra); validationCo.TorlendoSzamonkeresElorejelzesek = torlendoSzamonkeresElorejelzesek; if (!validationCo.OrarendiOraValidationCo.IsFromSzervezet && torlendoSzamonkeresElorejelzesek.Count > 0) { validationCo.Msg.AppendFormat(OrarendResource.ModositasiidoszakraLetezikSzamonkeres, Constants.General.Sortores); } } return true; } return false; } private int GetTeremutkozesFigyelesSystemSettingValue(IDalHandler h) { return new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Teremutkozes_figyeles); } private bool KapacitasUtkozesValidation(IDalHandler dalHandler, OrarendiOraValidationCo co) { var sysNaplozas_terem_befogadokepesseg = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Naplozas_terem_befogadokepesseg); if (!sysNaplozas_terem_befogadokepesseg) return false; var result = OrarendiOraTeremKapacitasEllenorzes(dalHandler, co.TeremId, co.OsztalyId.Value); return result; } private List GetAzonosOraFelvitel(IDalHandler dalHandler, List orarendiOraLista, OrarendiOraValidationCo co) { var aktualisHetirendek = GetAktualisHetirendek(dalHandler); return orarendiOraLista.Where(x => x.TanarId == co.TanarId && x.TantargyId == co.TantargyId && x.OsztalyCsoportId == co.OsztalyId && (co.HetirendId == (int)HetiRendTipusEnum.MindegyikHet ? aktualisHetirendek.Contains(x.HetirendTipusId) : x.HetirendTipusId == co.HetirendId) && x.IsEgyediNap == co.IsEgyediNap && (!co.Id.HasValue || (x.OrarendiOraId != co.Id.Value))).ToList(); } private static List TeremUtkozesValidation(List orarendiOraLista, OrarendiOraValidationCo co) { return orarendiOraLista.Where( x => x.TeremId == co.TeremId && !x.IsTeremTobbOratLehetTartani && (!co.Id.HasValue || co.Id.Value != x.OrarendiOraId)).ToList(); } private static List TanarUtkozesValidation(List orarendiOraLista, OrarendiOraValidationCo co) { return orarendiOraLista.Where(x => x.TanarId == co.TanarId && (!co.Id.HasValue || co.Id.Value != x.OrarendiOraId)).ToList(); } private static List OsztalyCsoportUtkozesValidation(List orarendiOraLista, OrarendiOraValidationCo co) { return orarendiOraLista.Where(x => x.OsztalyCsoportId == co.OsztalyId && (!co.Id.HasValue || co.Id.Value != x.OrarendiOraId)).ToList(); } private static List GetTorlendoHelyettesitesek(List oraLista, OrarendiOraValidationCo co, bool isForDelete = false, bool isErvenyessegModositasTeljesIdoszakra = false, bool isOraszamModosult = false) { return oraLista.Where (x => x.OrarendiOraId == co.Id.Value //azonos orarendiora elemek && x.HelyettesitesId.HasValue // van helyettesites && ((isErvenyessegModositasTeljesIdoszakra && (x.Datum < co.OraErvenyessegKezdete || x.Datum > co.OraErvenyessegVege)) //a torlendo vagy modositando orarendiora ervenyessegi idointervalumon kivul esok || (x.Datum >= co.OraErvenyessegKezdete && x.Datum <= co.OraErvenyessegVege //a torlendo vagy modositando orarendiora ervenyessegi idointervalum kozotti && (isForDelete || x.TanarId != co.TanarId || x.TantargyId != co.TantargyId || x.OsztalyCsoportId != co.OsztalyId || isOraszamModosult ) )) ).ToList(); } private static List GetTorlendoSzamonkeresElorejelzesek(DataSet bejelentettSzamonkeresek, OrarendiOraValidationCo eredetiOraCo, OrarendiOraValidationCo co, bool isForDelete = false, bool isErvenyessegModositasTeljesIdoszakra = false) { List bejelentettSzamonkeresekItemCo = new List(); if (bejelentettSzamonkeresek.Tables.Count > 0 && bejelentettSzamonkeresek.Tables[0].Rows.Count > 0) { foreach (DataRow row in bejelentettSzamonkeresek.Tables[0].Rows) { var item = new BejelentettSzamonkeresekItemCo(); item.Id = SDAConvert.ToInt32(row["ID"]); item.OrarendiOraGroupId = SDAConvert.ToInt32(row["OrarendiOraGroupId"]); item.SzamonkeresDatuma = SDAConvert.ToDateTime(row["C_SZAMONKERESDATUMA"]).Value; if (eredetiOraCo.OraErvenyessegKezdete <= item.SzamonkeresDatuma && eredetiOraCo.OraErvenyessegVege >= item.SzamonkeresDatuma) {//a splittelesek miatt szukseges szurni csak az adott orarendiora intervalumra bejelentettSzamonkeresekItemCo.Add(item); } } } return bejelentettSzamonkeresekItemCo.Where (x => x.OrarendiOraGroupId == eredetiOraCo.GroupId.Value //azonos orarendiora elemek && (isErvenyessegModositasTeljesIdoszakra && (x.SzamonkeresDatuma < co.OraErvenyessegKezdete || x.SzamonkeresDatuma > co.OraErvenyessegVege)) //a torlendo vagy modositando orarendiora ervenyessegi idointervalumon kivul esok || (x.SzamonkeresDatuma >= co.OraErvenyessegKezdete && x.SzamonkeresDatuma <= co.OraErvenyessegVege //a torlendo vagy modositando orarendiora ervenyessegi idointervalum kozotti && (isForDelete || eredetiOraCo.TanarId != co.TanarId || eredetiOraCo.TantargyId != co.TantargyId || eredetiOraCo.OsztalyId != co.OsztalyId || eredetiOraCo.Oraszam != co.Oraszam ) ) ).ToList(); } public bool CheckUtkozesValidationAndSaveOrUpdateOrarendiOrak(OraValidationCo co, int modifier) { return Dal.CustomConnection.Run(ConnectionType, h => { return CheckUtkozesValidation(h, co, null, false) && SaveOrUpdateOrarendiOrak(h, co, modifier); }); } public bool HandleSaveKozpontiOraRequest(DateTime start, List orarendiOrakTorlesre, List kozpontiOrakList) { Guid kozpontiOraId = Guid.NewGuid(); return Dal.CustomConnection.Run(ConnectionType, h => { // Delete orarendi orak bool sikeres = DeleteOrarendiOrakKozpontilag(h, orarendiOrakTorlesre, kozpontiOraId, start); if (!sikeres) { return false; } // Save kozponti orak if (kozpontiOrakList?.Count > 0) { foreach (OraValidationCo item in kozpontiOrakList) { item.OrarendiOraValidationCo.KozpontiOraGroupId = kozpontiOraId; bool insertSikeres = SaveOrUpdateOrarendiOrak(h, item, FelhasznaloId); if (!insertSikeres) { return false; } } } return true; }); } public bool DeleteOrarendiOrakKozpontilag(List orarendiOrakTorlesre, DateTime start) { Guid kozpontiOraId = Guid.NewGuid(); return Dal.CustomConnection.Run(ConnectionType, h => DeleteOrarendiOrakKozpontilag(h, orarendiOrakTorlesre, kozpontiOraId, start)); } private bool DeleteOrarendiOrakKozpontilag(IDalHandler dalHandler, List orarendiOrakTorlesre, Guid kozpontiOraId, DateTime start) { foreach (int orarendiOraId in orarendiOrakTorlesre) { IOrarendiOra orarendiOra = dalHandler.OrarendiOra().Get(orarendiOraId); bool isEgyediOra = orarendiOra.OraErvenyessegKezdete.Date == orarendiOra.OraErvenyessegVege.Value.Date; if (isEgyediOra) { orarendiOra.KozpontilagToroltOraGroupID = kozpontiOraId; dalHandler.OrarendiOra().Update(orarendiOra); } bool torlesSikeres = DeletOrarendiOra(dalHandler, orarendiOraId, (int)OraModositasiIdoszakTipus.EgyOra, start); if (!torlesSikeres) { return false; } if (!isEgyediOra) { // Insert new orarendi orak as deleted DateTime oraErvenyessegenekKezdete = new DateTime(start.Year, start.Month, start.Day); orarendiOra.OraErvenyessegKezdete = oraErvenyessegenekKezdete; orarendiOra.OraErvenyessegVege = oraErvenyessegenekKezdete; orarendiOra.Torolt = true; orarendiOra.KozpontilagToroltOraGroupID = kozpontiOraId; OraValidationCo oraValidationCo = new OraValidationCo(); oraValidationCo.OrarendiOraValidationCo = ConvertToOrarendiOraValidationCo(orarendiOra); oraValidationCo.OrarendiOraValidationCo.Id = null; oraValidationCo.IsChanged = true; //Központi óra miatt itt muszáj mentenünk SaveOrUpdateOrarendiOrak(dalHandler, oraValidationCo, FelhasznaloId); } } return true; } private bool SaveOrUpdateOrarendiOrak(IDalHandler dalHandler, OraValidationCo co, int modifier) { if (!co.IsChanged)//ha nem volt feluleten modositas akkor nem mentunk semmit { return true; } var tanevInfo = new TanevHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetTanevInfo(); if (co.OrarendiOraValidationCo.OraErvenyessegKezdete.Date == co.OrarendiOraValidationCo.OraErvenyessegVege.Date) { TanevrendHelper tanevrendjeHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)); if (!tanevrendjeHelper.IsOrarendiNap(co.OrarendiOraValidationCo.OraErvenyessegKezdete.Date, co.OrarendiOraValidationCo.OsztalyId, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra)) { throw new BlException(OrarendResource.NemOrarendiNapHibaUzenet); } } ValidateCo(co.OrarendiOraValidationCo); var oraDal = dalHandler.OrarendiOra(); var helyettesitesDAL = dalHandler.HelyettesitesDAL(); var oOra = co.OrarendiOraValidationCo.Id.HasValue ? oraDal.Get(co.OrarendiOraValidationCo.Id.Value) : oraDal.Get(); //csak a Date rész a fontos (majd Date típus kellene a DB-ben is) co.OrarendiOraValidationCo.OraErvenyessegKezdete = co.OrarendiOraValidationCo.OraErvenyessegKezdete.Date; co.OrarendiOraValidationCo.OraErvenyessegVege = co.OrarendiOraValidationCo.OraErvenyessegVege.Date; if (!co.OrarendiOraValidationCo.Id.HasValue || !co.OrarendiOraValidationCo.IsModification) { if (co.OrarendiOraValidationCo.IsMentorOra && (co.OrarendiOraValidationCo.ModositasiIdoszakTipus == (int)OraModositasiIdoszakTipus.TeljesIdoszak || co.OrarendiOraValidationCo.ModositasiIdoszakTipus == (int)OraModositasiIdoszakTipus.AdottNaptol)) { co.OrarendiOraValidationCo.OraErvenyessegVege = tanevInfo.UtolsoNap.AddDays(1); } co.OrarendiOraValidationCo.Id = AddNewOrarendiOra(co.OrarendiOraValidationCo, oOra, oraDal, helyettesitesDAL, groupId: null, regiOraIdHelyettesitesekUpdate: null); SaveOrUpdateOrarendiOraTulajdonsag(oraDal, co.OrarendiOraValidationCo); OrarendValtozasCacheMentes(co.OrarendiOraValidationCo.Id, oraKezdete: oOra.OraKezdete); return true; } var eredetiGroupId = oOra.OrarendiOraGroupId; if (co.TorlendoHelyettesitesek.Count > 0) {// Helyettesitesek torlese foreach (OrarendiOraTanitasiOraCo item in co.TorlendoHelyettesitesek) { int tanitasiOaID = item.Id; if (tanitasiOaID != 0 && item.OraTipus != nameof(CalendarOraTypeEnum.OrarendiOra)) { var tanitasiOraDAL = dalHandler.TanitasiOra(); var tanitasiOra = tanitasiOraDAL.Get(tanitasiOaID); tanitasiOra.OrarendiOraGroupId = null; tanitasiOraDAL.Update(tanitasiOra); } helyettesitesDAL.Delete(item.HelyettesitesId.Value); } } if (co.TorlendoSzamonkeresElorejelzesek.Count > 0) {// Helyettesitesek torlese var szamonkeresElorejelzesDAL = dalHandler.SzamonkeresElorejelzes(); foreach (BejelentettSzamonkeresekItemCo item in co.TorlendoSzamonkeresElorejelzesek) { szamonkeresElorejelzesDAL.Delete(item.Id); } } if (co.OrarendiOraValidationCo.OsztalyId != oOra.OsztalyCsoportId || co.OrarendiOraValidationCo.TanarId != oOra.TanarId || co.OrarendiOraValidationCo.TantargyId != oOra.TantargyId || co.OrarendiOraValidationCo.Oraszam != oOra.Oraszam || co.OrarendiOraValidationCo.OraKezdete != oOra.OraKezdete || co.OrarendiOraValidationCo.OraVege != oOra.OraVege) { dalHandler.TanitasiOra().UpdateOrarendiOraGroupIds(oOra.ID, oOra.OrarendiOraGroupId, co.OrarendiOraValidationCo.OraErvenyessegKezdete, co.OrarendiOraValidationCo.OraErvenyessegVege, co.OrarendiOraValidationCo.ModificationDate, co.OrarendiOraValidationCo.ModositasiIdoszakTipus, modifier); } var eredetiKezdete = oOra.OraErvenyessegKezdete; var eredetiVege = oOra.OraErvenyessegVege.Value; var modositottGroupId = co.OsztalyTanarTantargyModosult ? (int?)null : co.GroupId.HasValue ? co.GroupId : eredetiGroupId; switch (co.OrarendiOraValidationCo.ModositasiIdoszakTipus) { default: case (int)OraModositasiIdoszakTipus.TeljesIdoszak: UpdateOrarendiOraTeljesIdoszak(co.OrarendiOraValidationCo, oOra, oraDal); SaveOrUpdateOrarendiOraTulajdonsag(oraDal, co.OrarendiOraValidationCo); break; case (int)OraModositasiIdoszakTipus.AdottNapig: // bal oldal (új óra) co.OrarendiOraValidationCo.OraErvenyessegKezdete = eredetiKezdete; co.OrarendiOraValidationCo.OraErvenyessegVege = co.OrarendiOraValidationCo.ModificationDate.Date.AddDays(1); var newOra_napig = oraDal.Get(); if (co.OrarendiOraValidationCo.OraErvenyessegKezdete <= co.OrarendiOraValidationCo.OraErvenyessegVege) { co.OrarendiOraValidationCo.Id = AddNewOrarendiOra(co.OrarendiOraValidationCo, newOra_napig, oraDal, helyettesitesDAL, modositottGroupId, regiOraIdHelyettesitesekUpdate: oOra.ID); SaveOrUpdateOrarendiOraTulajdonsag(oraDal, co.OrarendiOraValidationCo); } // jobb oldal (eredeti óra) oOra.OraErvenyessegKezdete = co.OrarendiOraValidationCo.ModificationDate.Date.AddDays(1); if (oOra.OraErvenyessegKezdete <= oOra.OraErvenyessegVege) { oraDal.FullUpdate(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } else { oraDal.Delete(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } break; case (int)OraModositasiIdoszakTipus.AdottNaptol: // jobb oldal (új óra) co.OrarendiOraValidationCo.OraErvenyessegKezdete = co.OrarendiOraValidationCo.ModificationDate.Date; var utolsoTanitasiNap = tanevInfo.UtolsoTanitasiNap; if (eredetiVege.Date.AddDays(1) <= utolsoTanitasiNap) { co.OrarendiOraValidationCo.OraErvenyessegVege = eredetiVege.Date.AddDays(1); } else { co.OrarendiOraValidationCo.OraErvenyessegVege = eredetiVege.Date; } var newOra_naptol = oraDal.Get(); if (co.OrarendiOraValidationCo.OraErvenyessegKezdete < co.OrarendiOraValidationCo.OraErvenyessegVege) { co.OrarendiOraValidationCo.Id = AddNewOrarendiOra(co.OrarendiOraValidationCo, newOra_naptol, oraDal, helyettesitesDAL, modositottGroupId, regiOraIdHelyettesitesekUpdate: oOra.ID); SaveOrUpdateOrarendiOraTulajdonsag(oraDal, co.OrarendiOraValidationCo); } // bal oldal (eredeti óra) oOra.OraErvenyessegVege = co.OrarendiOraValidationCo.ModificationDate.Date; if (eredetiKezdete == eredetiVege.Date.AddDays(1) || oOra.OraErvenyessegKezdete < oOra.OraErvenyessegVege) { oraDal.FullUpdate(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } else { oraDal.Delete(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } break; case (int)OraModositasiIdoszakTipus.EgyOra: // jobb oldal (eredeti óra) var newOra_egynap = oraDal.Get(); var newOra_egynapCO = ConvertToOrarendiOraValidationCo(oOra); newOra_egynapCO.IsFromSzervezet = co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra; if (co.OrarendiOraValidationCo.ModificationDate.Date.AddDays(1) < eredetiVege) { newOra_egynapCO.OraErvenyessegKezdete = co.OrarendiOraValidationCo.ModificationDate.Date.AddDays(1); newOra_egynapCO.OraErvenyessegVege = eredetiVege; newOra_egynapCO.Id = 0; var newOraId = AddNewOrarendiOra(newOra_egynapCO, newOra_egynap, oraDal, helyettesitesDAL, eredetiGroupId, regiOraIdHelyettesitesekUpdate: oOra.ID); DuplicateOrarendiOraTulajdonsag(eredetiGroupId.Value, newOraId); } // új co.OrarendiOraValidationCo.OraErvenyessegKezdete = co.OrarendiOraValidationCo.ModificationDate.Date; co.OrarendiOraValidationCo.OraErvenyessegVege = co.OrarendiOraValidationCo.ModificationDate.Date; var newOra_egynap2 = oraDal.Get(); co.OrarendiOraValidationCo.Id = AddNewOrarendiOra(co.OrarendiOraValidationCo, newOra_egynap2, oraDal, helyettesitesDAL, modositottGroupId, regiOraIdHelyettesitesekUpdate: oOra.ID); SaveOrUpdateOrarendiOraTulajdonsag(oraDal, co.OrarendiOraValidationCo); // bal oldal (eredeti óra) oOra.OraErvenyessegVege = co.OrarendiOraValidationCo.ModificationDate.Date; if (oOra.OraErvenyessegKezdete < oOra.OraErvenyessegVege) { oraDal.FullUpdate(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } else { oraDal.Delete(oOra, co.OrarendiOraValidationCo.IsFromSzervezet || co.OrarendiOraValidationCo.IsMentorOra); } break; } dalHandler.OrarendiOra().GenerateTeljesOrarend(IntezmenyId, TanevId); return true; } public DataSet GetOrarendiOrakByTantargyId(int tantargyId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(GridParameters); return dal.GetOrarendiOrakByTantargyId(tantargyId, TanevId); }); } public ElozoOraAdataiCO GetElozoOraAdatai(int tantargyId, int osztalyCsoportId, int tanarId, DateTime oraKezdete) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(GridParameters); var ds = dal.GetElozoOraAdatai(tantargyId, osztalyCsoportId, tanarId, oraKezdete, IntezmenyId, TanevId); var result = new ElozoOraAdataiCO(); if (ds.Tables[0].Rows.Count > 0) { var row = ds.Tables[0].Rows[0]; if (!SDAConvert.ToNullableInt32(row["Id"]).HasValue) { return null; } result.ElozoOraTemaja = SDAConvert.ToString(row["Tema"]); DateTime? datum = SDAConvert.ToDateTime(row["Datum"]); string elozoOraDatuma = datum.HasValue ? datum.Value.ToString("yyyy.MM.dd.") : string.Empty; int? evesSorszam = SDAConvert.ToNullableInt32(row["EvesSorszam"]); result.ElozoOraEvesSorszama = evesSorszam.HasValue ? evesSorszam.ToString() : OrarendResource.NemSzamozott; string helyettes = string.Empty; string helyettesNev = SDAConvert.ToString(row["HelyettesNev"]); if (!string.IsNullOrWhiteSpace(helyettesNev)) { helyettes = $"{OrarendResource.Helyettesitett}: {helyettesNev}"; } result.ElozoOraAdatai = $"{result.ElozoOraTemaja}, {elozoOraDatuma} {OrarendResource.EvesSorszama}: {result.ElozoOraEvesSorszama}. {helyettes}"; return result; } return null; }); } public ElozoOraAdataiCO GetElozoOraAdataiMobile(int tantargyId, int osztalyCsoportId, int tanarId, DateTime oraKezdete) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(GridParameters); var ds = dal.GetElozoOraAdatai(tantargyId, osztalyCsoportId, tanarId, oraKezdete, IntezmenyId, TanevId); var result = new ElozoOraAdataiCO(); if (ds.Tables[0].Rows.Count > 0) { var row = ds.Tables[0].Rows[0]; if (!SDAConvert.ToNullableInt32(row["Id"]).HasValue) { return null; } var datum = SDAConvert.ToDateTime(row["Datum"]); string elozoOraDatuma = datum.HasValue ? datum.Value.ToString("yyyy.MM.dd.") : string.Empty; int? evesSorszam = SDAConvert.ToNullableInt32(row["EvesSorszam"]); result.ElozoOraTemaja = SDAConvert.ToString(row["Tema"]); result.ElozoOraEvesSorszama = evesSorszam.HasValue ? evesSorszam.ToString() : null; result.ElozoOraAdatai = $"{elozoOraDatuma} {result.ElozoOraTemaja}"; return result; } return null; }); } public int GetHetirend(int orarendioraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var oOra = h.OrarendiOra().Get(orarendioraId); return oOra.Hetirend; }); } public OrarendiOraCO GetOrarendiOraById(int orarendioraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var oOra = h.OrarendiOra().Get(orarendioraId); var result = new OrarendiOraCO { ID = orarendioraId, Bontott = oOra.Bontott, CsengetesiRendOraID = oOra.CsengetesirendOraId.HasValue ? oOra.CsengetesirendOraId.Value : -1, CsengetesiRendID = oOra.CsengetesirendId, Differencialt = oOra.Differencialt, Drama = oOra.Drama, FoglalkozasID = oOra.FoglalkozasId > 0 ? oOra.FoglalkozasId : (int?)null, Hetirend = oOra.Hetirend, HetNapja = oOra.HetNapja, IKTTanora = oOra.IKTTanora, IPRTanora = oOra.IPRTanora, Kooperativ = oOra.Kooperativ, Meres = oOra.Meres, MindennaposTestneveles = oOra.MindennaposTestneveles, NemSzakrendszeruOra = oOra.NemSzakrendszeruOra, NemzetisegiOra = oOra.NemzetisegiOra, IsFelnottoktatasiSzerzodes = oOra.IsFelnottoktatasiSzerzodes, OraErvenyessegKezdete = oOra.OraErvenyessegKezdete, OraErvenyessegVege = oOra.OraErvenyessegVege.Value, OraKezdete = oOra.OraKezdete.Value, OraVege = oOra.OraVege.Value, Oraszam = oOra.Oraszam, OsztalyCsoportId = oOra.OsztalyCsoportId, ParhuzamosOra = oOra.ParhuzamosOra, Sorszamozando = oOra.Sorszamozando, TAMOPOra = oOra.TAMOPOra, KIPOra = oOra.KIPOra, VEKOP73317 = oOra.VEKOP73317, KAPOra = oOra.KAPOra, TantargyId = oOra.TantargyId, TeremID = oOra.TeremId, TanarId = oOra.TanarId, Tiop = oOra.TIOP12, Tulora = oOra.Tulora, Multikulturalis = oOra.MultikulturalisOra, EFOP32317 = oOra.EFOP32317, KomplexOra = oOra.KomplexOra, GINOP623 = oOra.GINOP623, EFOP31716EselyteremtesAKoznevelesben = oOra.EFOP31716, EFOP33717 = oOra.EFOP33717, TIOP11112120120001 = oOra.TIOP1111212012001, DFHT = oOra.IsDfhtOra, Rahangolodas = oOra.IsRahangolodas, Testmozgas = oOra.IsTestmozgasAlapuAlprogram, Muveszet = oOra.IsMuveszetAlapuAlprogram, Eletgyakorlat = oOra.IsEletgyakorlatAlapuAlprogram, Logika = oOra.IsLogikaAlapuAlprogram, TeOrad = oOra.IsTeorad, DigitalisAlapProgram = oOra.IsDigitalisAlapuAlprogram, TeremNev = oOra.Terem.Nev, HetNapjaNev = oOra.HetNapja.GetDisplayName(TanevId), OsztalyCsoportNev = oOra.OsztalyCsoport.Nev, TanarNev = oOra.OraTulajdonos?.NyomtatasiNev, TanarAlkalmazottNev = oOra.Tanar?.NyomtatasiNev, TantargyNev = oOra.Tantargy.Nev, HetirendNev = oOra.Hetirend.GetDisplayName(TanevId), TanoranKivuliFoglalkozas = !oOra.CsengetesirendId.HasValue, EFOP23517201700038Miapalya = oOra.EFOP23517, }; //GetOrarendiOraTulajdonsagok(result, oOra.OrarendiOraGroupId.HasValue ? oOra.OrarendiOraGroupId.Value : orarendioraId); GetOrarendiOraTulajdonsagok(result, orarendioraId); if (!oOra.Oraszam.HasValue) { result.OraIdopont = $"{result.OraKezdete.ToShortTimeString()} - {result.OraVege.ToShortTimeString()}"; } if (oOra.FoglalkozasId.IsEntityId()) { IFoglalkozas foglalkozas = GetFoglalkozas(h.Foglalkozas(), oOra.FoglalkozasId); result.FoglalkozasNev = foglalkozas != null ? oOra.Foglalkozas.Nev : string.Empty; } if (oOra.CsengetesirendId.IsEntityId()) { ICsengetesiRend csengetesiRend = GetCsengetesiRend(h.CsengetesiRend(), oOra.CsengetesirendId ?? 0); result.CsengetesiRendNev = csengetesiRend != null ? csengetesiRend.Nev : string.Empty; } return result; }); } public void GetOrarendiOraTulajdonsagok(OrarendiOraCO orarendiOraCO, int orarendioraId) { var ds = GetOrarendiOraTulajdonsag(orarendioraId); if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { foreach (DataRow row in ds.Tables[0].Rows) { var oraTulajdonsagId = SDAConvert.ToInt32(row["OraTulajdonsagId"]); var oraTulajdonsagTipusEnum = (OraTulajdonsagTipusEnum)oraTulajdonsagId; var ertek = SDAConvert.ToBooleanFromTF(row["Ertek"]); switch (oraTulajdonsagTipusEnum) { case OraTulajdonsagTipusEnum.online_ora: orarendiOraCO.OnlineOra = ertek; break; case OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_ismetlese: orarendiOraCO.TanevTananyaganakIsmetlese = ertek; break; case OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_kiegeszitese: orarendiOraCO.TanevTananyaganakKiegeszitese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_digitalis_keszsegfejlesztese: orarendiOraCO.TanulokDigitalisKeszsegfejlesztese = ertek; break; case OraTulajdonsagTipusEnum.projektmunka: orarendiOraCO.Projektmunka = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_iraskeszseg_fejlesztese: orarendiOraCO.TanulokKompenzaciosIraskeszsegFejlesztese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_olvasasi_kepesseg_fejlesztese: orarendiOraCO.TanulokKompenzaciosOlvasasiKepessegFejlesztese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_matematikai_gondolkodasi_kepessegenek_kompenzacios_fejlesztese: orarendiOraCO.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_nyelvi_kepessegenek_kompenzacios_fejlesztese: orarendiOraCO.TanulokNyelviKepessegenekKompenzaciosFejlesztese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_onmegismeresenek_segitese: orarendiOraCO.TanulokOnmegismeresenekSegitese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_onallosagra_nevelese: orarendiOraCO.TanulokOnallosagraNevelese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_tanulasszervezesi_kompenzacios_technikajanak_erositese: orarendiOraCO.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_orientacios_tamogatasa: orarendiOraCO.TanulokOrientaciosTamogatasa = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_szocialitasanak_fejlesztese: orarendiOraCO.TanulokSzocialitasanakFejlesztese = ertek; break; case OraTulajdonsagTipusEnum.a_tanulok_tovabbhaladasat_elokeszito_tevekenysegek: orarendiOraCO.TanulokTovabbhaladasatElokeszitoTevekenysegek = ertek; break; case OraTulajdonsagTipusEnum.pedagogus_altal_jelzett_egyeni_esetkezeles: orarendiOraCO.PedagogusAltalJelzettEgyeniEsetkezeles = ertek; break; case OraTulajdonsagTipusEnum.projektmunka_tamogatasa: orarendiOraCO.ProjektmunkaTamogatasa = ertek; break; case OraTulajdonsagTipusEnum.digitalis_keszsegfejlesztes: orarendiOraCO.DigitalisKeszsegfejlesztes = ertek; break; case OraTulajdonsagTipusEnum.kozossegi_munka_tamogatasa: orarendiOraCO.KozossegiMunkaTamogatasa = ertek; break; case OraTulajdonsagTipusEnum.tanora_elokeszitesenek_tamogatasa: orarendiOraCO.TanoraElokeszitesenekTamogatasa = ertek; break; case OraTulajdonsagTipusEnum.tanora_lebonyolitasanak_tamogatasa: orarendiOraCO.TanoraLebonyolitasanakTamogatasa = ertek; break; case OraTulajdonsagTipusEnum.napkozis_tevekenyseg_kereteben_egyeni_fejlesztes: orarendiOraCO.NapkozisTevekenysegKeretebenEgyeniFejlesztes = ertek; break; case OraTulajdonsagTipusEnum.egybefuggo_szakmai_gyakorlat: orarendiOraCO.IsEgybefuggoGyakorlat = ertek; break; default: break; } } } } private DataSet GetOrarendiOraTulajdonsag(int orarendiOraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); return dal.GetOrarendiOraTulajdonsag(orarendiOraId, TanevId); }); } private void SaveOrUpdateOrarendiOraTulajdonsag(IOrarendiOraDal orarendiOraDal, OrarendiOraValidationCo co) { var oraTulajdonsagok = GetOraTulajdonsagok(co); if (co.Id.IsEntityId()) { orarendiOraDal.SaveOrUpdateOrarendiOraTulajdonsag(oraTulajdonsagok, co.Id.Value, IntezmenyId, TanevId); } } private void DuplicateOrarendiOraTulajdonsag(int oldOrarendiOraId, int newOrarendiOraId) { Dal.CustomConnection.Run(ConnectionType, (h) => { h.OrarendiOra().DuplicateOrarendiOraTulajdonsag(oldOrarendiOraId, newOrarendiOraId); }); } private Dictionary GetOraTulajdonsagok(OrarendiOraValidationCo co) { var oraTulajdonsagok = new Dictionary(); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.online_ora, co.OnlineOra); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_ismetlese, co.TanevTananyaganakIsmetlese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_kiegeszitese, co.TanevTananyaganakKiegeszitese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_digitalis_keszsegfejlesztese, co.TanulokDigitalisKeszsegfejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.projektmunka, co.Projektmunka); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_iraskeszseg_fejlesztese, co.TanulokKompenzaciosIraskeszsegFejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_olvasasi_kepesseg_fejlesztese, co.TanulokKompenzaciosOlvasasiKepessegFejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_matematikai_gondolkodasi_kepessegenek_kompenzacios_fejlesztese, co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_nyelvi_kepessegenek_kompenzacios_fejlesztese, co.TanulokNyelviKepessegenekKompenzaciosFejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_onmegismeresenek_segitese, co.TanulokOnmegismeresenekSegitese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_onallosagra_nevelese, co.TanulokOnallosagraNevelese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_tanulasszervezesi_kompenzacios_technikajanak_erositese, co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_orientacios_tamogatasa, co.TanulokOrientaciosTamogatasa); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_szocialitasanak_fejlesztese, co.TanulokSzocialitasanakFejlesztese); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.a_tanulok_tovabbhaladasat_elokeszito_tevekenysegek, co.TanulokTovabbhaladasatElokeszitoTevekenysegek); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.pedagogus_altal_jelzett_egyeni_esetkezeles, co.PedagogusAltalJelzettEgyeniEsetkezeles); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.projektmunka_tamogatasa, co.ProjektmunkaTamogatasa); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.digitalis_keszsegfejlesztes, co.DigitalisKeszsegfejlesztes); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.kozossegi_munka_tamogatasa, co.KozossegiMunkaTamogatasa); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.tanora_elokeszitesenek_tamogatasa, co.TanoraElokeszitesenekTamogatasa); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.tanora_lebonyolitasanak_tamogatasa, co.TanoraLebonyolitasanakTamogatasa); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.napkozis_tevekenyseg_kereteben_egyeni_fejlesztes, co.NapkozisTevekenysegKeretebenEgyeniFejlesztes); oraTulajdonsagok.Add((int)OraTulajdonsagTipusEnum.egybefuggo_szakmai_gyakorlat, co.IsEgybefuggoGyakorlat); return oraTulajdonsagok; } private OrarendiOraValidationCo ConvertToOrarendiOraValidationCo(IOrarendiOra oOra) { return new OrarendiOraValidationCo { Id = oOra.ID, Bontott = oOra.Bontott, CsengetesiRendOraId = oOra.CsengetesirendOraId.HasValue ? oOra.CsengetesirendOraId.Value : -1, CsengetesiRendId = oOra.CsengetesirendId, Differencialt = oOra.Differencialt, Drama = oOra.Drama, FoglalkozasID = oOra.FoglalkozasId > 0 ? oOra.FoglalkozasId : (int?)null, HetirendId = oOra.Hetirend, HetNapjaId = oOra.HetNapja, IKTTanora = oOra.IKTTanora, IPRTanora = oOra.IPRTanora, Kooperativ = oOra.Kooperativ, Meres = oOra.Meres, MindennaposTestneveles = oOra.MindennaposTestneveles, NemSzakrendszeruOra = oOra.NemSzakrendszeruOra, NemzetisegiOra = oOra.NemzetisegiOra, IsFelnottoktatasiSzerzodes = oOra.IsFelnottoktatasiSzerzodes, OraErvenyessegKezdete = oOra.OraErvenyessegKezdete, OraErvenyessegVege = oOra.OraErvenyessegVege.Value, OraKezdete = oOra.OraKezdete.Value, OraVege = oOra.OraVege.Value, Oraszam = oOra.Oraszam, OsztalyId = oOra.OsztalyCsoportId, ParhuzamosOra = oOra.ParhuzamosOra, Sorszamozando = oOra.Sorszamozando, TAMOPOra = oOra.TAMOPOra, KIPOra = oOra.KIPOra, VEKOP73317 = oOra.VEKOP73317, KAPOra = oOra.KAPOra, TantargyId = oOra.TantargyId, TeremId = oOra.TeremId, TanarId = oOra.TanarId, Tiop = oOra.TIOP12, Tulora = oOra.Tulora, Multikulturalis = oOra.MultikulturalisOra, EFOP32317 = oOra.EFOP32317, KomplexOra = oOra.KomplexOra, GINOP623 = oOra.GINOP623, EFOP31716EselyteremtesAKoznevelesben = oOra.EFOP31716, EFOP33717 = oOra.EFOP33717, TIOP11112120120001 = oOra.TIOP1111212012001, DFHT = oOra.IsDfhtOra, Rahangolodas = oOra.IsRahangolodas, Testmozgas = oOra.IsTestmozgasAlapuAlprogram, Muveszet = oOra.IsMuveszetAlapuAlprogram, Eletgyakorlat = oOra.IsEletgyakorlatAlapuAlprogram, Logika = oOra.IsLogikaAlapuAlprogram, TeOrad = oOra.IsTeorad, DigitalisAlapProgram = oOra.IsDigitalisAlapuAlprogram, IsEgyediNap = oOra.EgyediNap, KozpontiOraGroupId = oOra.KozpontiOraGroupId, KozpontilagToroltOraGroupId = oOra.KozpontilagToroltOraGroupID, Torolt = oOra.Torolt, EFOP23517201700038Miapalya = oOra.EFOP23517, GroupId = oOra.OrarendiOraGroupId, OnlineOra = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.online_ora), DigitalisKeszsegfejlesztes = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.digitalis_keszsegfejlesztes), KozossegiMunkaTamogatasa = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.kozossegi_munka_tamogatasa), NapkozisTevekenysegKeretebenEgyeniFejlesztes = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.napkozis_tevekenyseg_kereteben_egyeni_fejlesztes), PedagogusAltalJelzettEgyeniEsetkezeles = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.pedagogus_altal_jelzett_egyeni_esetkezeles), Projektmunka = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.projektmunka), ProjektmunkaTamogatasa = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.projektmunka_tamogatasa), TanevTananyaganakIsmetlese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_ismetlese), TanevTananyaganakKiegeszitese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum._2019_2020_as_tanev_tananyaganak_kiegeszitese), TanoraElokeszitesenekTamogatasa = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.tanora_elokeszitesenek_tamogatasa), TanoraLebonyolitasanakTamogatasa = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.tanora_lebonyolitasanak_tamogatasa), TanulokDigitalisKeszsegfejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_digitalis_keszsegfejlesztese), TanulokKompenzaciosIraskeszsegFejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_iraskeszseg_fejlesztese), TanulokKompenzaciosOlvasasiKepessegFejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_kompenzacios_olvasasi_kepesseg_fejlesztese), TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_matematikai_gondolkodasi_kepessegenek_kompenzacios_fejlesztese), TanulokNyelviKepessegenekKompenzaciosFejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_nyelvi_kepessegenek_kompenzacios_fejlesztese), TanulokOnallosagraNevelese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_onallosagra_nevelese), TanulokOnmegismeresenekSegitese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_onmegismeresenek_segitese), TanulokOrientaciosTamogatasa = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_orientacios_tamogatasa), TanulokSzocialitasanakFejlesztese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_szocialitasanak_fejlesztese), TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_tanulasszervezesi_kompenzacios_technikajanak_erositese), TanulokTovabbhaladasatElokeszitoTevekenysegek = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.a_tanulok_tovabbhaladasat_elokeszito_tevekenysegek), IsEgybefuggoGyakorlat = GetOrarendiOraTulajdonsagValue(oOra, OraTulajdonsagTipusEnum.egybefuggo_szakmai_gyakorlat), }; } private bool GetOrarendiOraTulajdonsagValue(IOrarendiOra oOra, OraTulajdonsagTipusEnum oraTulajdonsagTipusEnum) { return oOra.OrarendiOraTulajdonsag?.FirstOrDefault(x => x.OraTulajdonsagId == (int)oraTulajdonsagTipusEnum && !x.Torolt)?.BoolErtek ?? false; } private IFoglalkozas GetFoglalkozas(IFoglalkozasDal foglalkozasDal, int foglalkozasId) { try { return foglalkozasDal.Get(foglalkozasId); } catch { return null; } } private ICsengetesiRend GetCsengetesiRend(ICsengetesiRendDal csengetesiRendDal, int csengetesiRendId) { try { return csengetesiRendDal.Get(csengetesiRendId); } catch { return null; } } public int GetTanarIdByOrarendiOra(int orarendioraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var oOra = h.OrarendiOra().Get(orarendioraId); if (oOra.TanarId > 0) { return oOra.TanarId; } var oFoglalkozas = h.Foglalkozas().Get(oOra.FoglalkozasId); return oFoglalkozas.TanarId; }); } private List GetOrarendiOrakUtkozesValidaciohoz(IDalHandler dalHandler, DateTime ervenyessegKezdete, DateTime ervenyessegVege, int hetNapja, DateTime? oraKezdete, DateTime? oraVege) { List oraList = new List(); var dal = dalHandler.OrarendiOra(); DataSet ds = dal.GetOrarend(IntezmenyId, TanevId, ervenyessegKezdete, ervenyessegVege.AddDays(1), null, null, null, true, OrarendTipusEnum.Minden, null, null, false, null, oraKezdete, oraVege, hetNapja); if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { oraList = OrarendiOraTanitasiOraCo.MapOrarendiOraTanitasiOraCoListFromDataTable(ds.Tables[0]).ToList(); } return oraList; } public List GetGroupedKozpontiOrakForSpecificTime(DateTime ervenyessegKezdete, DateTime ervenyessegVege, DateTime? oraKezdete, DateTime? oraVege, int hanyadikOra) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var kozpontiOrak = GetOrarendiOrakForSpecificTime(h, ervenyessegKezdete, ervenyessegVege, oraKezdete, oraVege, hanyadikOra, true); List kozpontiOraList = new List(); foreach (IGrouping kozpontiOra in kozpontiOrak.GroupBy(i => i.KozpontiOraGroupId)) { var oraNevek = new List(); foreach (AdminKozpontiOrakOrarendiOraCo orarendiOra in kozpontiOra) { oraNevek.Add(orarendiOra.OsztalyNev); } kozpontiOraList.Add(new AdminKozpontiOrakOrarendiOraCo { KozpontiOraGroupId = kozpontiOra.Key, OsztalyNev = string.Join(", ", oraNevek), OraKezdete = kozpontiOra.FirstOrDefault()?.OraKezdete, OraVege = kozpontiOra.FirstOrDefault()?.OraVege, OraSorszam = kozpontiOra.FirstOrDefault()?.OraSorszam }); } return kozpontiOraList; }); } public List GetOrarendiOrakForSpecificTime(DateTime ervenyessegKezdete, DateTime ervenyessegVege, DateTime? oraKezdete, DateTime? oraVege, int hanyadikOra, bool onlyKozpontiOrak = false, Guid? kozpontiOraId = null) { return Dal.CustomConnection.Run(ConnectionType, (h) => GetOrarendiOrakForSpecificTime(h, ervenyessegKezdete, ervenyessegVege, oraKezdete, oraVege, hanyadikOra, onlyKozpontiOrak, kozpontiOraId)); } private List GetOrarendiOrakForSpecificTime(IDalHandler h, DateTime ervenyessegKezdete, DateTime ervenyessegVege, DateTime? oraKezdete, DateTime? oraVege, int hanyadikOra, bool onlyKozpontiOrak = false, Guid? kozpontiOraId = null) { var dal = h.OrarendiOra(); DataSet ds = dal.GetOrarend(IntezmenyId, TanevId, ervenyessegKezdete, ervenyessegVege.AddDays(1), null, null, null, true, OrarendTipusEnum.Minden, null, null, false, null, oraKezdete, oraVege, null); List oraList = AdminKozpontiOrakOrarendiOraCo.MapGridModelFromOrarendiOraTanitasiOraCoList(ds.Tables[0]).ToList(); return oraList.Where(i => i.OraSorszam.HasValue && i.OraSorszam.Value == hanyadikOra && (!onlyKozpontiOrak || i.KozpontiOraGroupId != null) && (kozpontiOraId == null || i.KozpontiOraGroupId == kozpontiOraId)).ToList(); } public void DeleteAllKozpontiOraByGroupId(Guid kozpontiOraGroupId, DateTime start, DateTime end, int hanyadikOra) { Dal.CustomConnection.Run(ConnectionType, (h) => { List kozpontiOraList = GetOrarendiOrakForSpecificTime(h, start, end, start, end, hanyadikOra, true, kozpontiOraGroupId); foreach (AdminKozpontiOrakOrarendiOraCo kozpontiOra in kozpontiOraList) { DeletOrarendiOra(h, kozpontiOra.Id, (int)OraModositasiIdoszakTipus.EgyOra, DateTime.Now); } }); } public List GetOrarendiOrakUtkozesKozpontiOraValidaciohoz(DateTime ervenyessegKezdete, DateTime ervenyessegVege, int hanyadikOra, List kozpontiOraList, bool onlyUtkozoOrak) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); DataSet ds = dal.GetOrarend(IntezmenyId, TanevId, ervenyessegKezdete, ervenyessegVege.AddDays(1), null, null, null, true, OrarendTipusEnum.Minden, null, null, false, null, null, null, null); List filteredOraList = new List(); if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { List oraList = AdminKozpontiOrakOrarendiOraCo.MapGridModelFromOrarendiOraTanitasiOraCoList(ds.Tables[0]).Where(o => o.OraSorszam == hanyadikOra).ToList(); foreach (AdminKozpontiOrakOrarendiOraCo orarendiOra in oraList) { bool partialConflict = false; bool fullConflict = false; bool noConflict = false; foreach (AdminSelectedKozpontiOraCo kozpontiOra in kozpontiOraList) { if ((kozpontiOra.OsztalyId == orarendiOra.OsztalyCsoportId || kozpontiOra.OsztalyId == orarendiOra.OsztalyBontasId) && kozpontiOra.TanarId == orarendiOra.TanarId && kozpontiOra.TeremId == orarendiOra.TeremId && kozpontiOra.OraSzam == orarendiOra.OraSorszam) { fullConflict = true; break; } if (kozpontiOra.OraSzam == orarendiOra.OraSorszam && ((kozpontiOra.OsztalyId == orarendiOra.OsztalyCsoportId || kozpontiOra.OsztalyId == orarendiOra.OsztalyBontasId) || kozpontiOra.TanarId == orarendiOra.TanarId)) { partialConflict = true; } else if (kozpontiOra.OraSzam == orarendiOra.OraSorszam && kozpontiOra.OsztalyId != orarendiOra.OsztalyCsoportId && kozpontiOra.OsztalyId != orarendiOra.OsztalyBontasId && kozpontiOra.TanarId != orarendiOra.TanarId) { noConflict = true; } } if (onlyUtkozoOrak && (fullConflict || partialConflict)) { orarendiOra.MustBeDeleted = fullConflict; filteredOraList.Add(orarendiOra); } if (!onlyUtkozoOrak && noConflict && !partialConflict && !fullConflict) { filteredOraList.Add(orarendiOra); } } } return filteredOraList; }); } private int TanevRendjeOraszamValidation(IDalHandler h, int osztaycsoportId, DateTime datum) { var dal = h.OrarendiOra(); return dal.TanevRendjeOraszamValidation(osztaycsoportId, datum, TanevId); } private bool OrarendiOraTeremKapacitasEllenorzes(IDalHandler h, int teremId, int osztCsopId) { var t = h.Terem().Get(teremId); var dal = h.Tanulo(); var ds = dal.GetCsoportTanuloi(osztCsopId, TanevId); int letszam = ds.Tables[0].Rows.Count; if (letszam > t.Kapacitas && t.Kapacitas > 0) { return true; } return false; } public DataSet GetOsztalyCsoportOrarendiOrai(int id, bool isFromSzervezet) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(GridParameters); return dal.GetOsztalyCsoportOrarendiOrai(id, TanevId, isFromSzervezet); }); } public DataSet GetOsztalyCsoportMegtartottOrai(int id) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.TanitasiOra(GridParameters); return dal.GetOsztalyCsoportMegtartottOrai(id, TanevId, IntezmenyId); }); } public DataSet GetOrarendiOrakForTerem(int teremId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(GridParameters); return dal.GetOrarendiOrakByTeremId(teremId, TanevId); }); } public void DeleteOrarendiElem(int orarendiOraId) { Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); dal.Delete(orarendiOraId); }); } public bool DeletOrarendiOra(int orarendiOraId, int tipus, DateTime torlesDate) { return Dal.CustomConnection.Run(ConnectionType, (h) => { return DeletOrarendiOra(h, orarendiOraId, tipus, torlesDate); }); } private bool DeletOrarendiOra(IDalHandler dalHandler, int orarendiOraId, int tipus, DateTime torlesDate) { var dal = dalHandler.OrarendiOra(); var helyettesitesdal = dalHandler.HelyettesitesDAL(); var ora = dal.Get(orarendiOraId); bool returnValue = false; try { var helyettesitesHelper = new HelyettesitesHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)); switch (tipus) { case (int)OraModositasiIdoszakTipus.EgyOra: var originOraErvenyyessegVege = ora.OraErvenyessegVege.Value.Date; helyettesitesHelper.DeleteHelyettesitesek(orarendiOraId, torlesDate.Date, torlesDate.Date); if (ora.OrarendiOraGroupId.HasValue) { dalHandler.SzamonkeresElorejelzes().DeleteAllByOraGroupIdAndIdoszak(TanevId, ora.OrarendiOraGroupId.Value, torlesDate.Date, torlesDate.Date); } if (ora.OraErvenyessegKezdete.Date == ora.OraErvenyessegVege.Value.Date) //Ha csak egy óra volt, akkor törlés, nincs dátum állítás és nem kell új órarendi óra sem { OrarendValtozasCacheMentes(orarendiOraId, torlesDate); dal.Delete(ora, false); returnValue = true; } else { if (ora.OraErvenyessegKezdete == torlesDate.Date) // NOTE: ha a sorozat első elemét akarja törölni, akkor a meglevő óra érvényesség kezdetét növeljük egy nappal, // és nincs szeletelés { ora.OraErvenyessegKezdete = torlesDate.AddDays(1).Date; } else { ora.OraErvenyessegVege = torlesDate.Date; TanevCO tanevNapjaiAdatok; TanevHelper helper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)); tanevNapjaiAdatok = helper.GetTanevInfo(); if (torlesDate.AddDays(1).Date <= originOraErvenyyessegVege.Date && tanevNapjaiAdatok.KezdoNap.Date <= torlesDate.Date && torlesDate.Date < tanevNapjaiAdatok.UtolsoNap.Date) { var newOra = dal.Get(); var validationCo = ConvertToOrarendiOraValidationCo(ora); validationCo.OraErvenyessegKezdete = torlesDate.AddDays(1).Date; validationCo.OraErvenyessegVege = originOraErvenyyessegVege.Date; validationCo.IsFromSzervezet = false; newOra.ID = AddNewOrarendiOra(validationCo, newOra, dal, helyettesitesdal, ora.OrarendiOraGroupId, regiOraIdHelyettesitesekUpdate: orarendiOraId); OrarendiOraCO co = new OrarendiOraCO(); GetOrarendiOraTulajdonsagok(co, orarendiOraId); SaveOrUpdateOrarendiOraTulajdonsag(dal, new OrarendiOraValidationCo { Id = newOra.ID, TanevTananyaganakIsmetlese = co.TanevTananyaganakIsmetlese, TanevTananyaganakKiegeszitese = co.TanevTananyaganakKiegeszitese, TanulokDigitalisKeszsegfejlesztese = co.TanulokDigitalisKeszsegfejlesztese, Projektmunka = co.Projektmunka, TanulokKompenzaciosIraskeszsegFejlesztese = co.TanulokKompenzaciosIraskeszsegFejlesztese, TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.TanulokKompenzaciosOlvasasiKepessegFejlesztese, TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese, TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.TanulokNyelviKepessegenekKompenzaciosFejlesztese, TanulokOnmegismeresenekSegitese = co.TanulokOnmegismeresenekSegitese, TanulokOnallosagraNevelese = co.TanulokOnallosagraNevelese, TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese, TanulokOrientaciosTamogatasa = co.TanulokOrientaciosTamogatasa, TanulokSzocialitasanakFejlesztese = co.TanulokSzocialitasanakFejlesztese, TanulokTovabbhaladasatElokeszitoTevekenysegek = co.TanulokTovabbhaladasatElokeszitoTevekenysegek, PedagogusAltalJelzettEgyeniEsetkezeles = co.PedagogusAltalJelzettEgyeniEsetkezeles, ProjektmunkaTamogatasa = co.ProjektmunkaTamogatasa, DigitalisKeszsegfejlesztes = co.DigitalisKeszsegfejlesztes, KozossegiMunkaTamogatasa = co.KozossegiMunkaTamogatasa, TanoraElokeszitesenekTamogatasa = co.TanoraElokeszitesenekTamogatasa, TanoraLebonyolitasanakTamogatasa = co.TanoraLebonyolitasanakTamogatasa, NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.NapkozisTevekenysegKeretebenEgyeniFejlesztes, IsEgybefuggoGyakorlat = co.IsEgybefuggoGyakorlat }); } } if (ora.OraErvenyessegKezdete.Date > ora.OraErvenyessegVege.Value.Date) { dal.Delete(ora, false); } else { dal.Update(ora, false); } returnValue = true; OrarendValtozasCacheMentes(orarendiOraId, torlesDate); } break; case (int)OraModositasiIdoszakTipus.AdottNaptol: OrarendValtozasCacheMentes(orarendiOraId, oraKezdete: ora.OraKezdete); helyettesitesHelper.DeleteHelyettesitesek(orarendiOraId, torlesDate.Date, ora.OraErvenyessegVege.Value.Date); if (ora.OrarendiOraGroupId.HasValue) { dalHandler.SzamonkeresElorejelzes().DeleteAllByOraGroupIdAndIdoszak(TanevId, ora.OrarendiOraGroupId.Value, torlesDate.Date, ora.OraErvenyessegVege.Value.Date); } if (torlesDate.Date <= ora.OraErvenyessegKezdete.Date) { dal.Delete(ora, false); returnValue = true; } else { ora.OraErvenyessegVege = torlesDate.Date; ora.OraErvenyessegKezdete = ora.OraErvenyessegKezdete.Date; dal.Update(ora, false); returnValue = true; } break; case (int)OraModositasiIdoszakTipus.AdottNapig: OrarendValtozasCacheMentes(orarendiOraId, oraKezdete: ora.OraKezdete); helyettesitesHelper.DeleteHelyettesitesek(orarendiOraId, ora.OraErvenyessegKezdete.Date, torlesDate.AddDays(1).Date); if (ora.OrarendiOraGroupId.HasValue) { dalHandler.SzamonkeresElorejelzes().DeleteAllByOraGroupIdAndIdoszak(TanevId, ora.OrarendiOraGroupId.Value, ora.OraErvenyessegKezdete.Date, torlesDate.AddDays(1).Date); } if (torlesDate.AddDays(1).Date >= ora.OraErvenyessegVege.Value.Date) { dal.Delete(ora, false); returnValue = true; } else { ora.OraErvenyessegKezdete = torlesDate.AddDays(1).Date; ora.OraErvenyessegVege = ora.OraErvenyessegVege.Value.Date; dal.Update(ora, false); returnValue = true; } break; case (int)OraModositasiIdoszakTipus.TeljesIdoszak: OrarendValtozasCacheMentes(orarendiOraId, oraKezdete: ora.OraKezdete); helyettesitesHelper.DeleteHelyettesitesek(orarendiOraId, ora.OraErvenyessegKezdete.Date, ora.OraErvenyessegVege.Value.Date); if (ora.OrarendiOraGroupId.HasValue) { dalHandler.SzamonkeresElorejelzes().DeleteAllByOraGroupIdAndIdoszak(TanevId, ora.OrarendiOraGroupId.Value, ora.OraErvenyessegKezdete.Date, ora.OraErvenyessegVege.Value.Date); } dal.Delete(ora, false); returnValue = true; break; } dalHandler.OrarendiOra().GenerateTeljesOrarend(IntezmenyId, TanevId); } catch (Framework.Entities.EntityDeleteFailedException) { return false; } return returnValue; } private bool DeletOrarendiOraCsere(IDalHandler dalHandler, int orarendiOraId, DateTime torlesDate) { return DeletOrarendiOra(dalHandler, orarendiOraId, (int)OraModositasiIdoszakTipus.EgyOra, torlesDate); } private bool SaveOrarendiOraCsere(IDalHandler dalHandler, OraValidationCo oraValidationCo, int modifier, DateTime saveDate) { oraValidationCo.OrarendiOraValidationCo.ModositasiIdoszakTipus = (int)OraModositasiIdoszakTipus.EgyOra; oraValidationCo.OrarendiOraValidationCo.Id = null; oraValidationCo.OrarendiOraValidationCo.ModificationDate = saveDate; oraValidationCo.OrarendiOraValidationCo.OraErvenyessegKezdete = saveDate; oraValidationCo.OrarendiOraValidationCo.OraErvenyessegVege = saveDate; return SaveOrUpdateOrarendiOrak(dalHandler, oraValidationCo, modifier); } public int GetOraszamByOrarendiOra(int id, CalendarOraTypeEnum calendarEnum) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var csengetesiRendOraDal = h.CsengetesiRendOrak(); var orarendiOraDal = h.OrarendiOra(); if (calendarEnum == CalendarOraTypeEnum.UresOra) { var csRend = csengetesiRendOraDal.Get(id); return csRend.Oraszam; } if (calendarEnum == CalendarOraTypeEnum.OrarendiOra) { var oOra = orarendiOraDal.Get(id); return oOra.Oraszam.Value; } return 0; }); } public bool NemkotottMunkaidoUtkozesEllenorzes(int tanarId, DateTime kezdet, DateTime veg, DateTime datum, int? hetirendId, string nemKotottMunkaIdoGroupId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); return dal.NemkotottMunkaidoUtkozesEllenorzes(IntezmenyId, TanevId, tanarId, kezdet, veg, datum, (int)HetiRendTipusEnum.MindegyikHet, hetirendId, nemKotottMunkaIdoGroupId); }); } public List GetElozoOranHianyzottTanulo(int tantargyId, int osztalycsoportId, DateTime datum) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); return dal.GetElozoOranHianyzottTanulo(tantargyId, osztalycsoportId, datum, TanevId, IntezmenyId); }); } private string CheckOrarendiOraOraszamIdopont(IDalHandler h, int csengetesiRendId, int oraszam, DateTime kezdet, DateTime vege) { var dal = h.CsengetesiRendOrak(); var ds = dal.CheckOrarendiOraOraszamIdopont(IntezmenyId, TanevId, csengetesiRendId, oraszam); if (ds.Tables[0].Rows.Count > 0) { DataRow row = ds.Tables[0].Rows[0]; if (new DateTime(2000, 01, 01, kezdet.Hour, kezdet.Minute, 0) != new DateTime(2000, 01, 01, row.Field("Kezdet").Hour, row.Field("Kezdet").Minute, 0) || new DateTime(2000, 01, 01, vege.Hour, vege.Minute, 0) != new DateTime(2000, 01, 01, row.Field("Vege").Hour, row.Field("Vege").Minute, 0)) { return $"{OrarendResource.OrarendiOraOraszamIdopont} ( {oraszam}.{OrarendResource.Ora} {row.Field("Kezdet"):HH:mm}-{row.Field("Vege"):HH:mm} )"; } return string.Empty; } return string.Empty; } public string CheckOrarendiOraOraszamIdopont(int csengetesiRendId, int oraszam, DateTime kezdet, DateTime vege) { return Dal.CustomConnection.Run(ConnectionType, (h) => CheckOrarendiOraOraszamIdopont(h, csengetesiRendId, oraszam, kezdet, vege)); } public void UpdateOsszefuggoSzakGyakosOrakErvenyessegKezdete(DateTime newSzakGyakKezdoDatum) { Dal.CustomConnection.Run(ConnectionType, (h) => { h.OrarendiOra().UpdateOsszefuggoSzakGyakosOrakErvenyessegKezdete(newSzakGyakKezdoDatum, TanevId); }); } public void UpdateOsszefuggoSzakGyakosOrakErvenyessegVege(DateTime newSzakGyakVegDatum) { Dal.CustomConnection.Run(ConnectionType, (h) => { h.OrarendiOra().UpdateOsszefuggoSzakGyakosOrakErvenyessegVege(newSzakGyakVegDatum, TanevId); }); } public int GetNemNaplozottTanorakCount(DateTime tanevKezdDatum, int? tanarSrc) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var ds = h.OrarendiOra().GetNemNaplozottOrarendiOrak(new DataAccessManual.ParameterClasses.NemNaplozottOrakPCO { IntezmenyId = IntezmenyId, TanevId = TanevId, Start = tanevKezdDatum, End = DateTime.Now.Date, TanarId = tanarSrc }); return ds.Tables[0].Rows.Count; }); } private static void UpdateOrarendiOraTeljesIdoszak(OrarendiOraValidationCo co, IOrarendiOra oOra, IOrarendiOraDal oraDal) { /*Todo: óra szeletelés megbeszélése mostmár lehetne*/ oOra.Hetirend = co.HetirendId; oOra.HetNapja = co.HetNapjaId; oOra.IKTTanora = co.IKTTanora; oOra.IPRTanora = co.IPRTanora; oOra.Kooperativ = co.Kooperativ; oOra.Meres = co.Meres; oOra.MindennaposTestneveles = co.MindennaposTestneveles; oOra.NemSzakrendszeruOra = co.NemSzakrendszeruOra; oOra.NemzetisegiOra = co.NemzetisegiOra; oOra.IsFelnottoktatasiSzerzodes = co.IsFelnottoktatasiSzerzodes; /*Egy óra érvényesség dátum módosítás miatt szükséges*/ if (co.OraErvenyessegKezdete == co.OraErvenyessegVege) { oOra.OraErvenyessegKezdete = co.OraErvenyessegKezdete; oOra.OraErvenyessegVege = co.OraErvenyessegVege; oOra.HetNapja = oraDal.GetHetNapjaByDate(co.OraErvenyessegKezdete); } else { if (oOra.OraErvenyessegKezdete == oOra.OraErvenyessegVege) { oOra.OraErvenyessegKezdete = co.OraErvenyessegKezdete; oOra.OraErvenyessegVege = co.OraErvenyessegVege.AddDays(1); } else { oOra.OraErvenyessegKezdete = co.OraErvenyessegKezdete; oOra.OraErvenyessegVege = co.OraErvenyessegVege; } } oOra.CsengetesirendId = co.CsengetesiRendId; oOra.OraKezdete = co.OraKezdete; oOra.OraVege = co.OraVege; if (co.Oraszam.HasValue) { oOra.Oraszam = co.Oraszam.Value; } if (co.CsengetesiRendOraId > 0) { oOra.CsengetesirendOraId = co.CsengetesiRendOraId; } if (co.FoglalkozasID.HasValue) { oOra.FoglalkozasId = co.FoglalkozasID.Value; } else { oOra.FoglalkozasId = -1; } if (co.OsztalyId.HasValue) { oOra.OsztalyCsoportId = co.OsztalyId.Value; } if (co.TantargyId.HasValue) { oOra.TantargyId = co.TantargyId.Value; } if (co.TanarId.HasValue) { oOra.TanarId = co.TanarId.Value; } oOra.Drama = co.Drama; oOra.ParhuzamosOra = co.ParhuzamosOra; oOra.Sorszamozando = co.Sorszamozando; oOra.TAMOPOra = co.TAMOPOra; oOra.KIPOra = co.KIPOra; oOra.VEKOP73317 = co.VEKOP73317; oOra.KAPOra = co.KAPOra; oOra.TeremId = co.TeremId; oOra.TIOP12 = co.Tiop; oOra.Tulora = co.Tulora; oOra.Bontott = co.Bontott; oOra.Differencialt = co.Differencialt; oOra.MultikulturalisOra = co.Multikulturalis; oOra.EFOP32317 = co.EFOP32317; oOra.KomplexOra = co.KomplexOra; oOra.GINOP623 = co.GINOP623; oOra.EFOP33717 = co.EFOP33717; oOra.EFOP31716 = co.EFOP31716EselyteremtesAKoznevelesben; oOra.TIOP1111212012001 = co.TIOP11112120120001; oOra.IsDfhtOra = co.DFHT; oOra.IsRahangolodas = co.Rahangolodas; oOra.IsTestmozgasAlapuAlprogram = co.Testmozgas; oOra.IsMuveszetAlapuAlprogram = co.Muveszet; oOra.IsEletgyakorlatAlapuAlprogram = co.Eletgyakorlat; oOra.IsLogikaAlapuAlprogram = co.Logika; oOra.IsTeorad = co.TeOrad; oOra.IsDigitalisAlapuAlprogram = co.DigitalisAlapProgram; oOra.EFOP23517 = co.EFOP23517201700038Miapalya; oraDal.FullUpdate(oOra, co.IsFromSzervezet || co.IsMentorOra); } private int AddNewOrarendiOra(OrarendiOraValidationCo co, IOrarendiOra oOra, IOrarendiOraDal oraDal, IHelyettesitesDAL helyettesitesDAL, int? groupId, int? regiOraIdHelyettesitesekUpdate = null) { oOra.Hetirend = co.HetirendId; oOra.HetNapja = co.HetNapjaId; oOra.IKTTanora = co.IKTTanora; oOra.IPRTanora = co.IPRTanora; oOra.Kooperativ = co.Kooperativ; oOra.Meres = co.Meres; oOra.MindennaposTestneveles = co.MindennaposTestneveles; oOra.NemSzakrendszeruOra = co.NemSzakrendszeruOra; oOra.NemzetisegiOra = co.NemzetisegiOra; oOra.IsFelnottoktatasiSzerzodes = co.IsFelnottoktatasiSzerzodes; oOra.OraErvenyessegKezdete = co.OraErvenyessegKezdete; oOra.OraErvenyessegVege = co.OraErvenyessegVege; oOra.OraKezdete = co.OraKezdete; oOra.OraVege = co.OraVege; if (groupId.HasValue) { oOra.OrarendiOraGroupId = groupId.Value; } else { oOra.OrarendiOraGroupId = null; } if (co.CsengetesiRendOraId > 0) { oOra.Oraszam = co.Oraszam; oOra.CsengetesirendOraId = co.CsengetesiRendOraId; oOra.CsengetesirendId = co.CsengetesiRendId; } else { oOra.Oraszam = null; oOra.CsengetesirendId = null; oOra.CsengetesirendOraId = null; } oOra.OraTulajdonosId = FelhasznaloId; if (co.FoglalkozasID.HasValue) { oOra.FoglalkozasId = co.FoglalkozasID.Value; } if (co.OsztalyId.HasValue) { oOra.OsztalyCsoportId = co.OsztalyId.Value; } if (co.TantargyId.HasValue) { oOra.TantargyId = co.TantargyId.Value; } if (co.TanarId.HasValue) { oOra.TanarId = co.TanarId.Value; } oOra.Drama = co.Drama; oOra.ParhuzamosOra = co.ParhuzamosOra; oOra.Sorszamozando = co.Sorszamozando; oOra.TAMOPOra = co.TAMOPOra; oOra.KIPOra = co.KIPOra; oOra.VEKOP73317 = co.VEKOP73317; oOra.KAPOra = co.KAPOra; oOra.TeremId = co.TeremId; oOra.TIOP12 = co.Tiop; oOra.MultikulturalisOra = co.Multikulturalis; oOra.EFOP32317 = co.EFOP32317; oOra.KomplexOra = co.KomplexOra; oOra.GINOP623 = co.GINOP623; oOra.EFOP33717 = co.EFOP33717; oOra.EFOP31716 = co.EFOP31716EselyteremtesAKoznevelesben; oOra.TIOP1111212012001 = co.TIOP11112120120001; oOra.IsDfhtOra = co.DFHT; oOra.IsRahangolodas = co.Rahangolodas; oOra.IsTestmozgasAlapuAlprogram = co.Testmozgas; oOra.IsMuveszetAlapuAlprogram = co.Muveszet; oOra.IsEletgyakorlatAlapuAlprogram = co.Eletgyakorlat; oOra.IsLogikaAlapuAlprogram = co.Logika; oOra.IsTeorad = co.TeOrad; oOra.IsDigitalisAlapuAlprogram = co.DigitalisAlapProgram; oOra.Tulora = co.Tulora; oOra.Bontott = co.Bontott; oOra.Differencialt = co.Differencialt; oOra.TanevId = TanevId; oOra.EgyediNap = co.IsEgyediNap; oOra.IsKezzelFelvettegyediNap = co.IsEgyediNap; oOra.KozpontiOraGroupId = co.KozpontiOraGroupId; oOra.KozpontilagToroltOraGroupID = co.KozpontilagToroltOraGroupId; oOra.EFOP23517 = co.EFOP23517201700038Miapalya; oOra.Torolt = co.Torolt; oraDal.Insert(oOra, co.IsFromSzervezet || co.IsMentorOra); if (regiOraIdHelyettesitesekUpdate.HasValue) { helyettesitesekUpdate(helyettesitesDAL, oOra, regiOraIdHelyettesitesekUpdate.Value, groupId); } return oOra.ID; } private void helyettesitesekUpdate(IHelyettesitesDAL helyettesitesDAL, IOrarendiOra oOra, int regiOraIdHelyettesitesekUpdate, int? groupId) { helyettesitesDAL.UpdateHelyettesitekUjOrarendiOraIdByDate(oOra.OraErvenyessegKezdete, oOra.OraErvenyessegVege, oOra.ID, regiOraIdHelyettesitesekUpdate, TanevId); } private void ValidateCo(OrarendiOraValidationCo co) { if (co.HetirendId == 0) { throw new ArgumentNullException("Hetirend"); } if (co.HetNapjaId == 0) { throw new ArgumentNullException("HetNapja"); } if (co.OraErvenyessegKezdete == default(DateTime)) { throw new ArgumentNullException("OraErvenyessegKezdete"); } if (co.TeremId == 0) { throw new ArgumentNullException("TeremID"); } if (co.OraErvenyessegKezdete > co.OraErvenyessegVege) { throw new ArgumentNullException("OraErvenyessegKezdete"); } if (co.OraKezdete >= co.OraVege) { throw new ArgumentException("OraKezdete"); } } private OrarendiOraValidationCo SetErvenyessegDatumok(IDalHandler dalHandler, OrarendiOraValidationCo co) { var saveType = co.Id.HasValue ? OraModositasTipus.OraModositas : OraModositasTipus.UjOra; DateTime elsoNap, utolsoNap; var tanevHelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)); var tanev = tanevHelper.GetTanevInfo(); elsoNap = tanev.OraFelvetelKezdete; utolsoNap = tanev.UtolsoTanitasiNap.AddDays(1); if (saveType == OraModositasTipus.UjOra) { if (new CsoportHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).IsNyariSzakmaiGyakorlatos(co.OsztalyId.Value)) { SystemSettingsHelper helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)); elsoNap = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum).Value; utolsoNap = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum).Value.AddDays(1); } else if (co.IsMentorOra) { utolsoNap = tanev.UtolsoNap.AddDays(1); } } else if (saveType == OraModositasTipus.OraModositas) { var oraDal = dalHandler.OrarendiOra(); var oOra = oraDal.Get(co.Id.Value); elsoNap = oOra.OraErvenyessegKezdete; utolsoNap = oOra.OraErvenyessegVege.Value; } switch (co.ModositasiIdoszakTipus) { case (int)OraModositasiIdoszakTipus.EgyOra: if (saveType == OraModositasTipus.OraModositas) { co.OraErvenyessegKezdete = co.ModificationDate.Date; co.OraErvenyessegVege = co.ModificationDate.Date; } break; case (int)OraModositasiIdoszakTipus.AdottNaptol: if (saveType == OraModositasTipus.OraModositas) { co.OraErvenyessegKezdete = co.ModificationDate.Date; } else { co.OraErvenyessegKezdete = co.OraErvenyessegKezdete.Date; co.OraErvenyessegVege = utolsoNap; } break; case (int)OraModositasiIdoszakTipus.AdottNapig: if (saveType == OraModositasTipus.UjOra) { co.OraErvenyessegKezdete = elsoNap; co.OraErvenyessegVege = co.OraErvenyessegVege.AddDays(1).Date; } else { co.OraErvenyessegVege = co.ModificationDate.AddDays(1).Date; } break; default: case (int)OraModositasiIdoszakTipus.TeljesIdoszak: if (saveType == OraModositasTipus.UjOra && !co.IsOraCopy && !co.IsFromSzervezet && !co.IsMentorOra) { co.OraErvenyessegKezdete = elsoNap.Date; co.OraErvenyessegVege = utolsoNap.Date; } break; } return co; } public IEnumerable GetTanarNapiOrarendjeOracserehez(int tanarId, DateTime start) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var ds = h.OrarendiOra().GetOrarend(IntezmenyId, TanevId, start, start.AddDays(1), tanarId, null, null, false, OrarendTipusEnum.Minden, null, null, true, null); return ds.Tables[0].AsEnumerable().Where(x => x.Field("OraTipus") == "OrarendiOra"); }); } public OracsereValidationCO SaveOracsere(int? oracsereOrarendiOraId, DateTime? oracsereOrarendiOraDatum, int calendarOrarendiOraId, DateTime? calendarOrarendiOraDatum, int modifier, bool isPrevalidation, bool isTeremcsere) { return Dal.CustomConnection.Run(ConnectionType, (h) => { OracsereValidationCO oracsereValidationCO; if (isPrevalidation) { oracsereValidationCO = ValidateOracsere(h, oracsereOrarendiOraId, oracsereOrarendiOraDatum, calendarOrarendiOraId, calendarOrarendiOraDatum, isPrevalidation, isThrowExceptionOnCollision: false, isTeremcsere); if (string.IsNullOrWhiteSpace(oracsereValidationCO.WarningMessage)) { SaveOracsereOrak(h, oracsereValidationCO.OracsereOrarendiOra, oracsereValidationCO.CalendarOrarendiOra, modifier); OrarendValtozasCacheMentes(oracsereOrarendiOraId, calendarOrarendiOraDatum); OrarendValtozasCacheMentes(calendarOrarendiOraId, oracsereOrarendiOraDatum); } } else { oracsereValidationCO = ValidateOracsere(h, oracsereOrarendiOraId, oracsereOrarendiOraDatum, calendarOrarendiOraId, calendarOrarendiOraDatum, isPrevalidation, isThrowExceptionOnCollision: false, isTeremcsere); if (oracsereValidationCO.OracsereOrarendiOra.ErrorMsg.Length == 0 && oracsereValidationCO.CalendarOrarendiOra.ErrorMsg.Length == 0) { SaveOracsereOrak(h, oracsereValidationCO.OracsereOrarendiOra, oracsereValidationCO.CalendarOrarendiOra, modifier); OrarendValtozasCacheMentes(oracsereOrarendiOraId, calendarOrarendiOraDatum); OrarendValtozasCacheMentes(calendarOrarendiOraId, oracsereOrarendiOraDatum); } } return oracsereValidationCO; }); } private void SaveOracsereOrak(IDalHandler h, OraValidationCo oracsereOrarendiOra, OraValidationCo calendarOrarendiOra, int modifier) { DeletOrarendiOraCsere(h, oracsereOrarendiOra.OrarendiOraValidationCo.Id.Value, oracsereOrarendiOra.OrarendiOraValidationCo.ModificationDate); DeletOrarendiOraCsere(h, calendarOrarendiOra.OrarendiOraValidationCo.Id.Value, calendarOrarendiOra.OrarendiOraValidationCo.ModificationDate); DateTime calendarOrarendiOraDate = GetNewDateTimeFromExisting(calendarOrarendiOra.OrarendiOraValidationCo.ModificationDate); DateTime oracsereOrarendiOraDate = GetNewDateTimeFromExisting(oracsereOrarendiOra.OrarendiOraValidationCo.ModificationDate); SaveOrarendiOraCsere(h, oracsereOrarendiOra, modifier, calendarOrarendiOraDate); SaveOrarendiOraCsere(h, calendarOrarendiOra, modifier, oracsereOrarendiOraDate); } private OracsereValidationCO ValidateOracsere(IDalHandler h, int? oracsereOrarendiOraId, DateTime? oracsereOrarendiOraDatum, int calendarOrarendiOraId, DateTime? calendarOrarendiOraDatum, bool isPrevalidation, bool isThrowExceptionOnCollision, bool isTeremcsere) { OracsereValidationCO oracsereValidationCO = new OracsereValidationCO(); if (oracsereOrarendiOraId.HasValue) { var orarendiOraDal = h.OrarendiOra(); var oracsereOra = orarendiOraDal.Get(oracsereOrarendiOraId.Value); var oracsereOraCalendar = orarendiOraDal.Get(calendarOrarendiOraId); if ((oracsereOra.CsengetesirendOraId.HasValue && !oracsereOraCalendar.CsengetesirendOraId.HasValue) || (!oracsereOra.CsengetesirendOraId.HasValue && oracsereOraCalendar.CsengetesirendOraId.HasValue)) { throw new BlException(OrarendResource.CsengetesiRendhezKotottOratNemLehetNapirenddekCserelni); } IdoponthozKapcsolodoAdatokFelcserelese(oracsereOra, oracsereOraCalendar); if (isTeremcsere) { var oracsereOraTeremId = oracsereOra.TeremId; oracsereOra.TeremId = oracsereOraCalendar.TeremId; oracsereOraCalendar.TeremId = oracsereOraTeremId; } string errMsgOraData1 = $"{oracsereOra.Tanar.NyomtatasiNev} - {oracsereOra.OsztalyCsoport.Nev} - {oracsereOra.Tantargy.Nev} - {oracsereOra.Terem.Nev} - {oracsereOrarendiOraDatum.Value} "; string errMsgOraData2 = $"{oracsereOraCalendar.Tanar.NyomtatasiNev} - {oracsereOraCalendar.OsztalyCsoport.Nev} - {oracsereOraCalendar.Tantargy.Nev} - {oracsereOraCalendar.Terem.Nev} - {calendarOrarendiOraDatum.Value} "; oracsereValidationCO.OracsereOrarendiOra = ConvertOrarendiOraToOraValidationCo(oracsereOra, oracsereOrarendiOraDatum); oracsereValidationCO.CalendarOrarendiOra = ConvertOrarendiOraToOraValidationCo(oracsereOraCalendar, calendarOrarendiOraDatum); if (CheckUtkozesValidation(h, oracsereValidationCO.OracsereOrarendiOra, errMsgOraData1, isPrevalidation: isPrevalidation, isThrowExceptionOnCollision) && CheckUtkozesValidation(h, oracsereValidationCO.CalendarOrarendiOra, errMsgOraData2, isPrevalidation: isPrevalidation, isThrowExceptionOnCollision)) { oracsereValidationCO.WarningMessage = CreateWarningMessageAndThrowError(h, oracsereOra, oracsereOraCalendar, oracsereValidationCO.OracsereOrarendiOra, oracsereValidationCO.CalendarOrarendiOra, oracsereOrarendiOraDatum, calendarOrarendiOraDatum); oracsereValidationCO.IsOracsereTeremcsereNelkulAktiv = !((oracsereValidationCO.OracsereOrarendiOra.OrarendiOraValidationCo.HasTeremutkozes && oracsereValidationCO.OracsereOrarendiOra.OrarendiOraValidationCo.TeremutkozesSystemSetting == 1) || (oracsereValidationCO.CalendarOrarendiOra.OrarendiOraValidationCo.HasTeremutkozes && oracsereValidationCO.CalendarOrarendiOra.OrarendiOraValidationCo.TeremutkozesSystemSetting == 1)); } return oracsereValidationCO; } throw new BlException(OrarendResource.TanarOracserereValaszthatoOraiKotelezo); } private string CreateWarningMessageAndThrowError(IDalHandler h, IOrarendiOra oracsereOra, IOrarendiOra oracsereOraCalendar, OraValidationCo validationCoOracsere, OraValidationCo validationCoCalendar, DateTime? oracsereOrarendiOraDatum, DateTime? calendarOrarendiOraDatum) { StringBuilder warningMessage = new StringBuilder(); var orarendioraDal = h.OrarendiOra(); if (validationCoOracsere.Msg.Length != 0 || validationCoOracsere.ErrorMsg.Length != 0) { var oracsereOraData = orarendioraDal.Get(oracsereOra.ID); var oracsereOraLeiras = $"{oracsereOraData.Tanar.NyomtatasiNev} - {oracsereOraData.OsztalyCsoport.Nev} - {oracsereOraData.Tantargy.Nev} - {oracsereOraData.Terem.Nev} - {calendarOrarendiOraDatum.Value} {Constants.General.Sortores}"; if (validationCoOracsere.ErrorMsg.Length != 0) { throw new BlException(oracsereOraLeiras + Constants.General.Sortores + validationCoOracsere.ErrorMsg.ToString()); } warningMessage.Append(oracsereOraLeiras); warningMessage.Append(validationCoOracsere.Msg + Constants.General.Sortores); } if (validationCoCalendar.Msg.Length != 0 || validationCoCalendar.ErrorMsg.Length != 0) { var oracsereOraCalendarData = orarendioraDal.Get(oracsereOraCalendar.ID); var oracsereOraCalendarLeiras = $"{oracsereOraCalendarData.Tanar.NyomtatasiNev} - {oracsereOraCalendarData.OsztalyCsoport.Nev} - {oracsereOraCalendarData.Tantargy.Nev} - {oracsereOraCalendarData.Terem.Nev} - {oracsereOrarendiOraDatum.Value} {Constants.General.Sortores}"; if (validationCoCalendar.ErrorMsg.Length != 0) { throw new BlException(oracsereOraCalendarLeiras + Constants.General.Sortores + validationCoCalendar.ErrorMsg.ToString()); } warningMessage.Append(oracsereOraCalendarLeiras); warningMessage.Append(validationCoCalendar.Msg + Constants.General.Sortores); } return warningMessage.ToString(); } private OraValidationCo ConvertOrarendiOraToOraValidationCo(IOrarendiOra oracsereOra, DateTime? oracsereDatum) { OrarendiOraCO co = new OrarendiOraCO(); OraValidationCo validationCo = new OraValidationCo(); GetOrarendiOraTulajdonsagok(co, oracsereOra.ID); validationCo.OrarendiOraValidationCo = new OrarendiOraValidationCo() { CsengetesiRendId = oracsereOra.CsengetesirendId, HetirendId = oracsereOra.Hetirend, Id = oracsereOra.ID, IsEgyediNap = oracsereOra.EgyediNap, CsengetesiRendOraId = oracsereOra.CsengetesirendOraId ?? -1, HetNapjaId = oracsereOra.HetNapja, OraErvenyessegKezdete = oracsereOra.OraErvenyessegKezdete, OraErvenyessegVege = oracsereOra.OraErvenyessegVege.Value, OraKezdete = oracsereOra.OraKezdete.Value, OraVege = oracsereOra.OraVege.Value, Oraszam = oracsereOra.Oraszam, OsztalyId = oracsereOra.OsztalyCsoportId, TanarId = oracsereOra.TanarId, TeremId = oracsereOra.TeremId, TantargyId = oracsereOra.TantargyId, IsNapirend = oracsereOra.CsengetesirendOraId.HasValue, ModositasiIdoszakTipus = (int)OraModositasiIdoszakTipus.EgyOra, IsModification = true, ModificationDate = oracsereDatum.Value, IKTTanora = oracsereOra.IKTTanora, Bontott = oracsereOra.Bontott, IsFelnottoktatasiSzerzodes = oracsereOra.IsFelnottoktatasiSzerzodes, NemzetisegiOra = oracsereOra.NemzetisegiOra, MindennaposTestneveles = oracsereOra.MindennaposTestneveles, IPRTanora = oracsereOra.IPRTanora, Differencialt = oracsereOra.Differencialt, Kooperativ = oracsereOra.Kooperativ, Meres = oracsereOra.Meres, Drama = oracsereOra.Drama, Tiop = oracsereOra.TIOP12, ParhuzamosOra = oracsereOra.ParhuzamosOra, NemSzakrendszeruOra = oracsereOra.NemSzakrendszeruOra, TAMOPOra = oracsereOra.TAMOPOra, KIPOra = oracsereOra.KIPOra, VEKOP73317 = oracsereOra.VEKOP73317, KAPOra = oracsereOra.KAPOra, Tulora = oracsereOra.Tulora, Multikulturalis = oracsereOra.MultikulturalisOra, EFOP32317 = oracsereOra.EFOP32317, KomplexOra = oracsereOra.KomplexOra, GINOP623 = oracsereOra.GINOP623, EFOP31716EselyteremtesAKoznevelesben = oracsereOra.EFOP31716, EFOP33717 = oracsereOra.EFOP33717, TIOP11112120120001 = oracsereOra.TIOP1111212012001, DFHT = oracsereOra.IsDfhtOra, Rahangolodas = oracsereOra.IsRahangolodas, Testmozgas = oracsereOra.IsTestmozgasAlapuAlprogram, Muveszet = oracsereOra.IsMuveszetAlapuAlprogram, Eletgyakorlat = oracsereOra.IsEletgyakorlatAlapuAlprogram, Logika = oracsereOra.IsLogikaAlapuAlprogram, TeOrad = oracsereOra.IsTeorad, Sorszamozando = oracsereOra.Sorszamozando, DigitalisAlapProgram = oracsereOra.IsDigitalisAlapuAlprogram, EFOP23517201700038Miapalya = oracsereOra.EFOP23517, TanevTananyaganakIsmetlese = co.TanevTananyaganakIsmetlese, TanevTananyaganakKiegeszitese = co.TanevTananyaganakKiegeszitese, TanulokDigitalisKeszsegfejlesztese = co.TanulokDigitalisKeszsegfejlesztese, Projektmunka = co.Projektmunka, TanulokKompenzaciosIraskeszsegFejlesztese = co.TanulokKompenzaciosIraskeszsegFejlesztese, TanulokKompenzaciosOlvasasiKepessegFejlesztese = co.TanulokKompenzaciosOlvasasiKepessegFejlesztese, TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese = co.TanulokMatematikaiGondolkodasiKepessegenekKompenzaciosFejlesztese, TanulokNyelviKepessegenekKompenzaciosFejlesztese = co.TanulokNyelviKepessegenekKompenzaciosFejlesztese, TanulokOnmegismeresenekSegitese = co.TanulokOnmegismeresenekSegitese, TanulokOnallosagraNevelese = co.TanulokOnallosagraNevelese, TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese = co.TanulokTanulasszervezesiKompenzaciosTechnikajanakErositese, TanulokOrientaciosTamogatasa = co.TanulokOrientaciosTamogatasa, TanulokSzocialitasanakFejlesztese = co.TanulokSzocialitasanakFejlesztese, TanulokTovabbhaladasatElokeszitoTevekenysegek = co.TanulokTovabbhaladasatElokeszitoTevekenysegek, PedagogusAltalJelzettEgyeniEsetkezeles = co.PedagogusAltalJelzettEgyeniEsetkezeles, ProjektmunkaTamogatasa = co.ProjektmunkaTamogatasa, DigitalisKeszsegfejlesztes = co.DigitalisKeszsegfejlesztes, KozossegiMunkaTamogatasa = co.KozossegiMunkaTamogatasa, TanoraElokeszitesenekTamogatasa = co.TanoraElokeszitesenekTamogatasa, TanoraLebonyolitasanakTamogatasa = co.TanoraLebonyolitasanakTamogatasa, NapkozisTevekenysegKeretebenEgyeniFejlesztes = co.NapkozisTevekenysegKeretebenEgyeniFejlesztes, IsEgybefuggoGyakorlat = co.IsEgybefuggoGyakorlat }; return validationCo; } private void IdoponthozKapcsolodoAdatokFelcserelese(IOrarendiOra oracsereOra1, IOrarendiOra oracsereOra2) { var oraErvenyessegKezdete = GetNewDateTimeFromExisting(oracsereOra1.OraErvenyessegKezdete); var oraErvenyessegVege = GetNewDateTimeFromExisting(oracsereOra1.OraErvenyessegVege.Value); var hetNapjaId = oracsereOra1.HetNapja; var oraKezdete = GetNewDateTimeFromExisting(oracsereOra1.OraKezdete.Value); var oraVege = GetNewDateTimeFromExisting(oracsereOra1.OraVege.Value); var oraSzam = oracsereOra1.Oraszam; var hetirend = oracsereOra1.Hetirend; var csengetesirendId = oracsereOra1.CsengetesirendId; var csengetesirendOraId = oracsereOra1.CsengetesirendOraId; oracsereOra1.OraErvenyessegKezdete = oracsereOra2.OraErvenyessegKezdete; oracsereOra1.OraErvenyessegVege = oracsereOra2.OraErvenyessegVege; oracsereOra1.HetNapja = oracsereOra2.HetNapja; oracsereOra1.OraKezdete = oracsereOra2.OraKezdete; oracsereOra1.OraVege = oracsereOra2.OraVege; oracsereOra1.Oraszam = oracsereOra2.Oraszam; oracsereOra1.Hetirend = oracsereOra2.Hetirend; oracsereOra1.CsengetesirendId = oracsereOra2.CsengetesirendId; oracsereOra1.CsengetesirendOraId = oracsereOra2.CsengetesirendOraId; oracsereOra2.OraErvenyessegKezdete = oraErvenyessegKezdete; oracsereOra2.OraErvenyessegVege = oraErvenyessegVege; oracsereOra2.HetNapja = hetNapjaId; oracsereOra2.OraKezdete = oraKezdete; oracsereOra2.OraVege = oraVege; oracsereOra2.Oraszam = oraSzam; oracsereOra2.Hetirend = hetirend; oracsereOra2.CsengetesirendId = csengetesirendId; oracsereOra2.CsengetesirendOraId = csengetesirendOraId; } private DateTime GetNewDateTimeFromExisting(DateTime dateTime) { return new DateTime(dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second); } private List GetAktualisHetirendek(IDalHandler h) { var hetirendek = new List(); var tanevrendHelper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h)); var hetirendekDictionary = tanevrendHelper.GetTanevHetirendTipusok(); foreach (var hetirend in hetirendekDictionary) { hetirendek.Add(int.Parse(hetirend.Key)); } //A mindegyik hét kell mindig a listába hetirendek.Add((int)HetiRendTipusEnum.MindegyikHet); return hetirendek; } private int GetTevekenysegFigyelesSystemSettingValue(IDalHandler h) { return new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Napirend_felvitelel_utkozes_figyeles); } public List GetNemElerhetoOrarendiElemekCoList(AdminNemElerhetoOrarendiElemCO searchCo) { var ds = Dal.CustomConnection.Run(ConnectionType, h => h.OrarendiOra().GetNemElerhetoOrarendiElemekDataSet(TanevId)); var result = new List(); foreach (var dataRow in ds.Tables[0].AsEnumerable()) { result.Add(new NemElerhetoOrarendiElemItemCo(dataRow)); } return FilterNemElerhetoOrarendiElemItemCoList(result, searchCo); } private List FilterNemElerhetoOrarendiElemItemCoList(List coList, AdminNemElerhetoOrarendiElemCO searchCo) { if (searchCo == null) { return coList; } IEnumerable result = coList; if (searchCo.TanarId.HasValue) { result = result.Where(x => x.TanarId == searchCo.TanarId.Value); } if (searchCo.NapId.HasValue) { result = result.Where(x => x.NapId == searchCo.NapId.Value); } if (searchCo.HetirendId.HasValue) { result = result.Where(x => x.HetirendId == searchCo.HetirendId.Value); } if (searchCo.TantargyId.HasValue) { result = result.Where(x => x.TantargyId == searchCo.TantargyId.Value); } if (searchCo.TeremId.HasValue) { result = result.Where(x => x.TeremId == searchCo.TeremId.Value); } if (searchCo.OsztalyCsoportId.HasValue) { result = result.Where(x => x.OsztalyCsoportId == searchCo.OsztalyCsoportId.Value); } if (searchCo.ErvenyessegKezdeteTol.HasValue && !searchCo.ErvenyessegKezdeteIg.HasValue) { result = result.Where(x => x.ErvenyessegKezdete >= searchCo.ErvenyessegKezdeteTol.Value); } if (searchCo.ErvenyessegKezdeteIg.HasValue && !searchCo.ErvenyessegKezdeteTol.HasValue) { result = result.Where(x => x.ErvenyessegKezdete <= searchCo.ErvenyessegKezdeteIg.Value); } if (searchCo.ErvenyessegKezdeteTol.HasValue && searchCo.ErvenyessegKezdeteIg.HasValue) { result = result.Where(x => x.ErvenyessegKezdete >= searchCo.ErvenyessegKezdeteTol.Value && x.ErvenyessegKezdete <= searchCo.ErvenyessegKezdeteIg.Value); } if (searchCo.ErvenyessegVegeTol.HasValue && !searchCo.ErvenyessegVegeIg.HasValue) { result = result.Where(x => x.ErvenyessegVege >= searchCo.ErvenyessegVegeTol.Value); } if (searchCo.ErvenyessegVegeIg.HasValue && !searchCo.ErvenyessegVegeTol.HasValue) { result = result.Where(x => x.ErvenyessegVege <= searchCo.ErvenyessegVegeIg.Value); } if (searchCo.ErvenyessegVegeTol.HasValue && searchCo.ErvenyessegVegeIg.HasValue) { result = result.Where(x => x.ErvenyessegVege >= searchCo.ErvenyessegVegeTol.Value && x.ErvenyessegVege <= searchCo.ErvenyessegVegeIg.Value); } return result.ToList(); } public void OrarendValtozasCacheMentes(int? orarendiOraId = null, DateTime? datum = null, DateTime? oraKezdete = null) { var sendOrarendValtozasNotificationFeature = new SendOrarendValtozasNotificationFeature((FeatureConfigurationSection)ConfigurationManager.GetSection(Constants.ConfigurationSectionNames.FeatureConfig)); if (sendOrarendValtozasNotificationFeature.IsEnabled && orarendiOraId.IsEntityId()) { var oraTanuloiDataSet = GetOraTanuloi(orarendiOraId.Value); var elsoOrarendiOraDatumaDataSet = GetElsoOrarendiOraDatuma(orarendiOraId.Value); if (oraTanuloiDataSet.Tables.Count > 0 && oraTanuloiDataSet.Tables[0].Rows.Count > 0 && elsoOrarendiOraDatumaDataSet.Tables.Count > 0 && elsoOrarendiOraDatumaDataSet.Tables[0].Rows.Count > 0) { var tanulok = oraTanuloiDataSet.Tables[0].Rows.Cast().Select(dataRow => new Tuple(dataRow.Field("TanuloId"), dataRow.Field("IdpUniqueId"), dataRow.Field("TanuloNev")) ).ToList(); var elsoOrarendiOraDatuma = elsoOrarendiOraDatumaDataSet.Tables[0].Rows[0].Field("Datum"); var kuldendoDatum = datum.HasValue ? datum.Value : oraKezdete.HasValue ? elsoOrarendiOraDatuma.AddHours(oraKezdete.Value.Hour).AddMinutes(oraKezdete.Value.Minute) : elsoOrarendiOraDatuma; OrarendValtozasCache orarendValtozasCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile(); var cacheEnabledAndNotNull = FeatureContext.Instance.IsEnabled(Constants.FeatureName.MobileEllenorzoApiCache, IntezmenyAzonosito) && orarendValtozasCache != null; if (cacheEnabledAndNotNull) { var orarendValtozasok = orarendValtozasCache.GetOrarendValtozasok(IntezmenyAzonosito); tanulok.ForEach(t => orarendValtozasok.Add(new OrarendValtozasModel { IntezmenyAzonosito = IntezmenyAzonosito, UserId = t.Item1, IdpUniqueId = t.Item2, UserNev = t.Item3, OrarendiOraId = orarendiOraId.Value, Nap = Job.Tasks.Helpers.Utility.Extensions.GetHetnapja(kuldendoDatum, TanevId, IntezmenyAzonosito), Datum = kuldendoDatum })); orarendValtozasCache.AddOrUpdateOrarendValtozas(orarendValtozasok, IntezmenyAzonosito); } } } } private DataSet GetOraTanuloi(int orarendiOraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); return dal.GetOraTanuloi(orarendiOraId); }); } private DataSet GetElsoOrarendiOraDatuma(int orarendiOraId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var dal = h.OrarendiOra(); return dal.GetElsoOrarendiOraDatuma(orarendiOraId); }); } public void UpdateOrarend(DateTime? idoszakKezdete = null, DateTime? idoszakVege = null, int? orarendioraId = null, int? osztalyCsoportId = null) { Dal.CustomConnection.Run(ConnectionType, (h) => { h.OrarendiOra().UpdateOrarend(IntezmenyId, TanevId, idoszakKezdete, idoszakVege, orarendioraId, osztalyCsoportId); }); } public List GetElozoOrakAdatai(string orakAdatai) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var elozoOrakAdatai = new List(); var elozoOrakAdataiDataSet = h.OrarendiOra().GetElozoOrakAdatai(orakAdatai, IntezmenyId, TanevId); for (int i = 0; i < elozoOrakAdataiDataSet.Tables.Count; i++) { foreach (var row in elozoOrakAdataiDataSet.Tables[i].Rows.Cast()) { if (!SDAConvert.ToNullableInt32(row["Id"]).HasValue) { continue; } var datum = SDAConvert.ToDateTime(row["Datum"]); var elozoOraDatuma = datum.HasValue ? datum.Value.ToString("yyyy.MM.dd.") : string.Empty; var evesSorszam = SDAConvert.ToNullableInt32(row["EvesSorszam"]); var elozoOraEvesSorszama = evesSorszam.HasValue ? evesSorszam.ToString() : null; var elozoOraTemaja = SDAConvert.ToString(row["Tema"]); elozoOrakAdatai.Add(new ElozoOraAdataiCO { ElozoOraTemaja = elozoOraTemaja, ElozoOraEvesSorszama = elozoOraEvesSorszama, ElozoOraAdatai = $"{elozoOraDatuma} {elozoOraTemaja}", ElozoOraDatuma = datum, TantargyId = SDAConvert.ToInt32(row["TantargyId"]), OsztalyCsoportId = SDAConvert.ToInt32(row["OsztalyCsoportId"]), TanarId = SDAConvert.ToInt32(row["TanarId"]), OraKezdete = Convert.ToDateTime(row["OraKezdete"]) }); } } return elozoOrakAdatai; }); } } }