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 NemTanitasiNapTipusok = new List { { (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 GetTanuloOrarendDataForMobile(DataSet dsOrarend, DateTime start, DateTime end, int? tanuloId = null, bool isTanevRendjeEsemenyekAddEnabled = true, bool isKellOrarendiOraOrTanitasiOraTulajdonsag = false, IEnumerable 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(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum); var vegDatum = helper.GetSystemSettingValue(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(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum); var vegDatum = helper.GetSystemSettingValue(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(RendszerBeallitasTipusEnum.Tanar_vehet_e_fel_orat_maganak); lehetOratFelvenniTtfNelkul = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Lehet_orat_felvenni_TTF_nelkul); tanarCsakAzEloirtHelyettesitestNaplozhatja = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Pedagogusok_csak_az_eloirt_helyettesiteseiket_regisztralhatjak_a_haladasi_naploban); tanarVehetFelOratMaganakOsszefuggoSzakmaiGyakorlaton = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_egyedi_rogzites); var szakGyakKezdDatum = helper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum); var szakGyakVegDatum = helper.GetSystemSettingValue(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 events, List orarendElemek, RendszerBeallitasTipusEnum kezdoIdopontRendszerBeallitasTipus, RendszerBeallitasTipusEnum zaroIdopontRendszerBeallitasTipus, bool isFromSzervezet) { TimeSpan rendszerKezdes; TimeSpan rendszerVege; var helper = new SystemSettingsHelper(new DalHandlerConnectionType(ConnectionType, h)); rendszerKezdes = helper.GetSystemSettingValue(kezdoIdopontRendszerBeallitasTipus); rendszerVege = helper.GetSystemSettingValue(zaroIdopontRendszerBeallitasTipus); var calendarId = -1; var datumok = new List(); 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 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(); 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(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja); TimeSpan rendszerVege = helper.GetSystemSettingValue(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(RendszerBeallitasTipusEnum.Havi_vagy_heti_naplozaras, IntezmenyAzonosito, TanevId); var naplozarasRendszerBeallitasTipus = naplozarasTipus == NaplozarasTipusaEnum.Havi ? RendszerBeallitasTipusEnum.Naplozaras_havi_ertek : RendszerBeallitasTipusEnum.Naplozaras_heti_ertek; var naplozarasNapja = SystemSettingsManager.GetSystemSettingValue(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(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(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 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 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 bejelentettSzamonkeresek = helper.GetBejelentettSzamonkeresekByDateRange(startDate, endDate); var events = new List(); var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h); var oraDataRows = dsOrarend.Tables[0].Rows.Cast(); // @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("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"])); var digitalisInformaciokByTanitasiOraIds = new Dictionary>(); if (tanitasiOraIdList.Any()) { digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)) .GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList) .ToDaoList() .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(RendszerBeallitasTipusEnum.helyettesites_lathatosaga_az_ellenorzoben); var oraTipus = row.Field("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(); } 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("hasRejtettOraKezdete") || item.Field("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 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 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(); var orarendiOraDal = h.OrarendiOra(); var dsOrarend = orarendiOraDal.GetOrarend(IntezmenyId, TanevId, start, end, tanarId, osztalyCsoportId, tanuloId, csakOrarend, orarendTipus, null, teremId, false, feladatKategoria); List bejelentettSzamonkeresek = new List(); 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(); var tanitasiOraIdList = oraDataRows.Where(row => row.Field("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"])); var digitalisInformaciokByTanitasiOraIds = new Dictionary>(); if (tanitasiOraIdList.Any()) { digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)) .GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList) .ToDaoList() .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(); } 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 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 bejelentettSzamonkeresek = new List(); 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(); 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 GetCsengetesiRend(IDalHandler h, DateTime start, DateTime end, int? osztalyCsoportId, List events, bool isOsszefuggoSzakmaiGyakorlat = false, DateTime? szakmaiGyakKezdDatum = null, DateTime? szakmaiGyakVegDatum = null) { var connectionType = new DalHandlerConnectionType(ConnectionType, h); var csengetesiRendEventList = new List(); 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(); var aktivCsengetesiRendDT = csengetesirendOrakHelper.GetCsengetesirendOrakNaptarhoz(aktivCsengetesiRendId); var foglalkozasok_Rogzitese_Hetvegere = new SystemSettingsHelper(connectionType).GetSystemSettingValue(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 GetSzervezetCsengetesiRend(IDalHandler h, DateTime start, DateTime end, List events) { var connectionType = new DalHandlerConnectionType(ConnectionType, h); var csengetesiRendEventList = new List(); 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(); 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 HandleAndAddTanevRendje(IDalHandler h, DateTime start, DateTime end, List 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 GetNemKotottMunkaIdo(DateTime start, DateTime end, string groupId) { return Dal.CustomConnection.Run(ConnectionType, (h) => { var list = new List(); 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 ConvertTanevEsemenyToEvent(DataTable table, bool csakGlobal = false, int? tanuloId = null, int? osztalycsoportId = null, bool isMobilHivas = false) { var tanevEsemenyeiLista = new List(); List tanevRendList = table.Rows.Cast().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 GetTanoranKivuliFoglalkozasokHelyettesites(IDalHandler h, DateTime start, DateTime end, int? tanarId) { var tanoranKivuliFoglalkozasokLista = new List(); 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(); var tanitasiOraIdList = dataRows.Where(row => row.Field("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"])); var digitalisInformaciokByTanitasiOraIds = new Dictionary>(); if (tanitasiOraIdList.Any()) { digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)) .GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList) .ToDaoList() .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(); } 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 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(); var maxOraszamInAktivCsengetesiRend = GetMaxOraszamInAktivCsengetesiRend(h); var oraDataRows = dsOrarend.Tables[0].Rows.Cast(); var tanitasiOraIdList = oraDataRows.Where(row => row.Field("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"])); var digitalisInformaciokByTanitasiOraIds = new Dictionary>(); if (tanitasiOraIdList.Any()) { digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)) .GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList) .ToDaoList() .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(); } 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 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 bejelentettSzamonkeresek = new List(); 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(); 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 GetNemKotottMunkaIdo(IDalHandler h, DateTime start, DateTime end, int tanarId, bool isAdmin = false) { var lista = new List(); 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(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 GetFogadoorak(IDalHandler h, DateTime start, DateTime end, int tanarId) { var lista = new List(); 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 GetFogadoorakForGondviselo(IDalHandler h, DateTime start, DateTime end, int tanuloId) { var lista = new List(); 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 GetOralatogatas(IDalHandler h, DateTime start, DateTime end, int tanarId) { var orarendCo = new OrarendCO(); orarendCo.Events = new List(); var tanitasiOraLista = new List(); var orarendiOraDal = h.OrarendiOra(); var dsOrarend = orarendiOraDal.GetOralatogatasok(IntezmenyId, TanevId, start, end, tanarId); DateTime naplozarasDate = GetNaplozarasDate(start); var oraDataRows = dsOrarend.Tables[0].Rows.Cast(); var tanitasiOraIdList = oraDataRows.Where(row => row.Field("OraTipus") == "TanitasiOra").Select(row => SDAConvert.ToInt32(row["ID"])); var digitalisInformaciokByTanitasiOraIds = new Dictionary>(); if (tanitasiOraIdList.Any()) { digitalisInformaciokByTanitasiOraIds = new TanoraHelper(new DalHandlerConnectionType(ConnectionType, h)) .GetDigitalisInformaciokByTanoraIds(tanitasiOraIdList) .ToDaoList() .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(); } 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 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 FilterOutEventByTanevRendje(IDalHandler h, DataTable tanevTable, List orarendevents, TanevrendHelper helper) { var tanevRendjeLists = helper.GetTanevRendjeLists(tanevTable); List engedelyezettEventList = new List(), ocsTiltottEventList = new List(), globalTiltottEventList = new List(); 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(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(RendszerBeallitasTipusEnum.Osszefuggo_gyakorlat_kezd_datum); var vegDatum = helper.GetSystemSettingValue(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 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(); 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 GetOrarendCoList() { DataSet dataSet = Dal.CustomConnection.Run(ConnectionType, dalHandler => dalHandler.OrarendiOra().GetOrarendDataSet(TanevId)); var result = new List(); 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 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(); 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(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja); rendszerVege = max ?? helper.GetSystemSettingValue(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(oraKezdete).DayOfWeek == Convert.ToDateTime(myRow[oraKezdete]).DayOfWeek && r.Field(oraKezdete).TimeOfDay < rendszerKezdes).ToList().Count > 0; } if (myRow[oraVege] != DBNull.Value) { myRow[hasRejtettOraVegeColumn] = srcDS.Tables[0].AsEnumerable().Where(r => r.Field(oraVege).DayOfWeek == Convert.ToDateTime(myRow[oraVege]).DayOfWeek && r.Field(oraVege).TimeOfDay > rendszerVege).ToList().Count > 0; } } return targetDS; } private DataSet GetHazifeladatokListaja(HazifeladatokListajaCO co) { var ds = Dal.CustomConnection.Run(ConnectionType, h => { var osztalyCsoportIds = new List(); 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 GetHazifeladatCoList(HazifeladatokListajaCO co, int? maxHaziSzovegHossz = null) { var result = new List(); 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 GetNemNaplozottOrarendiOraCoList(NemNaplozottTanorakSearchCO searchCo) { var coList = new List(); 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("SumOra"); double? nemKotottMunkaidoSum = ds.Tables[1].AsEnumerable().Single().Field("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 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 GetOrarendElemekMobilNaplo(IDalHandler h, DateTime start, DateTime end, int tanarId) { var events = new List(); /* * 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().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; } } }