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

3517 lines
187 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Globalization;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Logic;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.DataAccess.Interfaces;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Ellenorzo.Dao.VN.DigitalisInformacio;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework;
using Kreta.Framework.Util;
using Kreta.KretaServer.SystemSettings;
using Kreta.Resources;
using Newtonsoft.Json;
namespace Kreta.BusinessLogic.Helpers
{
public class OrarendHelper : LogicBase
{
public OrarendHelper(IConnectionType connectionType) : base(connectionType) { }
private enum OraTipus
{
OrarendiOra,
TanitasiOra
}
public static List<int> NemTanitasiNapTipusok = new List<int> {
{ (int)NapTipusEnum.munkaszuneti_nap },
{ (int)NapTipusEnum.tanitas_nelkuli_munkanap },
{ (int)NapTipusEnum.egesz_napos_kirandulas },
{ (int)NapTipusEnum.szabadnap_igazgatoi_hataskorben_ },
{ (int)NapTipusEnum.tanitasi_szunet },
{ (int)NapTipusEnum.unnepnap },
{ (int)NapTipusEnum.teli_szunet },
{ (int)NapTipusEnum.tavaszi_szunet },
{ (int)NapTipusEnum.oszi_szunet },
{ (int)NapTipusEnum.vizsganap }
};
public void FizikaiTorlesOrarendek()
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
dal.FizikaiTorlesOrarendek(IntezmenyId, TanevId, FelhasznaloId);
});
}
public OrarendCO GetTanuloOrarend(DateTime start, DateTime end, int tanuloId, bool isCsokkentettGondviselo)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = SetOrarendHasRejtettOra(h, orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, null, null, tanuloId, false, OrarendTipusEnum.Minden, null, null, false, null));
var events = GetTanuloOrarendData(h, dsOrarend, start, end, EventColorEnum.Kek, isCsokkentettGondviselo, tanuloId);
//Fogadóóra
var fogadoorak = GetFogadoorakForGondviselo(h, start, end, tanuloId);
events.AddRange(fogadoorak);
var orarendCo = new OrarendCO();
orarendCo.Events.AddRange(events);
return orarendCo;
});
}
/// INFO @DevKornel: Mobil használja
public List<OrarendCO.ExtendedEvent> GetTanuloOrarendDataForMobile(DataSet dsOrarend, DateTime start, DateTime end, int? tanuloId = null, bool isTanevRendjeEsemenyekAddEnabled = true, bool isKellOrarendiOraOrTanitasiOraTulajdonsag = false, IEnumerable<IDKT_Feladat> haziFeladatok = null)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetTanuloOrarendData(h, dsOrarend, start, end, tanuloId: tanuloId, isMobilHivas: true, isTanevRendjeEsemenyekAddEnabled: isTanevRendjeEsemenyekAddEnabled, isKellOrarendiOraOrTanitasiOraTulajdonsag: isKellOrarendiOraOrTanitasiOraTulajdonsag, haziFeladatok: haziFeladatok);
});
}
public OrarendCO GetOralatogatasOrarend(DateTime start, DateTime end, int tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var oralatogatasok = GetOralatogatas(h, start, end, tanarId);
var orarendCO = new OrarendCO();
orarendCO.Events.AddRange(oralatogatasok);
return orarendCO;
});
}
public OrarendCO GetAdminTanariOrarendOrarendiOrak(DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool isFromSzervezet = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (tanarId.HasValue == false && osztalyCsoportId.HasValue == false)
{
return new OrarendCO();
}
// Órarendi órák:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId, null, true, OrarendTipusEnum.CsengetesiRendhezKotottOrarend, false, EventColorEnum.Kek);
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
}
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
var kezdDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
var vegDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
if (isFromSzervezet)
{
events.AddRange(GetSzervezetCsengetesiRend(h, start, end, events));
}
else if (start > kezdDatum && start <= vegDatum || end > kezdDatum && end <= vegDatum)
{
//Nyári gyakorlat csengetési rend
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events, isOsszefuggoSzakmaiGyakorlat: true, szakmaiGyakKezdDatum: kezdDatum, szakmaiGyakVegDatum: vegDatum));
}
else
{
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events));
}
// UtóSzinezés
foreach (var eventData in events)
{
if (eventData.isElmaradt)
{
eventData.textLineThrough = true;
}
if (eventData.oraType == CalendarOraTypeEnum.TanitasiOra && eventData.helyettesitoId.HasValue == false)
{
/*Tanítási óra nem helyettesített*/
eventData.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
}
else if (eventData.oraType == CalendarOraTypeEnum.TanitasiOra && eventData.helyettesitoId.HasValue)
{
/*Tanítási óra helyettesített*/
eventData.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
}
else if (eventData.oraType == CalendarOraTypeEnum.OrarendiOra && eventData.helyettesitoId.HasValue)
{
/*Órarendi óra helyettesített*/
eventData.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetAdminOsztalyOrarendOrarendiOrak(DateTime start, DateTime end, int osztalyCsoportId, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (osztalyCsoportId < 1)
{
return new OrarendCO();
}
if (!isFromSzervezet && new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h)).IsMentorCsoport(osztalyCsoportId))
{
isFromSzervezet = true;
}
// Órarendi órák:
var events = GetAdminOsztalyOrarendiOrakEsTanorak(h, start, end, null, osztalyCsoportId, null);
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events, osztalycsoportId: osztalyCsoportId);
}
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
var kezdDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
var vegDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
if (isFromSzervezet)
{
events.AddRange(GetSzervezetCsengetesiRend(h, start, end, events));
}
else if (start > kezdDatum && start <= vegDatum || end > kezdDatum && end <= vegDatum)
{
//Nyári gyakorlat csengetési rend
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events, isOsszefuggoSzakmaiGyakorlat: true, szakmaiGyakKezdDatum: kezdDatum, szakmaiGyakVegDatum: vegDatum));
}
else
{
// Csengetési rend:
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events));
}
// UtóSzinezés
foreach (var eventData in events)
{
if (eventData.oraType == CalendarOraTypeEnum.OrarendiOra && eventData.helyettesitoId.HasValue)
{
/*Órarendi óra helyettesített*/
eventData.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetAdminTanariOrarendTanoranKivuliFoglalkozasok(DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (tanarId.HasValue == false && osztalyCsoportId.HasValue == false)
{
return new OrarendCO();
}
// Órarendi órák és napirend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId, null, true, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke);
// Napirend színezés
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId > 0)
{
item.colorEnum = EventColorEnum.Narancs;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
else
{
item.colorEnum = EventColorEnum.Kek;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
}
}
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetAdminOsztalyOrarendTanoranKivuliFoglalkozasok(DateTime start, DateTime end, int osztalyCsoportId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var osztalyDal = h.OsztalyCsoport();
var isOsztaly = osztalyDal.GetIsOsztaly(osztalyCsoportId);
// Órarend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, null, osztalyCsoportId, null, true, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke, isOsztaly: isOsztaly);
// Napirend színezés
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId > 0)
{
item.colorEnum = EventColorEnum.Narancs;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
else
{
item.colorEnum = EventColorEnum.Kek;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
}
}
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
/* Duális oktató jog fogadása KRETA2-12558 makkt később ki lehet majd venni */
public OrarendCO GetTanariOrarendOrarendiorakEsTanorak(DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, int? tanuloId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool forceNaploJogEventDekor = false, bool isFromSzervezet = false, bool isDualisOktato = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
DateTime naplozarasDate = GetNaplozarasDate(start);
var naplozarasLogic = new NaplozarasLogic(ConnectionType);
bool ertekelesekEsNaplozasZarasa = !naplozarasLogic.IsCsakErtekelesZarasaBeallitas();
var lezartOsztalyokEsBontottCsoportjaikIdList = naplozarasLogic.GetLezartOsztalyokEsBontottCsoportjaik();
bool isLezartOsztalyCsoport = osztalyCsoportId.HasValue && lezartOsztalyokEsBontottCsoportjaikIdList.Contains(osztalyCsoportId.Value);
var hetiHaviNaplozaras = GetHetiHaviNaplozarasDatuma();
if (hetiHaviNaplozaras.HasValue && !ertekelesekEsNaplozasZarasa && hetiHaviNaplozaras < naplozarasDate)
{
naplozarasDate = hetiHaviNaplozaras.Value;
ertekelesekEsNaplozasZarasa = true;
}
// Órarendi órák és tanórák:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId, tanuloId, false, OrarendTipusEnum.Minden, false, forceNaploJogEventDekor: forceNaploJogEventDekor);
foreach (var item in events)
{
var eventIsLezartOsztalyCsoport = item.OsztalyCsoportId.HasValue && lezartOsztalyokEsBontottCsoportjaikIdList.Contains(item.OsztalyCsoportId.Value);
if (item.oraType == CalendarOraTypeEnum.OrarendiOra && ((isLezartOsztalyCsoport || eventIsLezartOsztalyCsoport) || (ertekelesekEsNaplozasZarasa && (item.start.Value.Date < naplozarasDate))))
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivPiros);
item.colorEnum = EventColorEnum.InaktivPiros;
}
if (item.oraType == CalendarOraTypeEnum.TanitasiOra && ((isLezartOsztalyCsoport || eventIsLezartOsztalyCsoport) || (ertekelesekEsNaplozasZarasa && (item.start.Value.Date < naplozarasDate))))
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
item.colorEnum = EventColorEnum.InaktivZold;
}
}
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
}
// Csengetési rend:
bool tanarVehetFelOratMaganak;
bool lehetOratFelvenniTtfNelkul;
bool tanarCsakAzEloirtHelyettesitestNaplozhatja;
bool tanarVehetFelOratMaganakOsszefuggoSzakmaiGyakorlaton;
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
tanarVehetFelOratMaganak = helper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanar_vehet_e_fel_orat_maganak);
lehetOratFelvenniTtfNelkul = helper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Lehet_orat_felvenni_TTF_nelkul);
tanarCsakAzEloirtHelyettesitestNaplozhatja = helper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Pedagogusok_csak_az_eloirt_helyettesiteseiket_regisztralhatjak_a_haladasi_naploban);
tanarVehetFelOratMaganakOsszefuggoSzakmaiGyakorlaton = helper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_egyedi_rogzites);
var szakGyakKezdDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
var szakGyakVegDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
bool isSzakmaiGyakStart = start > szakGyakKezdDatum && start <= szakGyakVegDatum;
bool isSzakmaiGyakEnd = end > szakGyakKezdDatum && end <= szakGyakVegDatum;
if (isFromSzervezet)
{
if (!isDualisOktato)
events.AddRange(GetSzervezetCsengetesiRend(h, start, end, events));
}
else if (isSzakmaiGyakStart && isSzakmaiGyakEnd)
{
if (tanarVehetFelOratMaganakOsszefuggoSzakmaiGyakorlaton)
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events, isOsszefuggoSzakmaiGyakorlat: true, szakmaiGyakKezdDatum: szakGyakKezdDatum, szakmaiGyakVegDatum: szakGyakVegDatum).Where(a => a.start.Value.Date <= DateTime.Now.Date && a.start.Value >= naplozarasDate.Date && !isLezartOsztalyCsoport));
}
else if (isSzakmaiGyakStart || isSzakmaiGyakEnd)
{
if (tanarVehetFelOratMaganakOsszefuggoSzakmaiGyakorlaton)
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events, isOsszefuggoSzakmaiGyakorlat: true, szakmaiGyakKezdDatum: szakGyakKezdDatum, szakmaiGyakVegDatum: szakGyakVegDatum).Where(a => a.start.Value.Date <= DateTime.Now.Date && a.start.Value >= naplozarasDate.Date && !isLezartOsztalyCsoport));
if (tanarVehetFelOratMaganak || lehetOratFelvenniTtfNelkul || !tanarCsakAzEloirtHelyettesitestNaplozhatja)
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events).Where(a => a.start.Value.Date <= DateTime.Now.Date && a.start.Value >= naplozarasDate.Date && !isLezartOsztalyCsoport));
}
else
{
if (tanarVehetFelOratMaganak || lehetOratFelvenniTtfNelkul || !tanarCsakAzEloirtHelyettesitestNaplozhatja)
events.AddRange(GetCsengetesiRend(h, start, end, osztalyCsoportId, events).Where(a => a.start.Value.Date <= DateTime.Now.Date && (a.start.Value >= naplozarasDate.Date) && !isLezartOsztalyCsoport));
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetCsoportVezetoTanorak(DateTime start, DateTime end, int? osztalyCsoportId, SzerepkorTipusEnum? felhasznaloSzerepkor)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
DateTime naplozarasDate = GetNaplozarasDate(start);
// Órarendi órák és tanórák:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, null, osztalyCsoportId, null, false, OrarendTipusEnum.CsengetesiRendhezKotottOrarend, false);
foreach (var item in events)
{
if (item.start.Value.Date < naplozarasDate && item.oraType == CalendarOraTypeEnum.OrarendiOra)
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivPiros);
item.colorEnum = EventColorEnum.InaktivPiros;
}
if (item.start.Value.Date < naplozarasDate && item.oraType == CalendarOraTypeEnum.TanitasiOra)
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
item.colorEnum = EventColorEnum.InaktivZold;
}
}
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetTanariOrarendTanoranKivuliFoglalkozasok(DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, int? tanuloId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool forceNaploJogEventDekor = false, bool isFromSzervezet = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
DateTime naplozarasDate = GetNaplozarasDate(start);
var naplozarasLogic = new NaplozarasLogic(ConnectionType);
bool ertekelesekEsNaplozasZarasa = !naplozarasLogic.IsCsakErtekelesZarasaBeallitas();
var hetiHaviNaplozaras = GetHetiHaviNaplozarasDatuma();
if (hetiHaviNaplozaras.HasValue && !ertekelesekEsNaplozasZarasa && hetiHaviNaplozaras < naplozarasDate)
{
naplozarasDate = hetiHaviNaplozaras.Value;
ertekelesekEsNaplozasZarasa = true;
}
var lezartOsztalyokEsBontottCsoportjaikIdList = naplozarasLogic.GetLezartOsztalyokEsBontottCsoportjaik();
bool isLezartOsztalyCsoport = osztalyCsoportId.HasValue && lezartOsztalyokEsBontottCsoportjaikIdList.Contains(osztalyCsoportId.Value);
// Órarend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId, tanuloId, false, OrarendTipusEnum.Minden,
false, EventColorEnum.Szurke, forceNaploJogEventDekor: forceNaploJogEventDekor, isFromSzervezet: isFromSzervezet);
//elmaradt órarendi (csengetési rendhez kötött) órákat nem jelenítjük meg
events.RemoveAll(x => x.isElmaradt && x.CsengetesiRendId.HasValue);
//tanár más által helyettesített órarendi (csengetési rendhez kötött) óráit nem jelenítjük meg
events.RemoveAll(x => x.helyettesitoId.HasValue && x.helyettesitoId.Value != tanarId && x.CsengetesiRendId.HasValue);
// Napirend színezés
foreach (var orarendiEvent in events)
{
if (orarendiEvent.helyettesitoId.IsEntityId())
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null).ToList();
foreach (var item in tanoranKivuliFoglalkozasok)
{
var eventIsLezartOsztalyCsoport = item.OsztalyCsoportId.HasValue && lezartOsztalyokEsBontottCsoportjaikIdList.Contains(item.OsztalyCsoportId.Value);
if ((isLezartOsztalyCsoport || eventIsLezartOsztalyCsoport) || (ertekelesekEsNaplozasZarasa && (item.start.Value.Date < naplozarasDate)))
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivPiros);
item.colorEnum = EventColorEnum.InaktivPiros;
}
if (item.oraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas && ((isLezartOsztalyCsoport || eventIsLezartOsztalyCsoport) || (ertekelesekEsNaplozasZarasa && (item.start.Value.Date < naplozarasDate))))
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
item.colorEnum = EventColorEnum.InaktivZold;
}
}
if (!isFromSzervezet)
{
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
}
HandleAndAddOrarendenKivulIsVanOraHeaderMessage(h, events, tanoranKivuliFoglalkozasok, RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja, RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja, isFromSzervezet: isFromSzervezet);
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
private void HandleAndAddOrarendenKivulIsVanOraHeaderMessage(IDalHandler h, List<OrarendCO.ExtendedEvent> events, List<OrarendCO.ExtendedEvent> orarendElemek,
RendszerBeallitasTipusEnum kezdoIdopontRendszerBeallitasTipus, RendszerBeallitasTipusEnum zaroIdopontRendszerBeallitasTipus, bool isFromSzervezet)
{
TimeSpan rendszerKezdes;
TimeSpan rendszerVege;
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
rendszerKezdes = helper.GetSystemSettingValue<TimeSpan>(kezdoIdopontRendszerBeallitasTipus);
rendszerVege = helper.GetSystemSettingValue<TimeSpan>(zaroIdopontRendszerBeallitasTipus);
var calendarId = -1;
var datumok = new List<DateTime>();
foreach (var item in orarendElemek)
{
var datum = Convert.ToDateTime(item.datum).Date;
if (datumok.Contains(datum))
{
continue;
}
var isHeaderNotificationNeeded = false;
if (!isFromSzervezet && item.start.HasValue && item.start.Value.TimeOfDay < rendszerKezdes)
{
isHeaderNotificationNeeded = true;
}
if (!isFromSzervezet && item.end.HasValue && item.end.Value.TimeOfDay > rendszerVege)
{
isHeaderNotificationNeeded = true;
}
if (!isHeaderNotificationNeeded)
{
continue;
}
datumok.Add(datum);
events.Add(new OrarendCO.ExtendedEvent()
{
allDay = true,
Tema = OrarendResource.AMegjelenitettenKivulIsVanOra,
title = OrarendResource.AMegjelenitettenKivulIsVanOra,
id = calendarId,
color = StringValueUtils.GetStringValue(EventColorEnum.Piros),
colorEnum = EventColorEnum.Piros,
textColor = StringValueUtils.GetStringValue(EventColorEnum.Feher),
oraType = CalendarOraTypeEnum.TanevRendjeEsemeny,
start = Convert.ToDateTime(item.start),
end = Convert.ToDateTime(item.end),
datum = datum
});
calendarId--;
}
}
public OrarendCO GetCsoportVezetoTanorankivuliFoglalkozasok(DateTime start, DateTime end, int? osztalyCsoportId, SzerepkorTipusEnum? felhasznaloSzerepkor)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
// Órarend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, null, osztalyCsoportId, null, false, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke);
//elmaradt órarendi (csengetési rendhez kötött) órákat nem jelenítjük meg
events.RemoveAll(x => x.isElmaradt && x.CsengetesiRendId.HasValue);
// Napirend színezés
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
var naplozarasDate = GetNaplozarasDate(start);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.start.Value.Date < naplozarasDate)
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivPiros);
item.colorEnum = EventColorEnum.InaktivPiros;
}
if (item.start.Value.Date < naplozarasDate && item.oraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas)
{
item.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
item.colorEnum = EventColorEnum.InaktivZold;
}
}
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
var orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetAdminNaploEllenorzes(DateTime start, DateTime end, int? tanarId, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var co = GetTanariOrarendOrarendiorakEsTanorak(start, end, tanarId, null, null, SzerepkorTipusEnum.Adminisztrator, true, isFromSzervezet);
return co;
});
}
public OrarendCO GetAdminNemKotottMunkaido(DateTime start, DateTime end, int tanarId, SzerepkorTipusEnum? felhasznaloSzerepkor)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
// Órarend
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, null, null, true, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke);
// Napirend színezés
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId.Value > 0)
{
item.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
item.colorEnum = EventColorEnum.Szurke;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
}
//Kötött munkaidő neveléssel-oktatással le nem kötött része:
var nemKotottMunkaidok = GetNemKotottMunkaIdo(h, start, end, tanarId, true);
events.AddRange(nemKotottMunkaidok);
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetTanariOrarendNemKotottMunkaido(DateTime start, DateTime end, int tanarId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool forceNaploJogEventDekor = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
// Órarend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, null, null, false, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke, forceNaploJogEventDekor: forceNaploJogEventDekor);
//elmaradt órákat nem jelenítjük meg
events.RemoveAll(x => x.isElmaradt);
//tanár más által helyettesített óráit nem jelenítjük meg
events.RemoveAll(x => x.helyettesitoId.HasValue && x.helyettesitoId.Value != tanarId);
// Napirend színezés
foreach (var orarendiEvent in events)
{
if (orarendiEvent.helyettesitoId.IsEntityId())
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId.Value > 0)
{
item.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
item.colorEnum = EventColorEnum.Szurke;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
}
//Kötött munkaidő neveléssel-oktatással le nem kötött része:
var nemKotottMunkaidok = GetNemKotottMunkaIdo(h, start, end, tanarId);
events.AddRange(nemKotottMunkaidok);
HandleAndAddOrarendenKivulIsVanOraHeaderMessage(h, events, nemKotottMunkaidok, RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_kezdoidopontja, RendszerBeallitasTipusEnum.Nem_kotott_munkaido_megjelenesenek_zaroidopontja, false);
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetTanariOrarendFogadoora(DateTime start, DateTime end, int tanarId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool forceNaploJogEventDekor = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
// Órarend:
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, null, null, false, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke, forceNaploJogEventDekor: forceNaploJogEventDekor);
//elmaradt órákat nem jelenítjük meg
events.RemoveAll(x => x.isElmaradt);
//tanár más által helyettesített óráit nem jelenítjük meg
events.RemoveAll(x => x.helyettesitoId.HasValue && x.helyettesitoId.Value != tanarId);
// Napirend színezés
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId.Value > 0)
{
item.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
item.colorEnum = EventColorEnum.Szurke;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
}
//Fogadóóra
var fogadoorak = GetFogadoorak(h, start, end, tanarId);
events.AddRange(fogadoorak);
HandleAndAddOrarendenKivulIsVanOraHeaderMessage(h, events, fogadoorak, RendszerBeallitasTipusEnum.Fogado_Ora_Kezdoidopontja, RendszerBeallitasTipusEnum.Fogado_Ora_Zaroidopontja, false);
//Kötött munkaidő neveléssel-oktatással le nem kötött része:
var nemKotottMunkaidok = GetNemKotottMunkaIdo(h, start, end, tanarId);
foreach (var item in nemKotottMunkaidok)
{
item.colorEnum = EventColorEnum.Szurke;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
}
//Remove a fogadóórás nem kötött munkaidőre
nemKotottMunkaidok.RemoveAll(x => x.start.Equals(fogadoorak.Select(y => y.start)));
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events);
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetTanoraiHelyettesitesek(DateTime start, DateTime end, int? tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var events = GetTanoraiHelyettesites(h, start, end, tanarId);
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events); //Ideiglenes, amíg nem az sp_GetOrarend-et fogja használni
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public List<OrarendCO.Event> GetTanoranKivuliHelyettesitesek(DateTime start, DateTime end, int? tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var events = GetTanoranKivuliFoglalkozasokHelyettesites(h, start, end, tanarId);
// Tanév rendje:
events = HandleAndAddTanevRendje(h, start, end, events); //Ideiglenes, amíg nem az sp_GetOrarend-et fogja használni
var result = new List<OrarendCO.Event>();
result.AddRange(events);
return result;
});
}
public string GetHetirendek()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.OrarendiOra();
var ds = dal.GetHetirendek(TanevId);
return Newtonsoft.Json.JsonConvert.SerializeObject(ds.Tables[0]);
});
}
public string GetNaptariHetekHetirendek(bool isFromSzervezet = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (GridParameters == null)
{
GridParameters = new GridParameters() { OrderBy = "Datum ASC" };
}
var dal = h.OrarendiOra(GridParameters);
var ds = dal.GetNaptariHetekHetirendek(TanevId, true);
int index = 0;
foreach (DataRow item in ds.Tables[0].Rows)
{
if (isFromSzervezet)
{
ds.Tables[0].Rows[index]["Hetirend"] = ((int)HetiRendTipusEnum.MindegyikHet).ToString();
ds.Tables[0].Rows[index]["Hetirend_DNAME"] = HetiRendTipusEnum.MindegyikHet.GetDisplayName(TanevId);
}
else
{
string newValue = ds.Tables[0].Rows[index]["Hetirend_DNAME"].ToString();
ds.Tables[0].Rows[index]["Hetirend_DNAME"] = newValue.Replace("\"", "").Replace("'", "");
}
index++;
}
return Newtonsoft.Json.JsonConvert.SerializeObject(ds.Tables[0]);
});
}
public bool GetIsMunkaszunetiNap(DateTime datum, int osztalycsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.OrarendiOra();
var ds = dal.GetIsMunkaszunetiNap(datum, osztalycsoportId);
return Convert.ToBoolean(ds.Tables[0].Rows[0][0]);
});
}
internal bool GetIsVegzosOsztalyCsoport(int osztalyCsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.OsztalyCsoport();
return dal.GetIsVegzosOsztalyCsoport(osztalyCsoportId);
});
}
public DateTime? GetVegzosUtolsoTanitasiNap()
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.TanevRendjeDal();
DateTime? vegzosUtolsoTanitasiNap = dal.GetVegzosUtolsoTanitasiNap(TanevId);
return vegzosUtolsoTanitasiNap;
});
}
public CalendarMinMaxCO GetCalendarMinMax()
{
var helper = new SystemSettingsHelper(ConnectionType);
TimeSpan rendszerKezdes = helper.GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja);
TimeSpan rendszerVege = helper.GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja);
CalendarMinMaxCO co = new CalendarMinMaxCO()
{
CalendarMin = rendszerKezdes,
CalendarMax = rendszerVege
};
return co;
}
public DataSet CheckTanarOra(DateTime start, DateTime end, int tanarId, int? oraszam, bool isNapirend, bool isEgyediHelyettesites)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.OrarendiOra();
return dal.CheckTanarOra(start, end, tanarId, IntezmenyId, TanevId, oraszam, isNapirend, isEgyediHelyettesites);
});
}
public DateTime GetNaplozarasDate(DateTime? startDate)
{
return GetNaplozarasDate(startDate, withNaploEvesZaras: true).Value;
}
public DateTime? GetHetiHaviNaplozarasDatuma()
{
return GetNaplozarasDate(startDate: null, withNaploEvesZaras: false);
}
private DateTime? GetNaplozarasDate(DateTime? startDate, bool withNaploEvesZaras)
{
DateTime? naplozarasDatuma = null;
if (startDate.HasValue)
{
naplozarasDatuma = startDate.Value;
}
else
{
if (withNaploEvesZaras)
{
var data = new TanevHelper(ConnectionType).GetTanevInfo();
naplozarasDatuma = data.OraFelvetelKezdete;
}
}
var naplozarasTipus = SystemSettingsManager.GetSystemSettingValue<NaplozarasTipusaEnum>(RendszerBeallitasTipusEnum.Havi_vagy_heti_naplozaras, IntezmenyAzonosito, TanevId);
var naplozarasRendszerBeallitasTipus = naplozarasTipus == NaplozarasTipusaEnum.Havi ? RendszerBeallitasTipusEnum.Naplozaras_havi_ertek : RendszerBeallitasTipusEnum.Naplozaras_heti_ertek;
var naplozarasNapja = SystemSettingsManager.GetSystemSettingValue<double>(naplozarasRendszerBeallitasTipus, IntezmenyAzonosito, TanevId);
var now = DateTime.Now;
switch (naplozarasTipus)
{
case NaplozarasTipusaEnum.Havi:
if (now.Day > naplozarasNapja)
{
naplozarasDatuma = new DateTime(now.Year, now.Month, 1);
}
else
{
var elozoHonap = now.AddMonths(-1);
naplozarasDatuma = new DateTime(elozoHonap.Year, elozoHonap.Month, 1);
}
break;
case NaplozarasTipusaEnum.Heti:
var dayOfWeek = now.DayOfWeek;
var day = dayOfWeek == DayOfWeek.Sunday ? 7 : (int)dayOfWeek;
if (day > naplozarasNapja)
{
day = (day + 1) * -1;
}
else
{
day = (day + 6) * -1;
}
naplozarasDatuma = now.Date.AddDays(day);
break;
}
if (withNaploEvesZaras)
{
var naplozarasEvesDatuma = SystemSettingsManager.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Naplozaras_eves_datuma, IntezmenyAzonosito, TanevId);
if (naplozarasEvesDatuma.HasValue && (naplozarasTipus == NaplozarasTipusaEnum.NincsMegadva || naplozarasEvesDatuma.Value > naplozarasDatuma.Value))
{
naplozarasDatuma = naplozarasEvesDatuma.Value;
}
}
return naplozarasDatuma;
}
public DateTime GetErtekelesZarasDatuma()
{
var isCsakNaplozasZarasa = new SystemSettingsHelper(ConnectionType).GetSystemSettingValue<NaplozarasErvenyessegiKoreEnum>(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore) == NaplozarasErvenyessegiKoreEnum.CsakNaplozasZarasa;
if (isCsakNaplozasZarasa)
{
var tanevData = new TanevHelper(ConnectionType).GetTanevInfo();
return tanevData.OraFelvetelKezdete;
}
else
{
return GetNaplozarasDate(null);
}
}
/// INFO @DevKornel: Mobil használja
private List<OrarendCO.ExtendedEvent> GetTanuloOrarendData(IDalHandler h, DataSet dsOrarend, DateTime startDate, DateTime endDate, EventColorEnum? allCollor = null, bool isCsokkentettGondviselo = false, int? tanuloId = null, bool isMobilHivas = false, bool isTanevRendjeEsemenyekAddEnabled = true, bool isKellOrarendiOraOrTanitasiOraTulajdonsag = true, IEnumerable<IDKT_Feladat> haziFeladatok = null)
{
var dalHandlerConnectionType = new DalHandlerConnectionType(ConnectionType, h);
var helper = new SzamonkeresElorejelzesHelper(dalHandlerConnectionType);
haziFeladatok = haziFeladatok?.ToList() ?? new DktFeladatHelper(dalHandlerConnectionType).GetFeladatokByDateRange(startDate, endDate, true, FeladatTipusEnum.HaziFeladat);
var systemSettingsHelper = new SystemSettingsHelper(dalHandlerConnectionType);
List<ISzamonkeresElorejelzes> bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(startDate, endDate);
var events = new List<OrarendCO.ExtendedEvent>();
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var oraDataRows = dsOrarend.Tables[0].Rows.Cast<DataRow>();
// @Tojcsi: Csak akkor kell az időpont szűrés, ha nem 0 órától 0 óráig kérdezzük le.
if (!(startDate.TimeOfDay == TimeSpan.Zero && endDate.TimeOfDay == TimeSpan.Zero))
{
oraDataRows = oraDataRows.Where(row => Convert.ToDateTime(row["OraVege"]) >= startDate && Convert.ToDateTime(row["OraKezdete"]) <= endDate);
}
var tanitasiOraIdList = oraDataRows.Where(row => row.Field<string>("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"]));
var digitalisInformaciokByTanitasiOraIds = new Dictionary<int, IGrouping<int, DigitalisInformacioResponseDao>>();
if (tanitasiOraIdList.Any())
{
digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h))
.GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList)
.ToDaoList<DigitalisInformacioResponseDao>()
.GroupBy(x => x.TanitasiOraId)
.ToDictionary(x => x.Key, x => x);
}
foreach (DataRow row in oraDataRows)
{
// Órarendi órák és tanórák
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
int? rowHelyettesito = DbHasValue(row["HelyettesitoTanarID"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarID"]) : (int?)null;
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? isMobilHivas ? row["HelyettesitoTanarNev"].ToString() : string.Format(OrarendResource.Helyettesito, row["HelyettesitoTanarNev"].ToString()) : "";
// Helyettesítés csak akkor látható tanulónál, ha be van kapcsolva a rendszerbeállításokba, vagy már naplózott az óra.
var isHelyettesitesLathato = systemSettingsHelper.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.helyettesites_lathatosaga_az_ellenorzoben);
var oraTipus = row.Field<string>("OraTipus");
var isNaplozottOra = oraTipus == "TanitasiOra";
if (rowHelyettesito.HasValue && !string.IsNullOrWhiteSpace(helyettesitoTanar) && (isHelyettesitesLathato || isNaplozottOra))
{
orarendiEvent.TanarNev = isMobilHivas ? row["TanarNev"].ToString() : helyettesitoTanar;
orarendiEvent.HelyettesNev = isMobilHivas ? helyettesitoTanar : null;
orarendiEvent.helyettesitesId = row["HelyettesitesId"] != DBNull.Value ? SDAConvert.ToInt32(row["HelyettesitesId"]) : (int?)null;
orarendiEvent.helyettesitoId = rowHelyettesito;
orarendiEvent.TanarId = rowHelyettesito.Value;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
orarendiEvent.title = isCsokkentettGondviselo ? orarendiEvent.Tantargy : string.Format("{0}-{1}\n{2}\n({3})",
orarendiEvent.Tantargy,
orarendiEvent.OsztalyCsoport,
orarendiEvent.TanarNev,
orarendiEvent.Terem);
orarendiEvent.hasBejelentettSzamonkeres = bejelentettSzamonkeresek.Any(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.hasHaziFeladat = haziFeladatok.Any(x =>
(
(x.TantargyId == SDAConvert.ToInt32(row["TantargyId"]) &&
x.OsztalyCsoportId == SDAConvert.ToInt32(row["OsztCsopId"]) &&
x.AlkalmazottId == SDAConvert.ToInt32(row["TanarID"]) &&
x.Datum == SDAConvert.ToDateTime(row["Datum"]) &&
((x.Oraszam.HasValue && x.Oraszam.Value == SDAConvert.ToInt32(row["Oraszam"])) ||
(x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == SDAConvert.ToDateTime(row["OraKezdete"]).Value.TimeOfDay))
)
||
x.TanitasiOraId == (row["ID"] != DBNull.Value ? SDAConvert.ToInt32(row["ID"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.BejelentettSzamonkeresIdList = bejelentettSzamonkeresek.Where(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue)).Select(item => item.ID).ToArray();
orarendiEvent.TanuloJelenlet = MulasztasTipusEnum.na;
orarendiEvent.EvesOraSorszam = SDAConvert.ToInt32(row["EvesOraSorszam"]);
if (orarendiEvent.hasHaziFeladat && tanuloId.HasValue)
{
var hf = haziFeladatok.Where(x =>
(
(x.TantargyId == SDAConvert.ToInt32(row["TantargyId"]) &&
x.OsztalyCsoportId == SDAConvert.ToInt32(row["OsztCsopId"]) &&
x.AlkalmazottId == SDAConvert.ToInt32(row["TanarID"]) &&
x.Datum == SDAConvert.ToDateTime(row["Datum"]) &&
((x.Oraszam.HasValue && x.Oraszam.Value == SDAConvert.ToInt32(row["Oraszam"])) ||
(x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == SDAConvert.ToDateTime(row["OraKezdete"]).Value.TimeOfDay))
)
||
x.TanitasiOraId == (row["ID"] != DBNull.Value ? SDAConvert.ToInt32(row["ID"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue)).FirstOrDefault();
if (hf != null)
{
if (hf.BeadasHatarido < DateTime.Now.Date)
orarendiEvent.IsHaziFeladatLejart = true;
}
}
var tulajdonsagCO = new TanoraCO();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
tulajdonsagCO.OrarendiOra = SDAConvert.ToInt32(row["ID"]);
if (isKellOrarendiOraOrTanitasiOraTulajdonsag)
{
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, false);
}
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
break;
case "TanitasiOra":
orarendiEvent.oraType = CalendarOraTypeEnum.TanitasiOra;
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
if (isKellOrarendiOraOrTanitasiOraTulajdonsag)
{
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, true);
}
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
orarendiEvent.UseCalendarTooltip = true;
if (digitalisInformaciokByTanitasiOraIds.TryGetValue(orarendiEvent.id, out var digitalisInformacio))
{
var digitalisEszkozTipusId = digitalisInformacio.FirstOrDefault().DigitalisEszkozTipusId;
var digitalisPlatformTipusId = digitalisInformacio.FirstOrDefault().DigitalisPlatformTipusId;
orarendiEvent.IsDigitalisOra = digitalisEszkozTipusId.HasValue && digitalisEszkozTipusId != (int)DigEszkozTipusEnum.na;
orarendiEvent.DigitalisEszkozTipus = digitalisEszkozTipusId.HasValue ? ((DigEszkozTipusEnum)digitalisEszkozTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisPlatformTipus = digitalisPlatformTipusId.HasValue ? ((DigPlatformTipusEnum)digitalisPlatformTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisTamogatoEszkozTipusList = digitalisInformacio.NotNullAndAny() ? digitalisInformacio.Select(x => ((DigTamEszkozTipusEnum)x?.DigitalisTamogatoEszkozTipusId).GetDisplayName(TanevId)).ToList() : new List<string>();
}
var digitalisOraJellemzoString = string.Format(OrarendResource.OnlineOraTooltipMsg
, orarendiEvent.DigitalisEszkozTipus ?? "-"
, orarendiEvent.DigitalisPlatformTipus ?? "-"
, orarendiEvent.DigitalisTamogatoEszkozTipusList.Any() ? string.Join(", ", orarendiEvent.DigitalisTamogatoEszkozTipusList) : "-");
orarendiEvent.TooltipMsg += digitalisOraJellemzoString;
break;
}
var megtartott = DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]));
var hianyzott = Convert.ToBoolean(row["Hianyzas_BOOL"]);
var kesett = Convert.ToBoolean(row["Keses_BOOL"]);
string orarendiEventColorName = null;
EventColorEnum? orarendiEventColorEnum = null;
string orarendiEventTextColor = null;
string orarendiEventBorderColor = null;
string orarendiEventBorderStyle = null;
if (orarendiEvent.oraType == CalendarOraTypeEnum.TanitasiOra)
{
if (megtartott)
{
if (hianyzott)
{
orarendiEventColorName = StringValueUtils.GetStringValue(EventColorEnum.Piros);
orarendiEventColorEnum = EventColorEnum.Piros;
orarendiEvent.TanuloJelenlet = MulasztasTipusEnum.hianyzas;
}
else if (kesett)
{
orarendiEventColorName = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEventColorEnum = EventColorEnum.Narancs;
orarendiEvent.TanuloJelenlet = MulasztasTipusEnum.keses;
}
else
{
orarendiEventColorName = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEventColorEnum = EventColorEnum.Zold;
orarendiEvent.TanuloJelenlet = MulasztasTipusEnum.jelenlet;
}
}
else
{
orarendiEventColorName = StringValueUtils.GetStringValue(EventColorEnum.Atlatszo);
orarendiEventColorEnum = EventColorEnum.Atlatszo;
orarendiEvent.oraType = CalendarOraTypeEnum.UresOra;
orarendiEventTextColor = "#969696";
orarendiEventBorderColor = "#969696";
orarendiEventBorderStyle = "dashed";
orarendiEvent.isElmaradt = true;
orarendiEvent.textLineThrough = true;
}
}
else
{
orarendiEventColorName = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEventColorEnum = EventColorEnum.Szurke;
}
if (allCollor.HasValue)
{
orarendiEvent.color = StringValueUtils.GetStringValue(allCollor.Value);
orarendiEvent.colorEnum = allCollor.Value;
events.Add(orarendiEvent);
continue;
}
if (!string.IsNullOrWhiteSpace(orarendiEventColorName))
orarendiEvent.color = orarendiEventColorName;
if (orarendiEventColorEnum.HasValue)
orarendiEvent.colorEnum = orarendiEventColorEnum.Value;
if (!string.IsNullOrWhiteSpace(orarendiEventTextColor))
orarendiEvent.textColor = orarendiEventTextColor;
if (!string.IsNullOrWhiteSpace(orarendiEventBorderColor))
orarendiEvent.borderColor = orarendiEventBorderColor;
if (!string.IsNullOrWhiteSpace(orarendiEventBorderStyle))
orarendiEvent.borderStyle = orarendiEventBorderStyle;
events.Add(orarendiEvent);
}
/*tanevrendje*/
if (isTanevRendjeEsemenyekAddEnabled)
{
events = HandleAndAddTanevRendje(h, startDate, endDate, events, tanuloId: tanuloId, isMobilHivas: isMobilHivas);
}
/*Van rejtett órarendiÓra*/
/*Mobil miatti fix*/
DataColumnCollection columns = dsOrarend.Tables[0].Columns;
if (columns.Contains("hasRejtettOraKezdete") && columns.Contains("hasRejtettOraVege"))
{
foreach (DataRow item in oraDataRows)
{
if ((item.Field<bool>("hasRejtettOraKezdete") || item.Field<bool>("hasRejtettOraVege"))
&& events.Where(x => x.allDay == true && x.colorEnum == EventColorEnum.Piros && x.datum == Convert.ToDateTime(item["OraKezdete"]).Date).ToList().Count == 0)
{
events.Add(new OrarendCO.ExtendedEvent()
{
allDay = true,
Tema = OrarendResource.AMegjelenitettenKivulIsVanOra,
title = OrarendResource.AMegjelenitettenKivulIsVanOra,
id = SDAConvert.ToInt32(item["ID"]),
color = StringValueUtils.GetStringValue(EventColorEnum.Piros),
colorEnum = EventColorEnum.Piros,
textColor = StringValueUtils.GetStringValue(EventColorEnum.Feher),
oraType = CalendarOraTypeEnum.TanevRendjeEsemeny,
start = Convert.ToDateTime(item["OraKezdete"]),
end = Convert.ToDateTime(item["OraVege"]),
datum = Convert.ToDateTime(item["OraKezdete"]).Date
});
}
}
}
return events;
}
public List<OrarendCO.ExtendedEvent> GetOrarendiOrakEsVagyNapirendekEsTanorak(SzerepkorTipusEnum? felhasznaloSzerepkor, DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId,
int? tanuloId, bool csakOrarend, OrarendTipusEnum orarendTipus, bool isTanuloOrGondviselo, EventColorEnum? allCollor = null, int? teremId = null, bool isOsztaly = true,
OktNevelesiKategoriaEnum? feladatKategoria = null, bool forceNaploJogEventDekor = false)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId,
tanuloId, csakOrarend, orarendTipus, isTanuloOrGondviselo, allCollor, teremId, isOsztaly, feladatKategoria, forceNaploJogEventDekor);
});
}
private List<OrarendCO.ExtendedEvent> GetOrarendiOrakEsVagyNapirendekEsTanorak(IDalHandler h, SzerepkorTipusEnum? felhasznaloSzerepkor, DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId,
int? tanuloId, bool csakOrarend, OrarendTipusEnum orarendTipus, bool isTanuloOrGondviselo, EventColorEnum? allCollor = null, int? teremId = null, bool isOsztaly = true,
OktNevelesiKategoriaEnum? feladatKategoria = null, bool forceNaploJogEventDekor = false, bool osztalyTanuloOrarendbenNemLatszik = false, bool isFromSzervezet = false)
{
var events = new List<OrarendCO.ExtendedEvent>();
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId,
start, end, tanarId, osztalyCsoportId, tanuloId, csakOrarend, orarendTipus, null, teremId, false, feladatKategoria);
List<ISzamonkeresElorejelzes> bejelentettSzamonkeresek = new List<ISzamonkeresElorejelzes>();
if (!isFromSzervezet)
{
var helper = new SzamonkeresElorejelzesHelper(new DalHandlerConnectionType(ConnectionType, h));
bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(start, end);
}
var haziFeladatok = new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatokByDateRange(start, end, isTanuloOrGondviselo, FeladatTipusEnum.HaziFeladat);
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var oraDataRows = dsOrarend.Tables[0].Rows.Cast<DataRow>();
var tanitasiOraIdList = oraDataRows.Where(row => row.Field<string>("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"]));
var digitalisInformaciokByTanitasiOraIds = new Dictionary<int, IGrouping<int, DigitalisInformacioResponseDao>>();
if (tanitasiOraIdList.Any())
{
digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h))
.GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList)
.ToDaoList<DigitalisInformacioResponseDao>()
.GroupBy(x => x.TanitasiOraId)
.ToDictionary(x => x.Key, x => x);
}
foreach (DataRow row in oraDataRows)
{
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
var tulajdonsagCO = new TanoraCO();
OraTipus rowOraTipus = new OraTipus();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
if (orarendiEvent.CsengetesiRendId.HasValue)
{
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
}
else
{
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanoranKivuliFoglalkozas;
}
tulajdonsagCO.OrarendiOra = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, false);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
break;
case "TanitasiOra":
if (orarendiEvent.CsengetesiRendId.HasValue)
{
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanitasiOra;
}
else
{
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas;
}
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, true);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
if (digitalisInformaciokByTanitasiOraIds.TryGetValue(orarendiEvent.id, out var digitalisInformacio))
{
var digitalisEszkozTipusId = digitalisInformacio.FirstOrDefault().DigitalisEszkozTipusId;
var digitalisPlatformTipusId = digitalisInformacio.FirstOrDefault().DigitalisPlatformTipusId;
orarendiEvent.IsDigitalisOra = digitalisEszkozTipusId.HasValue && digitalisEszkozTipusId != (int)DigEszkozTipusEnum.na;
orarendiEvent.DigitalisEszkozTipus = digitalisEszkozTipusId.HasValue ? ((DigEszkozTipusEnum)digitalisEszkozTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisPlatformTipus = digitalisPlatformTipusId.HasValue ? ((DigPlatformTipusEnum)digitalisPlatformTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisTamogatoEszkozTipusList = digitalisInformacio.NotNullAndAny() ? digitalisInformacio.Select(x => ((DigTamEszkozTipusEnum)x?.DigitalisTamogatoEszkozTipusId).GetDisplayName(TanevId)).ToList() : new List<string>();
}
var digitalisEszkozTipus = !string.IsNullOrWhiteSpace(orarendiEvent.DigitalisEszkozTipus) && orarendiEvent.DigitalisEszkozTipus != DigEszkozTipusEnum.na.GetDisplayName(TanevId) ? string.Format(OrarendResource.OnlineOraDigitalisEszkozTipusTooltipMsg, orarendiEvent.DigitalisEszkozTipus) : null;
var digitalisPlatformTipus = !string.IsNullOrWhiteSpace(orarendiEvent.DigitalisPlatformTipus) && orarendiEvent.DigitalisPlatformTipus != DigPlatformTipusEnum.na.GetDisplayName(TanevId) ? string.Format(OrarendResource.OnlineOraDigitalisPlatformTipusTooltipMsg, orarendiEvent.DigitalisPlatformTipus) : null;
var digitalisTamogatoEszkozTipusList = !orarendiEvent.DigitalisTamogatoEszkozTipusList.All(x => x == DigTamEszkozTipusEnum.na.GetDisplayName(TanevId)) ? string.Format(OrarendResource.OnlineOraDigitalisTamogatoEszkozTipusListTooltipMsg, string.Join(", ", orarendiEvent.DigitalisTamogatoEszkozTipusList)) : null;
if (string.IsNullOrWhiteSpace(digitalisEszkozTipus) && string.IsNullOrWhiteSpace(digitalisPlatformTipus) && string.IsNullOrWhiteSpace(digitalisTamogatoEszkozTipusList))
{
orarendiEvent.TooltipMsg += string.Empty;
}
else
{
var digitalisOraJellemzoString = string.Format(OrarendResource.OnlineOraTooltipMsg
, digitalisEszkozTipus
, digitalisPlatformTipus
, digitalisTamogatoEszkozTipusList);
orarendiEvent.TooltipMsg += digitalisOraJellemzoString;
}
break;
}
orarendiEvent.textLineThrough = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke); // Később lehet speciálisabbra állítani, ezen a ponton még elég ez...
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.helyettesitoId = DbHasValue(row["HelyettesitoTanarId"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarId"]) : (int?)null;
orarendiEvent.helyettesitesId = row["HelyettesitesId"] != DBNull.Value ? SDAConvert.ToInt32(row["HelyettesitesId"]) : (int?)null;
orarendiEvent.OraErvenyessegKezdete = row["ErvenyessegKezdete"] != DBNull.Value ? Convert.ToDateTime(row["ErvenyessegKezdete"]).ToShortDateString() : "";
orarendiEvent.OraErvenyessegVege = row["ErvenyessegVege"] != DBNull.Value ? Convert.ToDateTime(row["ErvenyessegVege"]).ToShortDateString() : "";
orarendiEvent.OraKezdete = Convert.ToDateTime(row["OraKezdete"]).ToShortTimeString();
orarendiEvent.OraVege = Convert.ToDateTime(row["OraVege"]).ToShortTimeString();
orarendiEvent.TantargyId = SDAConvert.ToInt32(row["TantargyId"], -1);
orarendiEvent.DisplayTime = false;
int? rowTanarId = DbHasValue(row["TanarID"]) ? SDAConvert.ToInt32(row["TanarID"]) : (int?)null;
int? rowHelyettesito = DbHasValue(row["HelyettesitoTanarID"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarID"]) : (int?)null;
bool rowOratFelhasznaloTartotta = rowTanarId.HasValue && rowTanarId.Value == FelhasznaloId && !rowHelyettesito.HasValue;
bool rowOratFelhasznaloHelyettesitette = rowHelyettesito.HasValue && rowHelyettesito.Value == (tanarId ?? FelhasznaloId);
bool rowIsFelhasznaloErintett = rowOratFelhasznaloTartotta || rowOratFelhasznaloHelyettesitette;
string tanarNev = "";
string oraTulajdonos = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
if (!string.IsNullOrWhiteSpace(helyettesitoTanar))
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("\n{0} [{1}]", oraTulajdonos, helyettesitoTanar);
}
else
{
tanarNev = string.Format("\n[{0}]", helyettesitoTanar);
}
}
else
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("\n{0}", oraTulajdonos);
}
}
var title = string.Format("{1} - {0}\n{2}{3}",
(row["OsztalyNev"] != DBNull.Value ? row["OsztalyNev"].ToString() : ""),
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["TeremNev"] != DBNull.Value ? row["TeremNev"].ToString() : ""),
(tanarNev));
orarendiEvent.title = title;
orarendiEvent.hasBejelentettSzamonkeres = bejelentettSzamonkeresek.Any(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
if (orarendiEvent.hasBejelentettSzamonkeres)
orarendiEvent.BejelentettSzamonkeresContent = bejelentettSzamonkeresek.Where(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue)).First().SzamonkeresMegnevezes;
orarendiEvent.hasHaziFeladat = haziFeladatok.Any(x =>
(
(x.TantargyId == SDAConvert.ToInt32(row["TantargyId"]) &&
x.OsztalyCsoportId == SDAConvert.ToInt32(row["OsztCsopId"]) &&
x.AlkalmazottId == SDAConvert.ToInt32(row["TanarID"]) &&
x.Datum == SDAConvert.ToDateTime(row["Datum"]) &&
((x.Oraszam.HasValue && x.Oraszam.Value == SDAConvert.ToInt32(row["Oraszam"])) ||
(x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == SDAConvert.ToDateTime(row["OraKezdete"]).Value.TimeOfDay))
)
||
x.TanitasiOraId == (row["ID"] != DBNull.Value ? SDAConvert.ToInt32(row["ID"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
if (allCollor.HasValue)
{
orarendiEvent.color = StringValueUtils.GetStringValue(allCollor.Value);
orarendiEvent.colorEnum = allCollor.Value;
if (!orarendiEvent.CsengetesiRendId.HasValue && (isOsztaly || (!isOsztaly && (int)row["OsztCsopId"] == osztalyCsoportId.Value)))
{
events.Add(orarendiEvent); //Napirend esete
}
else if (orarendiEvent.hanyadikora <= orarendiEvent.maxNapiOraszam && (isOsztaly || (!isOsztaly && (int)row["OsztCsopId"] == osztalyCsoportId.Value)))
{
events.Add(orarendiEvent);
continue;
}
}
bool rowHasMegtartott = DbHasValue(row["Megtartott_BOOL"]); // Ha a rowHasMegtartott false, akkor §§
bool rowIsMegtartott = SDAConvert.ToBoolean(row["Megtartott_BOOL"]);
bool rowIsHianyzas = SDAConvert.ToBoolean(row["Hianyzas_BOOL"]);
bool rowIsKeses = SDAConvert.ToBoolean(row["Keses_BOOL"]);
bool rowIsAdminAltalKiirt = SDAConvert.ToBoolean(row["AdminAltalKiirt_BOOL"]);
DateTime? rowOraKezdete = SDAConvert.ToDateTime(row["OraKezdete"]);
DateTime? rowOraVege = SDAConvert.ToDateTime(row["OraVege"]);
//a boolos mezős nem nullable-ként vannak feltöltve
if (felhasznaloSzerepkor == SzerepkorTipusEnum.Adminisztrator && !forceNaploJogEventDekor)
{
SetAdminjogEventDekor(rowOraTipus, orarendiEvent);
}
else if (felhasznaloSzerepkor != SzerepkorTipusEnum.Ellenorzo)
{
SetNaploJogEventDekor(rowOraTipus, rowOratFelhasznaloTartotta || forceNaploJogEventDekor, rowHelyettesito, rowIsMegtartott, orarendiEvent, rowIsAdminAltalKiirt, rowIsFelhasznaloErintett || forceNaploJogEventDekor, rowHasMegtartott, rowOraKezdete, rowOratFelhasznaloHelyettesitette);
}
else
{
SetEllenorzojogEventDekor(rowOraTipus, rowIsMegtartott, orarendiEvent, rowIsHianyzas, rowIsKeses, rowOraVege);
}
/*Tanarnal a helye*/
if (rowOraTipus == OraTipus.TanitasiOra && orarendiEvent.helyettesitoId.HasValue)
{
if (FelhasznaloId != orarendiEvent.helyettesitoId && felhasznaloSzerepkor != SzerepkorTipusEnum.Adminisztrator)
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.ZoldNarancs);
}
else
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
if (!orarendiEvent.CsengetesiRendId.HasValue)
{
//Napirend esetén
continue;
}
if (orarendiEvent.hanyadikora <= orarendiEvent.maxNapiOraszam && (isOsztaly || (!isOsztaly && (int)row["OsztCsopId"] == osztalyCsoportId.Value)))
events.Add(orarendiEvent);
}
return events;
}
private List<OrarendCO.ExtendedEvent> GetAdminOsztalyOrarendiOrakEsTanorak(IDalHandler h, DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, int? tanuloId)
{
var osztalyDal = h.OsztalyCsoport();
var isOsztaly = osztalyDal.GetIsOsztaly(osztalyCsoportId.Value);
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, tanarId, osztalyCsoportId, tanuloId, true, OrarendTipusEnum.CsengetesiRendhezKotottOrarend, null, null, false, null);
List<ISzamonkeresElorejelzes> bejelentettSzamonkeresek = new List<ISzamonkeresElorejelzes>();
var helper = new SzamonkeresElorejelzesHelper(new DalHandlerConnectionType(ConnectionType, h));
bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(start, end);
var haziFeladatok = new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatokByDateRange(start, end, false, FeladatTipusEnum.HaziFeladat);
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var orarendioraLista = new List<OrarendCO.ExtendedEvent>();
foreach (DataRow row in dsOrarend.Tables[0].Rows)
{
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
OraTipus rowOraTipus = new OraTipus();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
break;
}
string tanarNev = "";
string oraTulajdonos = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
if (!string.IsNullOrWhiteSpace(helyettesitoTanar))
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("{0} [{1}]", oraTulajdonos, helyettesitoTanar);
}
else
{
tanarNev = string.Format("[{0}]", helyettesitoTanar);
}
}
else
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("{0}", oraTulajdonos);
}
}
var title = string.Format("{0}{1}\n{2}\n{3}",
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["OsztalyNev"] != DBNull.Value ? " - " + row["OsztalyNev"].ToString() : ""),
tanarNev,
(row["TeremNev"] != DBNull.Value ? string.Format("({0})", row["TeremNev"].ToString()) : ""));
orarendiEvent.title = title;
orarendiEvent.hasBejelentettSzamonkeres = bejelentettSzamonkeresek.Any(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.hasHaziFeladat = haziFeladatok.Any(x =>
(x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) ||
x.TanitasiOraId == (row["Id"] != DBNull.Value ? SDAConvert.ToInt32(row["Id"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.textLineThrough = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
orarendiEvent.colorEnum = EventColorEnum.Kek;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.helyettesitoId = DbHasValue(row["HelyettesitoTanarId"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarId"]) : (int?)null;
orarendiEvent.OraErvenyessegKezdete = Convert.ToDateTime(row["ErvenyessegKezdete"]).ToShortDateString();
orarendiEvent.OraErvenyessegVege = Convert.ToDateTime(row["ErvenyessegVege"]).ToShortDateString();
var orarendTulajdonsagCO = new OrarendiOraCO();
new OrarendiOraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraTulajdonsagok(orarendTulajdonsagCO, SDAConvert.ToInt32(row["ID"]));
orarendiEvent.OnlineOra = orarendTulajdonsagCO.OnlineOra;
if (orarendiEvent.hanyadikora <= orarendiEvent.maxNapiOraszam && (isOsztaly || (!isOsztaly && (int)row["OsztCsopId"] == osztalyCsoportId.Value)))
orarendioraLista.Add(orarendiEvent);
}
return orarendioraLista;
}
private List<OrarendCO.ExtendedEvent> GetCsengetesiRend(IDalHandler h, DateTime start, DateTime end, int? osztalyCsoportId, List<OrarendCO.ExtendedEvent> events, bool isOsszefuggoSzakmaiGyakorlat = false, DateTime? szakmaiGyakKezdDatum = null, DateTime? szakmaiGyakVegDatum = null)
{
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var csengetesiRendEventList = new List<OrarendCO.ExtendedEvent>();
if ((end - start).TotalDays > 10)
{
return csengetesiRendEventList;
}
// Végzős OsztalyCsoport esetén ne jelenjen meg a csengetési rend
// Vizsgáljuk meg hogy van-e megadva osztálycsoport és ha igen, akkor végzős-e... ez esetben az utolsó tanítási napjuk után ne legyen csengetési rend megjelenítve
if (osztalyCsoportId.HasValue && GetIsVegzosOsztalyCsoport(osztalyCsoportId.Value))
{
var ocsHelper = new OsztalyCsoportHelper(connectionType);
var tanevrendHelper = new TanevrendHelper(connectionType);
var azonosito = new IntezmenyHelper(connectionType).GetIntezmenyiAdatok().IntezmenyAzonosito;
var utolsoNap = ocsHelper.GetVegzosUtolsoNapByOsztalycsoportId(azonosito, osztalyCsoportId.Value);
if (utolsoNap != null && utolsoNap.Value < end)
{
end = utolsoNap.Value.AddDays(1);
}
}
var csengetesirendHelper = new CsengetesiRendHelper(connectionType);
var datumCsengetesiRendList = csengetesirendHelper.GetCsengetesiRendekIdoszakra(start, end);
var startEndDifference = (end - start).Days;
var aktivCsengetesiRendId = csengetesirendHelper.GetAktivCsengetesiRendId();
var csengetesirendOrakHelper = new CsengetesiRendOrakHelper(connectionType);
var csengetesiRendek = new Dictionary<int, DataTable>();
var aktivCsengetesiRendDT = csengetesirendOrakHelper.GetCsengetesirendOrakNaptarhoz(aktivCsengetesiRendId);
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(connectionType).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
for (int i = 0; i < startEndDifference; i++)
{
var aktualisDatum = new DateTime(start.Year, start.Month, start.Day).AddDays(i);
var csengetesirendId = GetCsengetesiRendForDate(aktualisDatum, datumCsengetesiRendList, aktivCsengetesiRendId, foglalkozasok_Rogzitese_Hetvegere, osztalyCsoportId);
DataTable csengetesiRendDT = null;
if (csengetesirendId.HasValue)
{
if (!csengetesiRendek.TryGetValue(csengetesirendId.Value, out csengetesiRendDT))
{
csengetesiRendDT = csengetesirendOrakHelper.GetCsengetesirendOrakNaptarhoz(csengetesirendId.Value);
csengetesiRendek.Add(csengetesirendId.Value, csengetesiRendDT);
}
}
else
{
continue;
}
foreach (DataRow item in csengetesiRendDT.Rows)
{
var orarendiEvent = new OrarendCO.ExtendedEvent();
DateTime kezdete = SDAConvert.ToDateTime(item["c_kezdete"]).Value;
DateTime vege = SDAConvert.ToDateTime(item["c_vege"]).Value;
orarendiEvent.start =
new DateTime(start.Year, start.Month, (start.Day), kezdete.Hour, kezdete.Minute, 0).AddDays(i);
orarendiEvent.end =
new DateTime(start.Year, start.Month, (start.Day), vege.Hour, vege.Minute, 0).AddDays(i);
orarendiEvent.id = SDAConvert.ToInt32(item["ID"]);
orarendiEvent.allDay = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Atlatszo);
orarendiEvent.colorEnum = EventColorEnum.Atlatszo;
orarendiEvent.oraType = CalendarOraTypeEnum.UresOra;
orarendiEvent.textColor = "#969696";
orarendiEvent.borderColor = "#969696";
orarendiEvent.borderStyle = "dashed";
orarendiEvent.hanyadikora = item["c_oraszam"] != DBNull.Value ? SDAConvert.ToInt32(item["c_oraszam"]) : -1;
orarendiEvent.text = item["c_oraszam"].ToString();
orarendiEvent.oraszam = item["c_oraszam"] != DBNull.Value
? ""
: (item["c_oraszam"].ToString() + ". " + StringResourcesUtil.GetString(219).ToLower() /*Óra*/);
if (!events.Any(x => x.hanyadikora == orarendiEvent.hanyadikora
&& x.start.Value.Date == orarendiEvent.start.Value.Date
&& x.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny))
{
csengetesiRendEventList.Add(orarendiEvent);
}
}
}
var tanevRendHelper = new TanevrendHelper(connectionType);
var tanevHelper = new TanevHelper(connectionType);
var tanevCO = tanevHelper.GetTanevInfo();
if (!isOsszefuggoSzakmaiGyakorlat)
{
return csengetesiRendEventList.Where(x => x.start.Value.Date <= tanevCO.UtolsoTanitasiNap && x.start.Value.Date >= tanevCO.OraFelvetelKezdete && tanevRendHelper.IsOrarendiNap(x.start.Value.Date, null)).ToList();
}
return csengetesiRendEventList.Where(x => x.start.Value.Date <= szakmaiGyakVegDatum && (x.start.Value.Date >= szakmaiGyakKezdDatum || (tanevCO.UtolsoTanitasiNap >= x.start.Value.Date && tanevRendHelper.IsOrarendiNap(x.start.Value.Date, null)))).ToList();
}
private List<OrarendCO.ExtendedEvent> GetSzervezetCsengetesiRend(IDalHandler h, DateTime start, DateTime end, List<OrarendCO.ExtendedEvent> events)
{
var connectionType = new DalHandlerConnectionType(ConnectionType, h);
var csengetesiRendEventList = new List<OrarendCO.ExtendedEvent>();
if ((end - start).TotalDays > 10)
{
return csengetesiRendEventList;
}
var csengetesirendHelper = new CsengetesiRendHelper(connectionType);
var datumCsengetesiRendList = csengetesirendHelper.GetCsengetesiRendekIdoszakra(start, end);
var startEndDifference = (end - start).Days;
var aktivCsengetesiRendId = csengetesirendHelper.GetAktivCsengetesiRendId();
var csengetesirendOrakHelper = new CsengetesiRendOrakHelper(connectionType);
var csengetesiRendek = new Dictionary<int, DataTable>();
var aktivCsengetesiRendDT = csengetesirendOrakHelper.GetCsengetesirendOrakNaptarhoz(aktivCsengetesiRendId);
for (int i = 0; i < startEndDifference; i++)
{
var aktualisDatum = new DateTime(start.Year, start.Month, start.Day).AddDays(i);
var csengetesirendId = GetCsengetesiRendForDate(aktualisDatum, datumCsengetesiRendList, aktivCsengetesiRendId, FoglalkozasokRogziteseHetvegere.Engedelyezett);
DataTable csengetesiRendDT = null;
if (csengetesirendId.HasValue)
{
if (!csengetesiRendek.TryGetValue(csengetesirendId.Value, out csengetesiRendDT))
{
csengetesiRendDT = csengetesirendOrakHelper.GetCsengetesirendOrakNaptarhoz(csengetesirendId.Value);
csengetesiRendek.Add(csengetesirendId.Value, csengetesiRendDT);
}
}
else
{
continue;
}
foreach (DataRow item in csengetesiRendDT.Rows)
{
var orarendiEvent = new OrarendCO.ExtendedEvent();
DateTime kezdete = SDAConvert.ToDateTime(item["c_kezdete"]).Value;
DateTime vege = SDAConvert.ToDateTime(item["c_vege"]).Value;
orarendiEvent.start =
new DateTime(start.Year, start.Month, (start.Day), kezdete.Hour, kezdete.Minute, 0).AddDays(i);
orarendiEvent.end =
new DateTime(start.Year, start.Month, (start.Day), vege.Hour, vege.Minute, 0).AddDays(i);
orarendiEvent.id = SDAConvert.ToInt32(item["ID"]);
orarendiEvent.allDay = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Atlatszo);
orarendiEvent.colorEnum = EventColorEnum.Atlatszo;
orarendiEvent.oraType = CalendarOraTypeEnum.UresOra;
orarendiEvent.textColor = "#969696";
orarendiEvent.borderColor = "#969696";
orarendiEvent.borderStyle = "dashed";
orarendiEvent.hanyadikora = item["c_oraszam"] != DBNull.Value ? SDAConvert.ToInt32(item["c_oraszam"]) : -1;
orarendiEvent.text = item["c_oraszam"].ToString();
orarendiEvent.oraszam = item["c_oraszam"] != DBNull.Value
? ""
: (item["c_oraszam"].ToString() + ". " + StringResourcesUtil.GetString(219).ToLower() /*Óra*/);
if (!events.Any(x => x.hanyadikora == orarendiEvent.hanyadikora
&& x.start.Value.Date == orarendiEvent.start.Value.Date
&& x.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny))
{
csengetesiRendEventList.Add(orarendiEvent);
}
}
}
var tanevRendHelper = new TanevrendHelper(connectionType);
var tanevHelper = new TanevHelper(connectionType);
var tanevCO = tanevHelper.GetTanevInfo();
return csengetesiRendEventList.Where(x => x.start.Value.Date <= tanevCO.UtolsoNap && x.start.Value.Date >= tanevCO.OraFelvetelKezdete).ToList();
}
/// INFO @DevKornel: Mobil használja
public List<OrarendCO.ExtendedEvent> HandleAndAddTanevRendje(IDalHandler h, DateTime start, DateTime end, List<OrarendCO.ExtendedEvent> events, bool useFilter = false, int? tanuloId = null, bool isMobilHivas = false, bool csakGlobal = false, int? osztalycsoportId = null)
{
var helper = new TanevrendHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanevrendek = helper.GetTanevrendekOsztalyCsoportokkal(start, end, tanuloId);
if (useFilter)
events = FilterOutEventByTanevRendje(h, tanevrendek.Tables[0], events, helper);
var distinctView = !osztalycsoportId.IsEntityId() ? new DataView(tanevrendek.Tables[0]) :
new DataView(tanevrendek.Tables[0], string.Format("OsztalyCsoportId = {0} OR Global = 'T'", osztalycsoportId), "OsztalyCsoportId DESC", DataViewRowState.ModifiedCurrent);
events.AddRange(ConvertTanevEsemenyToEvent(distinctView.ToTable(true, "ID", "Datum", "NapTip_DNAME", "OrarendiNap", "HetNapja_DNAME", "Global", "Megjegyzes"), csakGlobal, tanuloId, osztalycsoportId, isMobilHivas));
return events;
}
public List<NemKotottMunkaidoCO> GetNemKotottMunkaIdo(DateTime start, DateTime end, string groupId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var list = new List<NemKotottMunkaidoCO>();
var dal = h.OrarendiOra();
var ds = dal.GetNemKotottMunkaIdoByGroupId(IntezmenyId, TanevId, start, end, groupId);
foreach (DataRow row in ds.Tables[0].Rows)
{
list.Add(new NemKotottMunkaidoCO
{
Id = SDAConvert.ToInt32(row["Id"]),
GroupId = SDAConvert.ToString(row["GroupID"]),
TanarId = SDAConvert.ToInt32(row["TanarID"]),
TulajId = SDAConvert.ToInt32(row["TulajdonosID"]),
Kezdete = SDAConvert.ToDateTime(row["Kezdete"]).Value,
Vege = SDAConvert.ToDateTime(row["Vege"]).Value,
TorvenyKategoriaId = SDAConvert.ToInt32(row["TorvenyKategoriaID"]),
Megtartott = SDAConvert.ToBooleanFromTF(row["Megtartott"]),
Megjegyzes = SDAConvert.ToString(row["Megjegyzes"]),
NaplozottMegjegyzes = SDAConvert.ToString(row["NaplozottMegjegyzes"])
});
}
return list;
});
}
/// INFO @DevKornel: Mobil használja
internal List<OrarendCO.ExtendedEvent> ConvertTanevEsemenyToEvent(DataTable table, bool csakGlobal = false, int? tanuloId = null, int? osztalycsoportId = null, bool isMobilHivas = false)
{
var tanevEsemenyeiLista = new List<OrarendCO.ExtendedEvent>();
List<TanevrendCO> tanevRendList = table.Rows.Cast<DataRow>().Select(x => new TanevrendCO
{
ID = SDAConvert.ToInt32(x["ID"]),
IsGlobal = SDAConvert.ToBooleanFromTF(x["Global"], false),
OrarendiNap = SDAConvert.ToBooleanFromTF(x["OrarendiNap"], false),
Datum = SDAConvert.ToDateTime(x["Datum"]).Value,
NapTipusNev = SDAConvert.ToString(x["NapTip_DNAME"]),
HetNapjaNev = SDAConvert.ToString(x["HetNapja_DNAME"]),
Megjegyzes = SDAConvert.ToString(x["Megjegyzes"])
}).ToList();
foreach (TanevrendCO item in tanevRendList.OrderBy(x => x.IsGlobal))
{
if (item.IsGlobal || !csakGlobal)
{
var orarendiEvent = new OrarendCO.ExtendedEvent()
{
allDay = true,
start = item.Datum,
end = item.Datum,
title = $"{(item.IsGlobal || isMobilHivas ? "" : " * ")}{item.NapTipusNev} {(item.OrarendiNap ? "" : $"({OrarendResource.NemOrarendiNap})")} {(string.IsNullOrWhiteSpace(item.HetNapjaNev) ? "" : $"({item.HetNapjaNev})")}",
id = item.ID.Value,
color = StringValueUtils.GetStringValue(EventColorEnum.Narancs),
colorEnum = EventColorEnum.Narancs,
oraType = CalendarOraTypeEnum.TanevRendjeEsemeny,
Tema = item.Megjegyzes
};
if (osztalycsoportId.IsEntityId())
{
if (tanevRendList.Where(x => x.Datum.Date == item.Datum.Date).ToList().Count == 1 || !tanevEsemenyeiLista.Exists(x => x.start.Value.Date == item.Datum.Date))
{
tanevEsemenyeiLista.Add(orarendiEvent);
}
}
else
{
if (!tanuloId.IsEntityId() || !tanevRendList.Exists(x => x.Datum.Date == item.Datum.Date && !x.IsGlobal) || !item.IsGlobal)
{
tanevEsemenyeiLista.Add(orarendiEvent);
}
}
}
}
return tanevEsemenyeiLista;
}
private List<OrarendCO.ExtendedEvent> GetTanoranKivuliFoglalkozasokHelyettesites(IDalHandler h, DateTime start, DateTime end, int? tanarId)
{
var tanoranKivuliFoglalkozasokLista = new List<OrarendCO.ExtendedEvent>();
var orarendiOraDal = h.OrarendiOra();
var tanoranKivuliFoglalkozasok = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, tanarId, null, null, false, OrarendTipusEnum.Napirend, null, null, false, null);
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var dataRows = tanoranKivuliFoglalkozasok.Tables[0].Rows.Cast<DataRow>();
var tanitasiOraIdList = dataRows.Where(row => row.Field<string>("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"]));
var digitalisInformaciokByTanitasiOraIds = new Dictionary<int, IGrouping<int, DigitalisInformacioResponseDao>>();
if (tanitasiOraIdList.Any())
{
digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h))
.GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList)
.ToDaoList<DigitalisInformacioResponseDao>()
.GroupBy(x => x.TanitasiOraId)
.ToDictionary(x => x.Key, x => x);
}
foreach (DataRow row in dataRows)
{
string tanarNev = "";
string oraTulajdonos = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
if (!string.IsNullOrWhiteSpace(helyettesitoTanar) && !string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n{0} [{1}]", oraTulajdonos, helyettesitoTanar); }
else if (string.IsNullOrWhiteSpace(helyettesitoTanar) && !string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n{0}", oraTulajdonos); }
else if (!string.IsNullOrWhiteSpace(helyettesitoTanar) && string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n[{0}]", helyettesitoTanar); }
var customTitle = string.Format("{1} - {0}\n{2}{3}",
(row["OsztalyNev"] != DBNull.Value ? row["OsztalyNev"].ToString() : ""),
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["TeremNev"] != DBNull.Value ? row["TeremNev"].ToString() : ""),
(tanarNev));
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.title = customTitle;
orarendiEvent.helyettesitesId = row["HelyettesitesId"] != DBNull.Value ? SDAConvert.ToInt32(row["HelyettesitesId"]) : (int?)null;
orarendiEvent.helyettesitoId = row["HelyettesitoTanarID"] != DBNull.Value ? SDAConvert.ToInt32(row["HelyettesitoTanarID"]) : (int?)null;
orarendiEvent.DisplayTime = true;
var rowOraTipus = new OraTipus();
var tulajdonsagCO = new TanoraCO();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanoranKivuliFoglalkozas;
tulajdonsagCO.OrarendiOra = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, false);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
orarendiEvent.UseCalendarTooltip = true;
break;
case "TanitasiOra":
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas;
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, true);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
if (digitalisInformaciokByTanitasiOraIds.TryGetValue(orarendiEvent.id, out var digitalisInformacio))
{
var digitalisEszkozTipusId = digitalisInformacio.FirstOrDefault().DigitalisEszkozTipusId;
var digitalisPlatformTipusId = digitalisInformacio.FirstOrDefault().DigitalisPlatformTipusId;
orarendiEvent.IsDigitalisOra = digitalisEszkozTipusId.HasValue && digitalisEszkozTipusId != (int)DigEszkozTipusEnum.na;
orarendiEvent.DigitalisEszkozTipus = digitalisEszkozTipusId.HasValue ? ((DigEszkozTipusEnum)digitalisEszkozTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisPlatformTipus = digitalisPlatformTipusId.HasValue ? ((DigPlatformTipusEnum)digitalisPlatformTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisTamogatoEszkozTipusList = digitalisInformacio.NotNullAndAny() ? digitalisInformacio.Select(x => ((DigTamEszkozTipusEnum)x?.DigitalisTamogatoEszkozTipusId).GetDisplayName(TanevId)).ToList() : new List<string>();
}
var digitalisOraJellemzoString = string.Format(OrarendResource.OnlineOraTooltipMsg
, orarendiEvent.DigitalisEszkozTipus ?? "-"
, orarendiEvent.DigitalisPlatformTipus ?? "-"
, orarendiEvent.DigitalisTamogatoEszkozTipusList.Any() ? string.Join(", ", orarendiEvent.DigitalisTamogatoEszkozTipusList) : "-");
orarendiEvent.TooltipMsg += digitalisOraJellemzoString;
orarendiEvent.UseCalendarTooltip = true;
break;
}
bool rowIsMegtartott = SDAConvert.ToBoolean(row["Megtartott_BOOL"]);
SetAdminjogEventDekor(rowOraTipus, orarendiEvent);
if (rowOraTipus == OraTipus.OrarendiOra)
{
if (row["HelyettesitesId"] != DBNull.Value)
{
var hId = SDAConvert.ToInt32(row["HelyettesitesId"]);
var hTanarId = SDAConvert.ToInt32(row["HelyettesitoTanarId"]);
if (hTanarId == tanarId)
{
orarendiEvent.helyettesitesId = hId;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEvent.colorEnum = EventColorEnum.Narancs;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.VilagosKek);
}
else
{
orarendiEvent.helyettesitesId = hId;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEvent.colorEnum = EventColorEnum.Narancs;
}
}
else
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
orarendiEvent.colorEnum = EventColorEnum.Kek;
}
}
if (rowOraTipus == OraTipus.TanitasiOra)
{
if (SDAConvert.ToBoolean(row["AdminAltalKiirt_BOOL"]) && !rowIsMegtartott)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.textLineThrough = true;
}
if (orarendiEvent.helyettesitoId.HasValue)
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
tanoranKivuliFoglalkozasokLista.Add(orarendiEvent);
}
return tanoranKivuliFoglalkozasokLista;
}
private List<OrarendCO.ExtendedEvent> GetTanoraiHelyettesites(IDalHandler h, DateTime start, DateTime end, int? tanarId)
{
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, tanarId, null, null, false, OrarendTipusEnum.Minden, null, null, false, null);
var events = new List<OrarendCO.ExtendedEvent>();
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var oraDataRows = dsOrarend.Tables[0].Rows.Cast<DataRow>();
var tanitasiOraIdList = oraDataRows.Where(row => row.Field<string>("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"]));
var digitalisInformaciokByTanitasiOraIds = new Dictionary<int, IGrouping<int, DigitalisInformacioResponseDao>>();
if (tanitasiOraIdList.Any())
{
digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h))
.GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList)
.ToDaoList<DigitalisInformacioResponseDao>()
.GroupBy(x => x.TanitasiOraId)
.ToDictionary(x => x.Key, x => x);
}
foreach (DataRow row in oraDataRows)
{
string tanarNev = "";
string oraTulajdonos = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
if (!string.IsNullOrWhiteSpace(helyettesitoTanar) && !string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n{0} [{1}]", oraTulajdonos, helyettesitoTanar); }
else if (string.IsNullOrWhiteSpace(helyettesitoTanar) && !string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n{0}", oraTulajdonos); }
else if (!string.IsNullOrWhiteSpace(helyettesitoTanar) && string.IsNullOrWhiteSpace(oraTulajdonos))
{ tanarNev = string.Format("\n[{0}]", helyettesitoTanar); }
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
OraTipus rowOraTipus = new OraTipus();
var tulajdonsagCO = new TanoraCO();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
tulajdonsagCO.OrarendiOra = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, false);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
orarendiEvent.UseCalendarTooltip = true;
break;
case "TanitasiOra":
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanitasiOra;
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, true);
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
if (digitalisInformaciokByTanitasiOraIds.TryGetValue(orarendiEvent.id, out var digitalisInformacio))
{
var digitalisEszkozTipusId = digitalisInformacio.FirstOrDefault().DigitalisEszkozTipusId;
var digitalisPlatformTipusId = digitalisInformacio.FirstOrDefault().DigitalisPlatformTipusId;
orarendiEvent.IsDigitalisOra = digitalisEszkozTipusId.HasValue && digitalisEszkozTipusId != (int)DigEszkozTipusEnum.na;
orarendiEvent.DigitalisEszkozTipus = digitalisEszkozTipusId.HasValue ? ((DigEszkozTipusEnum)digitalisEszkozTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisPlatformTipus = digitalisPlatformTipusId.HasValue ? ((DigPlatformTipusEnum)digitalisPlatformTipusId).GetDisplayName(TanevId) : null;
orarendiEvent.DigitalisTamogatoEszkozTipusList = digitalisInformacio.NotNullAndAny() ? digitalisInformacio.Select(x => ((DigTamEszkozTipusEnum)x?.DigitalisTamogatoEszkozTipusId).GetDisplayName(TanevId)).ToList() : new List<string>();
}
var digitalisOraJellemzoString = string.Format(OrarendResource.OnlineOraTooltipMsg
, orarendiEvent.DigitalisEszkozTipus ?? "-"
, orarendiEvent.DigitalisPlatformTipus ?? "-"
, orarendiEvent.DigitalisTamogatoEszkozTipusList.Any() ? string.Join(", ", orarendiEvent.DigitalisTamogatoEszkozTipusList) : "-");
orarendiEvent.TooltipMsg += digitalisOraJellemzoString;
orarendiEvent.UseCalendarTooltip = true;
break;
}
var title = string.Format("{0} - {1}\n{2}{3}",
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["OsztalyNev"] != DBNull.Value ? row["OsztalyNev"].ToString() : ""),
(row["TeremNev"] != DBNull.Value ? row["TeremNev"].ToString() : ""),
(tanarNev));
orarendiEvent.title = title;
orarendiEvent.textLineThrough = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke); // Később lehet speciálisabbra állítani, ezen a ponton még elég ez...
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.helyettesitoId = DbHasValue(row["HelyettesitoTanarId"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarId"]) : (int?)null;
if (rowOraTipus == OraTipus.OrarendiOra)
{
if (row["HelyettesitesId"] != DBNull.Value)
{
var hId = SDAConvert.ToInt32(row["HelyettesitesId"]);
var hTanarId = SDAConvert.ToInt32(row["HelyettesitoTanarId"]);
if (hTanarId == tanarId)
{
orarendiEvent.helyettesitesId = hId;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEvent.colorEnum = EventColorEnum.Narancs;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.VilagosKek);
}
else
{
orarendiEvent.helyettesitesId = hId;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEvent.colorEnum = EventColorEnum.Narancs;
}
}
else
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
orarendiEvent.colorEnum = EventColorEnum.Kek;
}
}
if (rowOraTipus == OraTipus.TanitasiOra)
{
if (orarendiEvent.isElmaradt)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.textLineThrough = true;
}
if (orarendiEvent.helyettesitoId.HasValue)
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
if (orarendiEvent.hanyadikora <= orarendiEvent.maxNapiOraszam)
events.Add(orarendiEvent);
}
return events;
}
private List<OrarendCO.ExtendedEvent> GetAdminNaploEllenorzesTanorak(IDalHandler h, DateTime start, DateTime end, int? tanarId)
{
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, tanarId, null, null, false, OrarendTipusEnum.Minden, null, null, false, null);
List<ISzamonkeresElorejelzes> bejelentettSzamonkeresek = new List<ISzamonkeresElorejelzes>();
var helper = new SzamonkeresElorejelzesHelper(new DalHandlerConnectionType(ConnectionType, h));
bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(start, end);
var haziFeladatok = new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatokByDateRange(start, end, false, FeladatTipusEnum.HaziFeladat);
var events = new List<OrarendCO.ExtendedEvent>();
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
foreach (DataRow row in dsOrarend.Tables[0].Rows)
{
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
OraTipus rowOraTipus = new OraTipus();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
break;
case "TanitasiOra":
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanitasiOra;
break;
}
var title = string.Format("{0}{1}\n{2}\n{3}",
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["OsztalyNev"] != DBNull.Value ? " - " + row["OsztalyNev"].ToString() : ""),
(row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : ""),
(row["TeremNev"] != DBNull.Value ? string.Format("({0})", row["TeremNev"].ToString()) : ""));
orarendiEvent.title = title;
orarendiEvent.hasBejelentettSzamonkeres = bejelentettSzamonkeresek.Any(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.hasHaziFeladat = haziFeladatok.Any(x =>
(x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) ||
x.TanitasiOraId == (row["ID"] != DBNull.Value ? SDAConvert.ToInt32(row["ID"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.textLineThrough = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke); // Később lehet speciálisabbra állítani, ezen a ponton még elég ez...
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.helyettesitoId = DbHasValue(row["HelyettesitoTanarId"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarId"]) : (int?)null;
bool rowHasMegtartott = DbHasValue(row["Megtartott_BOOL"]); // Ha a rowHasMegtartott false, akkor §§
bool rowIsMegtartott = SDAConvert.ToBoolean(row["Megtartott_BOOL"]);
if (rowOraTipus == OraTipus.OrarendiOra)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
if (orarendiEvent.helyettesitoId.IsEntityId())
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
else if (rowOraTipus == OraTipus.TanitasiOra && rowIsMegtartott)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
if (orarendiEvent.helyettesitoId.IsEntityId())
{
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
}
else
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.textLineThrough = true;
}
var orarendTulajdonsagCO = new OrarendiOraCO();
new OrarendiOraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraTulajdonsagok(orarendTulajdonsagCO, SDAConvert.ToInt32(row["ID"]));
orarendiEvent.OnlineOra = orarendTulajdonsagCO.OnlineOra;
events.Add(orarendiEvent);
}
return events;
}
private List<OrarendCO.ExtendedEvent> GetNemKotottMunkaIdo(IDalHandler h, DateTime start, DateTime end, int tanarId, bool isAdmin = false)
{
var lista = new List<OrarendCO.ExtendedEvent>();
var dal = h.OrarendiOra();
var ds = dal.GetNemKotottMunkaIdo(IntezmenyId, TanevId, start, end, tanarId);
DateTime naplozarasDate = GetNaplozarasDate(start);
if (!isAdmin)
{
var systemSettingHelper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanevHelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
var hetiHaviNaplozaras = GetHetiHaviNaplozarasDatuma();
var ervKor = systemSettingHelper.GetSystemSettingValue<NaplozarasErvenyessegiKoreEnum>(RendszerBeallitasTipusEnum.elektronikus_naplo_zarasanak_datuma_beallitas_ervenyesegi_kore);
if (ervKor == NaplozarasErvenyessegiKoreEnum.ErtekelesEsNaploZarasa && !hetiHaviNaplozaras.HasValue)
{ }
else if (ervKor == NaplozarasErvenyessegiKoreEnum.ErtekelesEsNaploZarasa && hetiHaviNaplozaras.HasValue && naplozarasDate < hetiHaviNaplozaras)
{ naplozarasDate = hetiHaviNaplozaras.Value; }
else if (ervKor == NaplozarasErvenyessegiKoreEnum.CsakErtekelesZarasa && !hetiHaviNaplozaras.HasValue)
{ naplozarasDate = tanevHelper.GetTanevKezdete(); }
else if (ervKor == NaplozarasErvenyessegiKoreEnum.CsakErtekelesZarasa && hetiHaviNaplozaras.HasValue && naplozarasDate > hetiHaviNaplozaras)
{ naplozarasDate = hetiHaviNaplozaras.Value; }
}
foreach (DataRow row in ds.Tables[0].Rows)
{
DateTime? rowOraKezdete = SDAConvert.ToDateTime(row["Kezdete"]);
DateTime? rowOraVege = SDAConvert.ToDateTime(row["Vege"]);
bool rowMegtartott = SDAConvert.ToBoolean(row["Megtartott_BOOL"]);
bool rowTanarAltalTorolt = SDAConvert.ToBoolean(row["TanarAltalTorolt_BOOL"]);
string title;
if (isAdmin)
{
title = row["Megjegyzes"] != DBNull.Value && !string.IsNullOrEmpty(row["Megjegyzes"].ToString().ReplaceMultipleSpacesAndTrim()) ? row["Megjegyzes"].ToString() : row["TorvenyKategoriaID_DNAME"].ToString();
}
else
{
if (row["NaplozottMegjegyzes"] != DBNull.Value && !string.IsNullOrEmpty(row["NaplozottMegjegyzes"].ToString().ReplaceMultipleSpacesAndTrim()))
{
title = row["NaplozottMegjegyzes"].ToString();
}
else
{
if (row["Megjegyzes"] != DBNull.Value && !string.IsNullOrEmpty(row["Megjegyzes"].ToString().ReplaceMultipleSpacesAndTrim()))
{
title = row["Megjegyzes"].ToString();
}
else
{
title = row["TorvenyKategoriaID_DNAME"].ToString();
}
}
}
var nkmEvent = new OrarendCO.ExtendedEvent() /*nem abból az spből jön ezekre nem vonatkoznak a tanév rendje dolgok még*/
{
id = SDAConvert.ToInt32(row["Id"]),
start = Convert.ToDateTime(row["Kezdete"]),
end = Convert.ToDateTime(row["Vege"]),
title = title,
colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Lila),
oraType = CalendarOraTypeEnum.TanoranKivuliTevekenyseg,
OraKezdete = Convert.ToDateTime(rowOraKezdete).ToShortTimeString(),
OraVege = Convert.ToDateTime(rowOraVege).ToShortTimeString()
};
if (isAdmin)
{
nkmEvent.colorEnum = EventColorEnum.Kek;
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
}
else
{
if (rowOraKezdete.HasValue && rowOraKezdete.Value <= DateTime.Now)
{
if (nkmEvent.start.Value.Date < naplozarasDate)
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivPiros);
nkmEvent.colorEnum = EventColorEnum.InaktivPiros;
}
else
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Piros);
nkmEvent.colorEnum = EventColorEnum.Piros;
}
}
else
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
nkmEvent.colorEnum = EventColorEnum.Szurke;
}
if (rowMegtartott)
{
if (nkmEvent.start.Value.Date < naplozarasDate)
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
nkmEvent.colorEnum = EventColorEnum.InaktivZold;
}
else
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
nkmEvent.colorEnum = EventColorEnum.Zold;
}
}
}
if (rowTanarAltalTorolt)
{
nkmEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
nkmEvent.colorEnum = EventColorEnum.Zold;
nkmEvent.textLineThrough = true;
}
lista.Add(nkmEvent);
}
return lista;
}
private List<OrarendCO.ExtendedEvent> GetFogadoorak(IDalHandler h, DateTime start, DateTime end, int tanarId)
{
var lista = new List<OrarendCO.ExtendedEvent>();
var dal = h.Fogadoora();
var ds = dal.GetFogadooraCalendar(IntezmenyId, TanevId, start.Date, end.Date, tanarId);
DateTime naplozarasDate = GetNaplozarasDate(start);
foreach (DataRow row in ds.Tables[0].Rows)
{
var fogadooraEvent = new OrarendCO.ExtendedEvent()
{
id = SDAConvert.ToInt32(row["ID"]),
start = Convert.ToDateTime(row["FogadooraKezdete"]),
end = Convert.ToDateTime(row["FogadooraVege"]),
title = FogadooraResource.Fogadoora + "\n" + row["OsztalyCsoport"].ToString(),
oraType = CalendarOraTypeEnum.Fogadoora
};
lista.Add(fogadooraEvent);
}
return lista;
}
private List<OrarendCO.ExtendedEvent> GetFogadoorakForGondviselo(IDalHandler h, DateTime start, DateTime end, int tanuloId)
{
var lista = new List<OrarendCO.ExtendedEvent>();
var dal = h.Fogadoora();
var ds = dal.GetFogadooraForGondviseloCalendar(IntezmenyId, TanevId, start.Date, end.Date, tanuloId);
foreach (DataRow row in ds.Tables[0].Rows)
{
var fogadooraEvent = new OrarendCO.ExtendedEvent()
{
id = SDAConvert.ToInt32(row["ID"]),
start = Convert.ToDateTime(row["FogadooraKezdete"]),
end = Convert.ToDateTime(row["FogadooraVege"]),
title = FogadooraResource.Fogadoora + "\n" + row["TanarNev"] + "\n" + row["OsztalyCsoport"],
colorEnum = EventColorEnum.Szurke,
color = StringValueUtils.GetStringValue(EventColorEnum.Szurke),
oraType = CalendarOraTypeEnum.Fogadoora
};
lista.Add(fogadooraEvent);
}
return lista;
}
private List<OrarendCO.Event> GetOralatogatas(IDalHandler h, DateTime start, DateTime end, int tanarId)
{
var orarendCo = new OrarendCO();
orarendCo.Events = new List<OrarendCO.Event>();
var tanitasiOraLista = new List<OrarendCO.Event>();
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOralatogatasok(IntezmenyId, TanevId,
start, end, tanarId);
DateTime naplozarasDate = GetNaplozarasDate(start);
var oraDataRows = dsOrarend.Tables[0].Rows.Cast<DataRow>();
var tanitasiOraIdList = oraDataRows.Where(row => row.Field<string>("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"]));
var digitalisInformaciokByTanitasiOraIds = new Dictionary<int, IGrouping<int, DigitalisInformacioResponseDao>>();
if (tanitasiOraIdList.Any())
{
digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h))
.GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList)
.ToDaoList<DigitalisInformacioResponseDao>()
.GroupBy(x => x.TanitasiOraId)
.ToDictionary(x => x.Key, x => x);
}
foreach (DataRow row in oraDataRows)
{
var eventItem = new OrarendCO.Event();
OraTipus rowOraTipus = new OraTipus();
eventItem.helyettesitoId = DbHasValue(row["HelyettesitoTanarID"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarID"]) : (int?)null;
if (row.Table.Columns.Contains("CsengetesiRendID"))
{
eventItem.CsengetesiRendId = SDAConvert.ToNullableInt32(row["CsengetesiRendID"]);
}
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
if (eventItem.CsengetesiRendId.IsEntityId())
{
rowOraTipus = OraTipus.OrarendiOra;
eventItem.oraType = CalendarOraTypeEnum.OrarendiOra;
}
else
{
rowOraTipus = OraTipus.OrarendiOra;
eventItem.oraType = CalendarOraTypeEnum.TanoranKivuliFoglalkozas;
}
break;
case "TanitasiOra":
if (eventItem.CsengetesiRendId.IsEntityId())
{
rowOraTipus = OraTipus.TanitasiOra;
eventItem.oraType = CalendarOraTypeEnum.TanitasiOra;
}
else
{
rowOraTipus = OraTipus.TanitasiOra;
eventItem.oraType = CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas;
}
break;
}
var tulajdonsagCO = new TanoraCO();
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraOrTanitasiOraTulajdonsag(tulajdonsagCO, true);
eventItem.OnlineOra = tulajdonsagCO.OnlineOra;
eventItem.UseCalendarTooltip = false;
if (digitalisInformaciokByTanitasiOraIds.TryGetValue(eventItem.id, out var digitalisInformacio))
{
var digitalisEszkozTipusId = digitalisInformacio.FirstOrDefault().DigitalisEszkozTipusId;
var digitalisPlatformTipusId = digitalisInformacio.FirstOrDefault().DigitalisPlatformTipusId;
eventItem.IsDigitalisOra = digitalisEszkozTipusId.HasValue && digitalisEszkozTipusId != (int)DigEszkozTipusEnum.na;
eventItem.DigitalisEszkozTipus = digitalisEszkozTipusId.HasValue ? ((DigEszkozTipusEnum)digitalisEszkozTipusId).GetDisplayName(TanevId) : null;
eventItem.DigitalisPlatformTipus = digitalisPlatformTipusId.HasValue ? ((DigPlatformTipusEnum)digitalisPlatformTipusId).GetDisplayName(TanevId) : null;
eventItem.DigitalisTamogatoEszkozTipusList = digitalisInformacio.NotNullAndAny() ? digitalisInformacio.Select(x => ((DigTamEszkozTipusEnum)x?.DigitalisTamogatoEszkozTipusId).GetDisplayName(TanevId)).ToList() : new List<string>();
}
var digitalisOraJellemzoString = string.Format(OrarendResource.OnlineOraTooltipMsg
, eventItem.DigitalisEszkozTipus ?? "-"
, eventItem.DigitalisPlatformTipus ?? "-"
, eventItem.DigitalisTamogatoEszkozTipusList.Any() ? string.Join(", ", eventItem.DigitalisTamogatoEszkozTipusList) : "-");
eventItem.TooltipMsg += digitalisOraJellemzoString;
eventItem.oraType = (CalendarOraTypeEnum)Enum.Parse(typeof(CalendarOraTypeEnum), row["OraTipus"].ToString());
eventItem.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
eventItem.colorEnum = EventColorEnum.Zold;
var title = string.Format("{0}{1}\n{2}\n{3}",
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["OsztalyNev"] != DBNull.Value ? " - " + row["OsztalyNev"].ToString() : ""),
(row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : ""),
(row["TeremNev"] != DBNull.Value ? string.Format("({0})", row["TeremNev"].ToString()) : ""));
eventItem.title = title;
eventItem.id = SDAConvert.ToInt32(row["ID"]);
eventItem.start = Convert.ToDateTime(row["OraKezdete"]);
eventItem.end = Convert.ToDateTime(row["OraVege"]);
eventItem.OraKezdete = eventItem.start?.ToString("H:mm");
eventItem.OraVege = eventItem.end?.ToString("H:mm");
eventItem.allDay = false;
eventItem.oraszam = row["Oraszam"] != DBNull.Value && string.IsNullOrWhiteSpace(row["Oraszam"].ToString()) == false ? row["Oraszam"].ToString() + ". " + StringResourcesUtil.GetString(219).ToLower()/*Óra*/ : "";
eventItem.datum = eventItem.start.HasValue ? Convert.ToDateTime(eventItem.start.Value.ToShortDateString()) : (DateTime?)null;
eventItem.hetirend = row["Hetirend_DNAME"].ToString();
eventItem.textLineThrough = false;
var ora = h.TanitasiOra().Get(eventItem.id);
eventItem.Tema = ora.Tema;
var oralatogatas = ora.Oralatogatasok.Where(x => x.ErtekeloId == FelhasznaloId && x.Torolt == false).FirstOrDefault();
if (oralatogatas != null)
{
eventItem.oraType = CalendarOraTypeEnum.Egyeb;
eventItem.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
eventItem.colorEnum = EventColorEnum.Szurke;
}
else if (eventItem.start.Value.Date < naplozarasDate && (eventItem.oraType == CalendarOraTypeEnum.TanitasiOra || eventItem.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas))
{
eventItem.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
eventItem.colorEnum = EventColorEnum.InaktivZold;
}
if (rowOraTipus == OraTipus.TanitasiOra && eventItem.helyettesitoId.IsEntityId())
{
eventItem.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
}
tanitasiOraLista.Add(eventItem);
}
orarendCo.Events.AddRange(tanitasiOraLista);
return orarendCo.Events;
}
public bool IsHetkoznap(DateTime datum)
{
bool ret = (datum.DayOfWeek != DayOfWeek.Saturday && datum.DayOfWeek != DayOfWeek.Sunday);
return ret;
}
public bool IsHetkoznapWithSzombat(DateTime datum)
{
bool ret = (datum.DayOfWeek != DayOfWeek.Sunday);
return ret;
}
/// INFO @DevKornel: Mobil használja
private int GetMaxOraszamInAktivCsengetesiRend(IDalHandler h)
{
var csengetesiRendDal = h.CsengetesiRend();
return csengetesiRendDal.GetMinMaxOraszam(TanevId, csengetesiRendDal.GetAktivCsengetesiRendId(TanevId, IntezmenyId)).maxOraszam;
}
/// INFO @DevKornel: Mobil használja
private OrarendCO.ExtendedEvent CreateBaseEvent(DataRow row, int maxOraszam)
{
var columns = row.Table.Columns;
var orarendiEvent = new OrarendCO.ExtendedEvent();
orarendiEvent.id = SDAConvert.ToInt32(row["ID"]);
orarendiEvent.start = Convert.ToDateTime(row["OraKezdete"]);
orarendiEvent.end = Convert.ToDateTime(row["OraVege"]);
orarendiEvent.datum = orarendiEvent.start.HasValue ? Convert.ToDateTime(orarendiEvent.start.Value.ToShortDateString()) : (DateTime?)null;
orarendiEvent.hetirend = row["Hetirend_DNAME"].ToString();
orarendiEvent.Terem = row["TeremNev"] != DBNull.Value ? string.Format("{0}", row["TeremNev"].ToString()) : "";
orarendiEvent.OsztalyCsoport = row["OsztalyNev"] != DBNull.Value ? row["OsztalyNev"].ToString() : "";
orarendiEvent.OsztalyCsoportId = SDAConvert.ToInt32(row["OsztCsopId"], -1);
orarendiEvent.TanarId = SDAConvert.ToInt32(row["TanarID"], -1);
orarendiEvent.TanarNev = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
orarendiEvent.Tantargy = row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : "";
orarendiEvent.TantargyId = int.TryParse(row["TanTargyId"].ToString(), out int tantargyId) ? tantargyId : 0;
orarendiEvent.TantargyKategoriaId = int.TryParse(row["TargykategoriaID"].ToString(), out int tantargyKategoriId) ? tantargyKategoriId : 0;
orarendiEvent.allDay = false;
orarendiEvent.KozpontiOraGroupId = SDAConvert.StringToNullableGuid(row["KozpontiOraGroupId"]);
orarendiEvent.KozpontilagToroltOraGroupId = SDAConvert.StringToNullableGuid(row["KozpontilagToroltOraGroupId"]);
orarendiEvent.Letrehozas = Convert.ToDateTime(row["CREATED"]);
orarendiEvent.UtolsoModositas = Convert.ToDateTime(row["LASTCHANGED"]);
if (columns.Contains("MaxNapiOraszam"))
{
orarendiEvent.maxNapiOraszam = SDAConvert.ToInt32(row["MaxNapiOraszam"], maxOraszam);
}
if (columns.Contains("Oraszam"))
{
orarendiEvent.oraszam = row["Oraszam"] != DBNull.Value && string.IsNullOrWhiteSpace(row["Oraszam"].ToString()) == false ? row["Oraszam"].ToString() + ". " + StringResourcesUtil.GetString(219).ToLower()/*Óra*/ : "";
orarendiEvent.hanyadikora = SDAConvert.ToInt32(row["Oraszam"], -1);
}
if (columns.Contains("TargykategoriaID_DNAME"))
{
orarendiEvent.TantargyKategoria = row["TargykategoriaID_DNAME"] != DBNull.Value ? row["TargykategoriaID_DNAME"].ToString() : "";
}
if (columns.Contains("TargyNevForMobile"))
{
orarendiEvent.TantargyTeljesNev = row["TargyNevForMobile"] != DBNull.Value ? row["TargyNevForMobile"].ToString() : "";
}
if (columns.Contains("HelyettesitoTanarNev"))
{
orarendiEvent.HelyettesNev = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
}
if (columns.Contains("Tema"))
{
orarendiEvent.Tema = row["Tema"] != DBNull.Value && string.IsNullOrWhiteSpace(row["Tema"].ToString()) == false ? row["Tema"].ToString() : "";
}
if (columns.Contains("TanevRendOsztalyCsoportId"))
{
orarendiEvent.TanevRendOsztalyCsoportId = SDAConvert.ToInt32(row["TanevRendOsztalyCsoportId"]);
}
if (columns.Contains("CsengetesiRendID"))
{
orarendiEvent.CsengetesiRendId = SDAConvert.ToNullableInt32(row["CsengetesiRendID"]);
}
if (columns.Contains("ORARENDIID"))
{
orarendiEvent.OrarendiOraId = SDAConvert.ToNullableInt32(row["ORARENDIID"]);
}
if (columns.Contains("GroupId"))
{
orarendiEvent.OrarendiOraGroupId = SDAConvert.ToNullableInt32(row["GroupId"]);
}
return orarendiEvent;
}
public int? GetCsengetesiRendForDate(DateTime aktualisDatum, List<CsengetesiRendIdoszakraCO> datumCsengetesiRendList, int aktivcsengetesirendId, FoglalkozasokRogziteseHetvegere foglalkozasok_Rogzitese_Hetvegere, int? osztalyCsoportId = null)
{
var csengetesiRendekAzadottNapra = datumCsengetesiRendList.Where(x => x.Date == aktualisDatum);
if (csengetesiRendekAzadottNapra.Any())
{
var aktivcsengetesiRendek = csengetesiRendekAzadottNapra.Where(x => x.IsOrarendiNap);
var mindenkireVonatkozik = aktivcsengetesiRendek.FirstOrDefault(x => x.IsOsszesCsoport);
if (mindenkireVonatkozik != null)
{
return mindenkireVonatkozik.CsengetesiRendId ?? aktivcsengetesirendId;
}
if (osztalyCsoportId.HasValue)
{
var osztalyCsoportCsengetesiRendje = aktivcsengetesiRendek.FirstOrDefault(x => !x.IsOsszesCsoport && x.OsztalyCsoportId == osztalyCsoportId.Value);
if (osztalyCsoportCsengetesiRendje != null)
{
return osztalyCsoportCsengetesiRendje.CsengetesiRendId;
}
}
return aktivcsengetesirendId;
}
switch (foglalkozasok_Rogzitese_Hetvegere)
{
case FoglalkozasokRogziteseHetvegere.Engedelyezett:
return aktivcsengetesirendId;
case FoglalkozasokRogziteseHetvegere.CsakSzombat:
if (IsHetkoznapWithSzombat(aktualisDatum))
{
return aktivcsengetesirendId;
}
break;
case FoglalkozasokRogziteseHetvegere.NemEngedelyezett:
default:
if (IsHetkoznap(aktualisDatum))
{
return aktivcsengetesirendId;
}
break;
}
return null;
}
/// INFO @DevKornel: Mobil használja
// TODO: párja: HelyettesitesHelper.GetTanarOrai !! és hasonló HaziFeladatHelper.FilterOutEventByTanevRendje
private List<OrarendCO.ExtendedEvent> FilterOutEventByTanevRendje(IDalHandler h, DataTable tanevTable, List<OrarendCO.ExtendedEvent> orarendevents, TanevrendHelper helper)
{
var tanevRendjeLists = helper.GetTanevRendjeLists(tanevTable);
List<OrarendCO.ExtendedEvent> engedelyezettEventList = new List<OrarendCO.ExtendedEvent>(),
ocsTiltottEventList = new List<OrarendCO.ExtendedEvent>(),
globalTiltottEventList = new List<OrarendCO.ExtendedEvent>();
foreach (var t in tanevRendjeLists.OcsEngedelyezes)
{
engedelyezettEventList.AddRange(orarendevents.Where(x => x.start.Value.Date == t.Item1 &&
x.TanevRendOsztalyCsoportId == t.Item2 &&
(x.oraType == CalendarOraTypeEnum.OrarendiOra || x.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas)));
}
orarendevents = orarendevents.Except(engedelyezettEventList).ToList();
foreach (var d in tanevRendjeLists.GlobalTiltas)
{
globalTiltottEventList.AddRange(orarendevents.Where(x => x.start.Value.Date == d &&
(x.oraType == CalendarOraTypeEnum.OrarendiOra || x.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas)));
}
orarendevents = orarendevents.Except(globalTiltottEventList).ToList();
foreach (var t in tanevRendjeLists.OcsTiltas)
{
ocsTiltottEventList.AddRange(orarendevents.Where(x => x.start.Value.Date == t.Item1 &&
x.TanevRendOsztalyCsoportId == t.Item2 &&
(x.oraType == CalendarOraTypeEnum.OrarendiOra || x.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas)));
}
orarendevents = orarendevents.Except(ocsTiltottEventList).ToList();
var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)).GetSystemSettingValue<FoglalkozasokRogziteseHetvegere>(RendszerBeallitasTipusEnum.Foglalkozasok_Rogzitese_Hetvegere);
foreach (var item in orarendevents)
{
bool isErvenyesNap = false;
switch (foglalkozasok_Rogzitese_Hetvegere)
{
case FoglalkozasokRogziteseHetvegere.Engedelyezett:
isErvenyesNap = true;
break;
case FoglalkozasokRogziteseHetvegere.CsakSzombat:
isErvenyesNap = IsHetkoznapWithSzombat(item.start.Value.Date);
break;
case FoglalkozasokRogziteseHetvegere.NemEngedelyezett:
default:
isErvenyesNap = IsHetkoznap(item.start.Value.Date);
break;
}
if ((isErvenyesNap || tanevRendjeLists.GlobalEngedelyezes.Contains(item.start.Value.Date) ||
item.oraType == CalendarOraTypeEnum.TanitasiOra || item.oraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas)
&& !engedelyezettEventList.Any(x => x.id == item.id && x.start.Value.Date == item.start.Value.Date)
&& !ocsTiltottEventList.Any(x => x.id == item.id && x.start.Value.Date == item.start.Value.Date))
{
engedelyezettEventList.Add(item);
}
}
return engedelyezettEventList;
}
private static bool DbHasValue(object value)
{
return DBNull.Value != value && null != value;
}
/// INFO @DevKornel: Mobil használja
private void SetEllenorzojogEventDekor(OraTipus rowOraTipus, bool rowIsMegtartott, OrarendCO.Event orarendiEvent,
bool rowIsHianyzas, bool rowIsKeses, DateTime? rowOraVege)
{
if (rowOraTipus == OraTipus.TanitasiOra)
{
if (!rowIsMegtartott)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Atlatszo);
orarendiEvent.colorEnum = EventColorEnum.Atlatszo;
orarendiEvent.textColor = "#969696";
orarendiEvent.borderColor = "#969696";
orarendiEvent.borderStyle = "dashed";
orarendiEvent.oraType = CalendarOraTypeEnum.UresOra;
return;
}
if (rowIsHianyzas)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Piros);
orarendiEvent.colorEnum = EventColorEnum.Piros;
return;
}
if (rowIsKeses)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
orarendiEvent.colorEnum = EventColorEnum.Narancs;
return;
}
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
return;
}
if (rowOraTipus == OraTipus.OrarendiOra)
{
if (rowOraVege.HasValue && rowOraVege < DateTime.Now)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
return;
}
}
}
/// INFO @DevKornel: Mobil használja
private void SetAdminjogEventDekor(OraTipus rowOraTipus, OrarendCO.Event orarendiEvent)
{
if (rowOraTipus == OraTipus.OrarendiOra)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
orarendiEvent.colorEnum = EventColorEnum.Kek;
}
}
/// INFO @DevKornel: Mobil használja
private void SetNaploJogEventDekor(OraTipus rowOraTipus, bool rowOratFelhasznaloTartotta, int? rowHelyettesito,
bool rowIsMegtartott, OrarendCO.ExtendedEvent orarendiEvent, bool rowIsAdminAltalKiirt, bool rowIsFelhasznaloErintett,
bool rowHasMegtartott, DateTime? rowOraKezdete, bool rowOratFelhasznaloHelyettesitette)
{
if (rowOraTipus == OraTipus.TanitasiOra)
{
if (rowOratFelhasznaloTartotta && rowHelyettesito.HasValue == false)
{
if (rowIsMegtartott)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
return;
}
if (rowIsAdminAltalKiirt)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.InaktivZold);
orarendiEvent.colorEnum = EventColorEnum.InaktivZold;
orarendiEvent.textLineThrough = true;
return;
}
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.textLineThrough = true;
return;
}
if (rowIsMegtartott == false && rowHelyettesito.HasValue)
{
if (rowHelyettesito.Value != FelhasznaloId)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
orarendiEvent.textLineThrough = true;
return;
}
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
orarendiEvent.textLineThrough = true;
return;
}
if (rowIsFelhasznaloErintett)
{
if (rowHasMegtartott && rowHelyettesito.HasValue)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
orarendiEvent.colorEnum = EventColorEnum.Zold;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
return;
}
if (rowOraKezdete.HasValue && rowOraKezdete.Value.Date > DateTime.Now.Date && rowHasMegtartott == false &&
rowHelyettesito.HasValue)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
return;
}
}
else
{
if (rowHasMegtartott && rowHelyettesito.HasValue)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
return;
}
}
}
if (rowOraTipus == OraTipus.OrarendiOra)
{
if (rowOratFelhasznaloHelyettesitette && rowOraKezdete.HasValue && rowOraKezdete.Value.Date <= DateTime.Now.Date)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Piros);
orarendiEvent.colorEnum = EventColorEnum.Piros;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
return;
}
if (rowOratFelhasznaloHelyettesitette && rowOraKezdete.HasValue && rowOraKezdete.Value.Date > DateTime.Now.Date)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
return;
}
if (rowIsFelhasznaloErintett && rowOraKezdete.HasValue)
{
if (rowOraKezdete.Value.Date <= DateTime.Now.Date)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Piros);
orarendiEvent.colorEnum = EventColorEnum.Piros;
return;
}
if (rowOraKezdete.Value.Date > DateTime.Now.Date)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
return;
}
}
if (rowHelyettesito.HasValue && rowHelyettesito.Value != FelhasznaloId)
{
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
orarendiEvent.colorEnum = EventColorEnum.Szurke;
orarendiEvent.colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
return;
}
}
}
public DataSet GetOraMentessegList(DateTime start, DateTime end, int osztalyCsoportId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
var dal = h.OrarendiOra();
return dal.GetOraMentessegList(start, end, osztalyCsoportId, IntezmenyId, TanevId);
});
}
public OrarendCO GetAdminTeremOrarendOrarendiOrak(DateTime start, DateTime end, int teremId, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
if (teremId < 1)
{
return new OrarendCO();
}
var events = GetAdminTeremOrarendiOrakEsTanorak(h, start, end, teremId);
if (!isFromSzervezet)
{
events = HandleAndAddTanevRendje(h, start, end, events, csakGlobal: true);
}
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
var kezdDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum);
var vegDatum = helper.GetSystemSettingValue<DateTime?>(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_veg_datum);
if (isFromSzervezet)
{
events.AddRange(GetSzervezetCsengetesiRend(h, start, end, events));
}
else if (start > kezdDatum && start <= vegDatum || end > kezdDatum && end <= vegDatum)
{
//Nyári gyakorlat csengetési rend
events.AddRange(GetCsengetesiRend(h, start, end, null, events, isOsszefuggoSzakmaiGyakorlat: true, szakmaiGyakKezdDatum: kezdDatum, szakmaiGyakVegDatum: vegDatum));
}
else
{
events.AddRange(GetCsengetesiRend(h, start, end, null, events));
}
// UtóSzinezés
foreach (var eventData in events)
{
if (eventData.oraType == CalendarOraTypeEnum.OrarendiOra && eventData.helyettesitoId.HasValue)
{
/*Órarendi óra helyettesített*/
eventData.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public OrarendCO GetAdminTeremOrarendTanoranKivuliFoglalkozasok(DateTime start, DateTime end, int teremId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool isFromSzervezet)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, null, null, null, true, OrarendTipusEnum.Minden, false, EventColorEnum.Szurke, teremId);
var tanoranKivuliFoglalkozasok = events.Where(x => x.CsengetesiRendId == null);
foreach (var item in tanoranKivuliFoglalkozasok)
{
if (item.helyettesitoId.HasValue && item.helyettesitoId > 0)
{
item.colorEnum = EventColorEnum.Narancs;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Narancs);
}
else
{
item.colorEnum = EventColorEnum.Kek;
item.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
}
}
if (!isFromSzervezet)
{
events = HandleAndAddTanevRendje(h, start, end, events);
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
private List<OrarendCO.ExtendedEvent> GetAdminTeremOrarendiOrakEsTanorak(IDalHandler h, DateTime start, DateTime end, int teremId)
{
var orarendiOraDal = h.OrarendiOra();
var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, null, null, null, true, OrarendTipusEnum.CsengetesiRendhezKotottOrarend, null, teremId, false, null);
var helper = new SzamonkeresElorejelzesHelper(new DalHandlerConnectionType(ConnectionType, h));
var bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(start, end);
var haziFeladatok = new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatokByDateRange(start, end, false, FeladatTipusEnum.HaziFeladat);
var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h);
var orarendioraLista = new List<OrarendCO.ExtendedEvent>();
foreach (DataRow row in dsOrarend.Tables[0].Rows)
{
var orarendiEvent = CreateBaseEvent(row, maxOraszamInAktivCsengetesiRend);
OraTipus rowOraTipus = new OraTipus();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
break;
}
string tanarNev = "";
string oraTulajdonos = row["TanarNev"] != DBNull.Value ? row["TanarNev"].ToString() : "";
string helyettesitoTanar = row["HelyettesitoTanarNev"] != DBNull.Value ? row["HelyettesitoTanarNev"].ToString() : "";
if (!string.IsNullOrWhiteSpace(helyettesitoTanar))
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("{0} [{1}]", oraTulajdonos, helyettesitoTanar);
}
else
{
tanarNev = string.Format("[{0}]", helyettesitoTanar);
}
}
else
{
if (!string.IsNullOrWhiteSpace(oraTulajdonos))
{
tanarNev = string.Format("{0}", oraTulajdonos);
}
}
var title = string.Format("{0}{1}\n{2}\n{3}",
(row["TargyNev"] != DBNull.Value ? row["TargyNev"].ToString() : ""),
(row["OsztalyNev"] != DBNull.Value ? " - " + row["OsztalyNev"].ToString() : ""),
tanarNev,
(row["TeremNev"] != DBNull.Value ? string.Format("({0})", row["TeremNev"].ToString()) : ""));
orarendiEvent.title = title;
orarendiEvent.hasBejelentettSzamonkeres = bejelentettSzamonkeresek.Any(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.hasHaziFeladat = haziFeladatok.Any(x =>
(x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) ||
x.TanitasiOraId == (row["Id"] != DBNull.Value ? SDAConvert.ToInt32(row["Id"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.textLineThrough = false;
orarendiEvent.color = StringValueUtils.GetStringValue(EventColorEnum.Kek);
orarendiEvent.colorEnum = EventColorEnum.Kek;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.helyettesitoId = DbHasValue(row["HelyettesitoTanarId"]) ? SDAConvert.ToInt32(row["HelyettesitoTanarId"]) : (int?)null;
orarendiEvent.OraErvenyessegKezdete = Convert.ToDateTime(row["ErvenyessegKezdete"]).ToShortDateString();
orarendiEvent.OraErvenyessegVege = Convert.ToDateTime(row["ErvenyessegVege"]).ToShortDateString();
if (orarendiEvent.hanyadikora <= orarendiEvent.maxNapiOraszam)
{
orarendioraLista.Add(orarendiEvent);
}
var orarendTulajdonsagCO = new OrarendiOraCO();
new OrarendiOraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetOrarendiOraTulajdonsagok(orarendTulajdonsagCO, SDAConvert.ToInt32(row["ID"]));
orarendiEvent.OnlineOra = orarendTulajdonsagCO.OnlineOra;
}
return orarendioraLista;
}
public OrarendCO GetOrarendKereso(DateTime start, DateTime end, int? tanarId, int? osztalyCsoportId, int? teremId, SzerepkorTipusEnum? felhasznaloSzerepkor, bool osztalyTanuloOrarendbenNemLatszik)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
if (!tanarId.IsEntityId() && !osztalyCsoportId.IsEntityId() && !teremId.IsEntityId())
{
return new OrarendCO();
}
var events = GetOrarendiOrakEsVagyNapirendekEsTanorak(h, felhasznaloSzerepkor, start, end, tanarId, osztalyCsoportId, null, false, OrarendTipusEnum.Minden, false, EventColorEnum.Piros, teremId, osztalyTanuloOrarendbenNemLatszik: osztalyTanuloOrarendbenNemLatszik);
events = HandleAndAddTanevRendje(h, start, end, events);
int cnt = 0;
foreach (var item in events)
{
if (item.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny && (item.OraAllapota == TanoraAllapotaEnum.Naplozott || item.OraAllapota == TanoraAllapotaEnum.Elmaradt))
{
events[cnt].colorEnum = EventColorEnum.Zold;
events[cnt].color = StringValueUtils.GetStringValue(EventColorEnum.Zold);
if (item.OraAllapota == TanoraAllapotaEnum.Elmaradt)
{
events[cnt].textLineThrough = true;
}
}
if (item.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny && item.helyettesitoId != null)
{
events[cnt].colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Narancs);
if (item.OraAllapota == TanoraAllapotaEnum.Naplozott && item.helyettesitoId != tanarId && tanarId != null)
{
events[cnt].colorRightLine = StringValueUtils.GetStringValue(EventColorRightLineEnum.Zold);
}
if (item.helyettesitoId != tanarId && tanarId != null)
{
events[cnt].colorEnum = EventColorEnum.Szurke;
events[cnt].color = StringValueUtils.GetStringValue(EventColorEnum.Szurke);
}
}
else
{
events[cnt].hasBejelentettSzamonkeres = item.hasBejelentettSzamonkeres;
events[cnt].hasHaziFeladat = item.hasHaziFeladat;
}
cnt++;
}
OrarendCO orarendCO = new OrarendCO();
orarendCO.Events.AddRange(events);
return orarendCO;
});
}
public List<OrarendItemCo> GetOrarendCoList()
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.OrarendiOra().GetOrarendDataSet(TanevId));
var result = new List<OrarendItemCo>();
foreach (DataRow dataRow in dataSet.Tables[0].Rows)
{
var item = new OrarendItemCo(dataRow);
result.Add(item);
}
return result;
}
public DataSet GetNemNaplozottOrarendiOrak(NemNaplozottTanorakSearchCO model)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var start = DateTime.Now;
var end = DateTime.Now;
TanevHelper tanevHelper = new TanevHelper(new DalHandlerConnectionType(ConnectionType, h));
var tanev = tanevHelper.GetTanevInfo();
if (model.JovobeniOrakMegjelenitese == true)
{
end = tanev.UtolsoTanitasiNap;
}
else
{
start = tanev.OraFelvetelKezdete;
}
var orarendiOraDal = h.OrarendiOra(GridParameters);
return orarendiOraDal.GetNemNaplozottOrarendiOrak(model.ConvertToPCO(IntezmenyId, TanevId, start, end));
});
}
public List<OrarendiOraTanitasiOraCo> GetOrarendiEsTanitasiOrakByDays(DateTime start, DateTime end, OrarendTipusEnum orarendTipus)
{
DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, h =>
{
IOrarendiOraDal orarendiOraDal = h.OrarendiOra();
DataSet result = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end.AddDays(1), null, null, null, false, orarendTipus, null, null, false, null);
return result;
});
var list = new List<OrarendiOraTanitasiOraCo>();
foreach (DataRow row in dataSet.Tables[0].Rows)
{
var item = new OrarendiOraTanitasiOraCo
{
Id = SDAConvert.ToInt32(row["Id"]),
OrarendiOraId = SDAConvert.ToNullableInt32(row["ORARENDIID"]),
Datum = SDAConvert.ToDateTime(row["Datum"]).Value,
IsBontott = SDAConvert.ToBooleanFromTF(row["Bontott"]),
HetirendTipusId = SDAConvert.ToInt32(row["Hetirend"]),
HetNapjaTipusId = SDAConvert.ToInt32(row["HetNapja"]),
HetSorszam = SDAConvert.ToInt32(row["HetSorszam"]),
OraErvenyessegKezdete = SDAConvert.ToDateTime(row["ErvenyessegKezdete"]),
OraErvenyessegVege = SDAConvert.ToDateTime(row["ErvenyessegVege"]),
OraKezdete = SDAConvert.ToDateTime(row["OraKezdete"]),
OraVege = SDAConvert.ToDateTime(row["OraVege"]),
OraSorszam = SDAConvert.ToNullableInt32(row["OraSzam"]),
TantargyNev = SDAConvert.ToString(row["TargyNev"]),
TantargyNevForMobile = SDAConvert.ToString(row["TargyNevForMobile"]),
TantargyKategoriaId = SDAConvert.ToInt32(row["TargykategoriaID"]),
IsMegtartott = SDAConvert.ToBooleanFromTF(row["Megtartott"]),
CsengetesoRendOraId = SDAConvert.ToNullableInt32(row["CsengetesiRendOraID"]),
CsengetesiRendId = SDAConvert.ToNullableInt32(row["CsengetesiRendID"]),
MaxNapiOraSorszam = SDAConvert.ToNullableInt32(row["MaxNapiOraszam"]),
OsztalyNev = SDAConvert.ToString(row["OsztalyNev"]),
TanevRendOsztalyCsoportId = SDAConvert.ToNullableInt32(row["TanevRendOsztalyCsoportId"]),
MegjelenesOka = SDAConvert.ToString(row["MegjelenesOka"]),
TanarNev = SDAConvert.ToString(row["TanarNev"]),
TeremNev = SDAConvert.ToString(row["TeremNev"]),
OraTipus = SDAConvert.ToString(row["OraTipus"]),
IsHianyzas = SDAConvert.ToBooleanFromTF(row["Hianyzas"]),
IsKeses = SDAConvert.ToBooleanFromTF(row["Keses"]),
IsUres = SDAConvert.ToBooleanFromTF(row["Ures"]),
HelyettesitoTanarId = SDAConvert.ToNullableInt32(row["HelyettesitoTanarID"]),
HelyettesitoTanarNev = SDAConvert.ToString(row["HelyettesitoTanarNev"]),
HelyettesitesId = SDAConvert.ToNullableInt32(row["HelyettesitesId"]),
TanarId = SDAConvert.ToInt32(row["TanarID"]),
IsAdminAltalKiirt = SDAConvert.ToBooleanFromTF(row["AdminAltalKiirt"]),
GroupId = SDAConvert.ToNullableInt32(row["GroupId"]),
Tema = SDAConvert.ToString(row["Tema"]),
TantargyId = SDAConvert.ToNullableInt32(row["TantargyId"]),
OsztalyCsoportId = SDAConvert.ToNullableInt32(row["OsztCsopId"])
};
list.Add(item);
}
return list;
}
private DataSet SetOrarendHasRejtettOra(IDalHandler h, DataSet srcDS, string oraKezdetefield = null, string oraVegefield = null, TimeSpan? min = null, TimeSpan? max = null)
{
DataSet targetDS = new DataSet();
targetDS.Tables.Add(srcDS.Tables[0].DefaultView.ToTable());
TimeSpan rendszerKezdes;
TimeSpan rendszerVege;
var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h));
rendszerKezdes = min ?? helper.GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja);
rendszerVege = max ?? helper.GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_zaroidopontja);
string oraKezdete = string.IsNullOrWhiteSpace(oraKezdetefield) ? "OraKezdete" : oraKezdetefield;
string oraVege = string.IsNullOrWhiteSpace(oraVegefield) ? "OraVege" : oraVegefield;
string hasRejtettOraKezdeteColumn = "hasRejtettOraKezdete";
string hasRejtettOraVegeColumn = "hasRejtettOraVege";
targetDS.Tables[0].Columns.Add(hasRejtettOraKezdeteColumn, typeof(bool));
targetDS.Tables[0].Columns.Add(hasRejtettOraVegeColumn, typeof(bool));
foreach (DataRow myRow in targetDS.Tables[0].Rows)
{
if (myRow[oraKezdete] != DBNull.Value)
{
myRow[hasRejtettOraKezdeteColumn] = srcDS.Tables[0].AsEnumerable().Where(r => r.Field<DateTime>(oraKezdete).DayOfWeek == Convert.ToDateTime(myRow[oraKezdete]).DayOfWeek && r.Field<DateTime>(oraKezdete).TimeOfDay < rendszerKezdes).ToList().Count > 0;
}
if (myRow[oraVege] != DBNull.Value)
{
myRow[hasRejtettOraVegeColumn] = srcDS.Tables[0].AsEnumerable().Where(r => r.Field<DateTime>(oraVege).DayOfWeek == Convert.ToDateTime(myRow[oraVege]).DayOfWeek && r.Field<DateTime>(oraVege).TimeOfDay > rendszerVege).ToList().Count > 0;
}
}
return targetDS;
}
private DataSet GetHazifeladatokListaja(HazifeladatokListajaCO co)
{
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var osztalyCsoportIds = new List<int>();
if (co.KellKapcsolodoCsoportokSrc)
{
var osztalyCsoportHelper = new OsztalyCsoportHelper(new DalHandlerConnectionType(ConnectionType, h));
osztalyCsoportIds.AddRange(osztalyCsoportHelper.ListOsztalyCsoportokKapcsolodoOsztalyCsoportjai(co.OsztalyCsoportIds));
}
else
{
osztalyCsoportIds.AddRange(co.OsztalyCsoportIds);
}
var dal = h.OrarendiOra(GridParameters);
return dal.GetHazifeladatokListaja(TanevId, co.ToPco(osztalyCsoportIds));
});
foreach (DataRow row in ds.Tables[0].Rows)
{
row["TanarHazifeladat"] = RichTextLogic.CutHtmlTagsAndDecode(row["TanarHazifeladat"].ToString());
}
return ds;
}
public List<HaziFeladatItemCo> GetHazifeladatCoList(HazifeladatokListajaCO co, int? maxHaziSzovegHossz = null)
{
var result = new List<HaziFeladatItemCo>();
var ds = GetHazifeladatokListaja(co);
foreach (var row in ds.Tables[0].AsEnumerable())
{
result.Add(new HaziFeladatItemCo(row, maxHaziSzovegHossz));
}
if (!co.KellToroltOrasHazifeladat)
{
result = result.Where(x => !x.IsToroltOra).ToList();
}
return result;
}
public List<OrarendiOraCO> GetNemNaplozottOrarendiOraCoList(NemNaplozottTanorakSearchCO searchCo)
{
var coList = new List<OrarendiOraCO>();
var ds = GetNemNaplozottOrarendiOrak(searchCo);
foreach (var row in ds.Tables[0].AsEnumerable())
{
coList.Add(new OrarendiOraCO(row));
}
return coList;
}
public int? CopyOrarendiElem(int copyId, DateTime date, int oraszam)
{
return Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra(null);
return dal.CopyOrarendiElem(copyId, date, oraszam);
});
}
public (string kotottMunkaidoOra, string nemKotottMunkaidoOra) GetRogzitettOrak(int tanarId, DateTime start)
{
DateTime startOfWeek = start.AddDays((int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek - (int)start.DayOfWeek);
DateTime endOfWeek = startOfWeek.AddDays(6);
var pluszOraszam = 0d;
var ds = Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
var intezmenyIsSzakkepzo = h.IntezmenyDal().Get(IntezmenyId).IntezmenyAdatok.SingleOrDefault(ia => !ia.Torolt && ia.TanevId == TanevId)?.IsSzakkepzo ?? false;
var tanarMunkaugyiAdatok = h.Alkalmazott().Get(tanarId).MunkaugyiAdatok.SingleOrDefault(ma => !ma.Torolt && ma.TanevId == TanevId);
if (!intezmenyIsSzakkepzo)
{
pluszOraszam = tanarMunkaugyiAdatok?.MunkaidoKedvezmenyOraszam ?? 0;
}
else
{
pluszOraszam = tanarMunkaugyiAdatok?.IsOsztalyfonok ?? false ? 1 : 0;
}
return dal.GetRogzitettOrak(tanarId, startOfWeek, endOfWeek);
});
double? kotottMunkaidoSum = ds.Tables[0].AsEnumerable().Single().Field<double?>("SumOra");
double? nemKotottMunkaidoSum = ds.Tables[1].AsEnumerable().Single().Field<double?>("SumOra");
kotottMunkaidoSum = kotottMunkaidoSum.HasValue ? kotottMunkaidoSum + pluszOraszam : pluszOraszam;
string kotottMunkaidoOra = GetHoursAndMinutesFromDoubleValue(kotottMunkaidoSum);
string nemKotottMunkaidoOra = GetHoursAndMinutesFromDoubleValue(nemKotottMunkaidoSum);
return (kotottMunkaidoOra, nemKotottMunkaidoOra);
}
private string GetHoursAndMinutesFromDoubleValue(double? sum)
{
if (!sum.HasValue)
{
return "00:00";
}
var ts = TimeSpan.FromHours(sum.Value);
var ora = ((int)ts.TotalHours).ToString("00");
var perc = ts.Minutes.ToString("00");
var result = $"{ora}:{perc}";
return result;
}
public void GenerateTeljesOrarend(int? orarendioraId = null)
{
Dal.CustomConnection.Run(ConnectionType, h =>
{
var dal = h.OrarendiOra();
dal.GenerateTeljesOrarend(IntezmenyId, TanevId, orarendioraId);
});
}
/// INFO Mobil használja
public List<OrarendCO.ExtendedEvent> GetOrarendElemekMobilNaplo(DateTime start, DateTime end, int tanarId)
{
return Dal.CustomConnection.Run(ConnectionType, (h) =>
{
return GetOrarendElemekMobilNaplo(h, start, end, tanarId);
});
}
/// INFO Mobil használja
private List<OrarendCO.ExtendedEvent> GetOrarendElemekMobilNaplo(IDalHandler h, DateTime start, DateTime end, int tanarId)
{
var events = new List<OrarendCO.ExtendedEvent>();
/*
* Egy napot hozzá kell adni a vége dátumhoz, mert az sp_GetOrarend nyíltként kezeli az itt megadott intervallum végét, és csak dátumot néz (órát, percet, másodpercet nem).
*/
var orarend = h.OrarendiOra().GetOrarend(IntezmenyId, TanevId, start, end.AddDays(1), tanarId, null, null, false, OrarendTipusEnum.Minden, null, null, false, null)
.Tables[0].Rows.Cast<DataRow>().Where(o => SDAConvert.ToDateTime(o["OraVege"]) >= start && SDAConvert.ToDateTime(o["OraKezdete"]) <= end);
if (orarend.Any())
{
var bejelentettSzamonkeresek = new SzamonkeresElorejelzesHelper(new DalHandlerConnectionType(ConnectionType, h)).GetBejelentettSzamonkeresekByDateRange(start, end);
var haziFeladatok = new DktFeladatHelper(new DalHandlerConnectionType(ConnectionType, h)).GetFeladatokByDateRange(start.Date, end.Date, false, FeladatTipusEnum.HaziFeladat);
var maxNapiOraszam = orarend.Select(row => SDAConvert.ToInt32(row["MaxNapiOraszam"])).Max();
var orakAdatai = orarend.Select(row => new
{
TantargyId = SDAConvert.ToInt32(row["TantargyId"], -1),
OsztalyCsoportId = SDAConvert.ToInt32(row["OsztCsopId"]),
TanarId = SDAConvert.ToInt32(row["TanarID"]),
OraKezdete = Convert.ToDateTime(row["OraKezdete"])
});
var elozoOrakAdatai = new OrarendiOraHelper(new DalHandlerConnectionType(ConnectionType, h)).GetElozoOrakAdatai(JsonConvert.SerializeObject(orakAdatai));
foreach (DataRow row in orarend)
{
var orarendiEvent = CreateBaseEvent(row, maxNapiOraszam);
var tulajdonsagCO = new TanoraCO();
var rowOraTipus = new OraTipus();
switch (row["OraTipus"].ToString())
{
case "OrarendiOra":
rowOraTipus = OraTipus.OrarendiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.OrarendiOra;
tulajdonsagCO.OrarendiOra = SDAConvert.ToInt32(row["ID"]);
break;
case "TanitasiOra":
rowOraTipus = OraTipus.TanitasiOra;
orarendiEvent.oraType = CalendarOraTypeEnum.TanitasiOra;
tulajdonsagCO.ID = SDAConvert.ToInt32(row["ID"]);
break;
}
orarendiEvent.OnlineOra = tulajdonsagCO.OnlineOra;
orarendiEvent.isElmaradt = rowOraTipus == OraTipus.TanitasiOra && DbHasValue(row["Megtartott"]) && (SDAConvert.ToBoolean(row["Megtartott_BOOL"]) == false);
orarendiEvent.OraKezdete = Convert.ToDateTime(row["OraKezdete"]).ToShortTimeString();
orarendiEvent.OraVege = Convert.ToDateTime(row["OraVege"]).ToShortTimeString();
orarendiEvent.TantargyId = SDAConvert.ToInt32(row["TantargyId"], -1);
orarendiEvent.TanarIdpUniqueId = SDAConvert.ToGuid(row["TanarIdpUniqueId"]);
orarendiEvent.helyettesitoId = SDAConvert.ToNullableInt32(row["HelyettesitoTanarID"]);
orarendiEvent.HelyettesitoTanarIdpUniqueId = DbHasValue(row["HelyettesitoTanarIdpUniqueId"]) ? SDAConvert.ToGuid(row["HelyettesitoTanarIdpUniqueId"]) : (Guid?)null;
orarendiEvent.HetSorszama = SDAConvert.ToInt32(row["HetSorszam"]);
var rowTanarId = DbHasValue(row["TanarID"]) ? SDAConvert.ToInt32(row["TanarID"]) : (int?)null;
var elozoOraAdatai = elozoOrakAdatai.FirstOrDefault(o => o.TantargyId == orarendiEvent.TantargyId && o.OsztalyCsoportId == SDAConvert.ToInt32(row["OsztCsopId"]) && o.TanarId == rowTanarId.Value && o.OraKezdete == Convert.ToDateTime(row["OraKezdete"]));
orarendiEvent.ElozoNaplozottOraDatum = elozoOraAdatai?.ElozoOraDatuma;
orarendiEvent.ElozoNaplozottOraTema = elozoOraAdatai?.ElozoOraTemaja;
if (elozoOraAdatai == null)
{
orarendiEvent.EvesOraSorszam = 1;
}
else if (orarendiEvent.isElmaradt)
{
orarendiEvent.EvesOraSorszam = null;
}
else
{
if (orarendiEvent.OraAllapota == TanoraAllapotaEnum.Nem_naplozott)
{
if (elozoOraAdatai.ElozoOraEvesSorszama == null)
{
orarendiEvent.EvesOraSorszam = null;
}
else
{
orarendiEvent.EvesOraSorszam = Convert.ToInt32(elozoOraAdatai.ElozoOraEvesSorszama) + 1;
}
}
else
{
orarendiEvent.EvesOraSorszam = SDAConvert.ToInt32(row["EvesOraSorszam"]);
}
}
var oraBejelentettSzamonkeresek = bejelentettSzamonkeresek
.Where(x => x.OrarendiOraGroupId == (row["GroupId"] != DBNull.Value ? SDAConvert.ToInt32(row["GroupId"]) : -1) && x.SzamonkeresDatuma == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.BejelentettSzamonkeresId = oraBejelentettSzamonkeresek.FirstOrDefault()?.ID;
orarendiEvent.BejelentettSzamonkeresMod = oraBejelentettSzamonkeresek.FirstOrDefault()?.SzamonkeresModId.GetItemNameFromCache(TanevId);
orarendiEvent.BejelentettSzamonkeresTema = oraBejelentettSzamonkeresek.FirstOrDefault()?.SzamonkeresMegnevezes;
var oraHaziFeladatok = haziFeladatok.Where(x =>
(
(x.TantargyId == SDAConvert.ToInt32(row["TantargyId"]) &&
x.OsztalyCsoportId == SDAConvert.ToInt32(row["OsztCsopId"]) &&
x.AlkalmazottId == SDAConvert.ToInt32(row["TanarID"]) &&
x.Datum == SDAConvert.ToDateTime(row["Datum"]) &&
((x.Oraszam.HasValue && x.Oraszam.Value == SDAConvert.ToInt32(row["Oraszam"])) ||
(x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == SDAConvert.ToDateTime(row["OraKezdete"]).Value.TimeOfDay))
)
||
x.TanitasiOraId == (row["ID"] != DBNull.Value ? SDAConvert.ToInt32(row["ID"]) : -1)) &&
x.Datum == (row["Datum"] != DBNull.Value ? SDAConvert.ToDateTime(row["Datum"]) : DateTime.MinValue));
orarendiEvent.HaziFeladatId = oraHaziFeladatok.FirstOrDefault()?.ID;
events.Add(orarendiEvent);
}
}
events = HandleAndAddTanevRendje(h, start, end, events, isMobilHivas: true);
return events;
}
}
}