3517 lines
187 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|