2451 lines
134 KiB
C#
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;
|
|
});
|
|
}
|
|
}
|
|
}
|