kreta/Kreta.BusinessLogic/Helpers/OrarendiOraHelper.cs
2024-03-13 00:33:46 +01:00

2451 lines
134 KiB
C#

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<OraValidationCo>(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<OrarendiOraTanitasiOraCo> 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<OrarendiOraTanitasiOraCo> OraListaOraSzamModositas = new List<OrarendiOraTanitasiOraCo>();
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<OrarendiOraTanitasiOraCo> 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<OrarendiOraTanitasiOraCo> 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}<br />", OrarendResource.EbbenAzIdopontbanATeremFoglalt);
}
}
//CheckAzonosOraFelvitel helyett
List<OrarendiOraTanitasiOraCo> 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<HetNapjaTipusEnum>(TanevId) })");
}
throw new BlException(OrarendResource.AzonosOraFelvitelNemLehetseges +
$" { elsoAzonosMentettOra.OraErvenyessegKezdete.ToShortDateString() } - { elsoAzonosMentettOra.OraErvenyessegVege.ToShortDateString() } " +
$"({ elsoAzonosMentettOra.HetNapjaTipusId.GetDisplayName<HetNapjaTipusEnum>(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<OrarendiOraTanitasiOraCo> 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}<br />", OrarendResource.AKivalasztottTanarnakFoglalkozasaVanEbbenAzIdopontban);
}
}
//OrarendiOraUtkozesEllenorzes - OrarendiOraUtkozesTipusEnum.OsztalyCsoport - helyett
List<OrarendiOraTanitasiOraCo> 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}<br />", 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}<br />", string.Format(OrarendResource.AKivalasztottOsztalynakcsoportnakMaxNapiOraszama, tanevRendjeMaxOraszam));
}
}
}
}
if (!validationCo.OrarendiOraValidationCo.IsFromSzervezet && KapacitasUtkozesValidation(dalHandler, validationCo.OrarendiOraValidationCo))
{
validationCo.Msg.AppendFormat("{0}<br />", 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}<br />", orarendiOraOraszamIdopontMsg);
}
}
}
//megvizsgájuk, vannak-e törlendő helyettesítések
List<OrarendiOraTanitasiOraCo> torlendoHelyettesitesek = validationCo.OrarendiOraValidationCo.Id.HasValue ? GetTorlendoHelyettesitesek(oraszamModosult ? OraListaOraSzamModositas : bovitettOraLista, validationCo.OrarendiOraValidationCo, isForDelete, isErvenyessegModositasTeljesIdoszakra, isOraszamModosult: oraszamModosult) : new List<OrarendiOraTanitasiOraCo>();
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<BejelentettSzamonkeresekItemCo> 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<int>(RendszerBeallitasTipusEnum.Teremutkozes_figyeles);
}
private bool KapacitasUtkozesValidation(IDalHandler dalHandler, OrarendiOraValidationCo co)
{
var sysNaplozas_terem_befogadokepesseg = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, dalHandler)).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Naplozas_terem_befogadokepesseg);
if (!sysNaplozas_terem_befogadokepesseg)
return false;
var result = OrarendiOraTeremKapacitasEllenorzes(dalHandler, co.TeremId, co.OsztalyId.Value);
return result;
}
private List<OrarendiOraTanitasiOraCo> GetAzonosOraFelvitel(IDalHandler dalHandler, List<OrarendiOraTanitasiOraCo> 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<OrarendiOraTanitasiOraCo> TeremUtkozesValidation(List<OrarendiOraTanitasiOraCo> 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<OrarendiOraTanitasiOraCo> TanarUtkozesValidation(List<OrarendiOraTanitasiOraCo> orarendiOraLista, OrarendiOraValidationCo co)
{
return orarendiOraLista.Where(x => x.TanarId == co.TanarId && (!co.Id.HasValue || co.Id.Value != x.OrarendiOraId)).ToList();
}
private static List<OrarendiOraTanitasiOraCo> OsztalyCsoportUtkozesValidation(List<OrarendiOraTanitasiOraCo> orarendiOraLista, OrarendiOraValidationCo co)
{
return orarendiOraLista.Where(x => x.OsztalyCsoportId == co.OsztalyId && (!co.Id.HasValue || co.Id.Value != x.OrarendiOraId)).ToList();
}
private static List<OrarendiOraTanitasiOraCo> GetTorlendoHelyettesitesek(List<OrarendiOraTanitasiOraCo> 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<BejelentettSzamonkeresekItemCo> GetTorlendoSzamonkeresElorejelzesek(DataSet bejelentettSzamonkeresek, OrarendiOraValidationCo eredetiOraCo, OrarendiOraValidationCo co, bool isForDelete = false, bool isErvenyessegModositasTeljesIdoszakra = false)
{
List<BejelentettSzamonkeresekItemCo> bejelentettSzamonkeresekItemCo = new List<BejelentettSzamonkeresekItemCo>();
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<int> orarendiOrakTorlesre, List<OraValidationCo> 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<int> orarendiOrakTorlesre, DateTime start)
{
Guid kozpontiOraId = Guid.NewGuid();
return Dal.CustomConnection.Run(ConnectionType, h => DeleteOrarendiOrakKozpontilag(h, orarendiOrakTorlesre, kozpontiOraId, start));
}
private bool DeleteOrarendiOrakKozpontilag(IDalHandler dalHandler, List<int> 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<HetNapjaTipusEnum>(TanevId),
OsztalyCsoportNev = oOra.OsztalyCsoport.Nev,
TanarNev = oOra.OraTulajdonos?.NyomtatasiNev,
TanarAlkalmazottNev = oOra.Tanar?.NyomtatasiNev,
TantargyNev = oOra.Tantargy.Nev,
HetirendNev = oOra.Hetirend.GetDisplayName<HetiRendTipusEnum>(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<int, bool> GetOraTulajdonsagok(OrarendiOraValidationCo co)
{
var oraTulajdonsagok = new Dictionary<int, bool>();
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<OrarendiOraTanitasiOraCo> GetOrarendiOrakUtkozesValidaciohoz(IDalHandler dalHandler, DateTime ervenyessegKezdete, DateTime ervenyessegVege, int hetNapja, DateTime? oraKezdete, DateTime? oraVege)
{
List<OrarendiOraTanitasiOraCo> oraList = new List<OrarendiOraTanitasiOraCo>();
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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> kozpontiOraList = new List<AdminKozpontiOrakOrarendiOraCo>();
foreach (IGrouping<Guid?, AdminKozpontiOrakOrarendiOraCo> kozpontiOra in kozpontiOrak.GroupBy(i => i.KozpontiOraGroupId))
{
var oraNevek = new List<string>();
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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> GetOrarendiOrakUtkozesKozpontiOraValidaciohoz(DateTime ervenyessegKezdete, DateTime ervenyessegVege, int hanyadikOra, List<AdminSelectedKozpontiOraCo> 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<AdminKozpontiOrakOrarendiOraCo> filteredOraList = new List<AdminKozpontiOrakOrarendiOraCo>();
if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
{
List<AdminKozpontiOrakOrarendiOraCo> 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<int> 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<DateTime>("Kezdet").Hour, row.Field<DateTime>("Kezdet").Minute, 0)
|| new DateTime(2000, 01, 01, vege.Hour, vege.Minute, 0) != new DateTime(2000, 01, 01, row.Field<DateTime>("Vege").Hour, row.Field<DateTime>("Vege").Minute, 0))
{
return $"{OrarendResource.OrarendiOraOraszamIdopont} ( {oraszam}.{OrarendResource.Ora} {row.Field<DateTime>("Kezdet"):HH:mm}-{row.Field<DateTime>("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<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum).Value;
utolsoNap = helper.GetSystemSettingValue<DateTime?>(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<DataRow> 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<string>("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<int> GetAktualisHetirendek(IDalHandler h)
{
var hetirendek = new List<int>();
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<int>(RendszerBeallitasTipusEnum.Napirend_felvitelel_utkozes_figyeles);
}
public List<NemElerhetoOrarendiElemItemCo> GetNemElerhetoOrarendiElemekCoList(AdminNemElerhetoOrarendiElemCO searchCo)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h => h.OrarendiOra().GetNemElerhetoOrarendiElemekDataSet(TanevId));
var result = new List<NemElerhetoOrarendiElemItemCo>();
foreach (var dataRow in ds.Tables[0].AsEnumerable())
{
result.Add(new NemElerhetoOrarendiElemItemCo(dataRow));
}
return FilterNemElerhetoOrarendiElemItemCoList(result, searchCo);
}
private List<NemElerhetoOrarendiElemItemCo> FilterNemElerhetoOrarendiElemItemCoList(List<NemElerhetoOrarendiElemItemCo> coList, AdminNemElerhetoOrarendiElemCO searchCo)
{
if (searchCo == null)
{
return coList;
}
IEnumerable<NemElerhetoOrarendiElemItemCo> 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<DataRow>().Select(dataRow =>
new Tuple<int, Guid, string>(dataRow.Field<int>("TanuloId"), dataRow.Field<Guid>("IdpUniqueId"), dataRow.Field<string>("TanuloNev"))
).ToList();
var elsoOrarendiOraDatuma = elsoOrarendiOraDatumaDataSet.Tables[0].Rows[0].Field<DateTime>("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<OrarendValtozasCache>();
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<ElozoOraAdataiCO> GetElozoOrakAdatai(string orakAdatai)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var elozoOrakAdatai = new List<ElozoOraAdataiCO>();
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<DataRow>())
{
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;
});
}
}
}