using System; using System.Collections.Generic; using System.Linq; using System.Net; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Helpers.SystemSettings; using Kreta.BusinessLogic.Interfaces; using Kreta.BusinessLogic.Logic.Naplozas; using Kreta.BusinessLogic.Logic.Naplozas.Validacio; using Kreta.Client.CoreApi; using Kreta.Core.ConnectionType; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Core.Logic; using Kreta.Core.Validation.Exceptions; using Kreta.DataAccessManual; using Kreta.DataAccessManual.ParameterClasses; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Enums.ManualEnums.SystemSettings; using Kreta.Framework.Entities; using Kreta.Naplo.BusinessLogic.V3.Csatolmany; using Kreta.Naplo.BusinessLogic.V3.Felmentes; using Kreta.Naplo.BusinessLogic.V3.Logic; using Kreta.Naplo.BusinessLogic.V3.Ora; using Kreta.Naplo.Dao.V3.Orarend; using Kreta.Naplo.Domain.V3.Common; using Kreta.Naplo.Domain.V3.Csatolmany; using Kreta.Naplo.Domain.V3.Ertekeles; using Kreta.Naplo.Domain.V3.Felmentes; using Kreta.Naplo.Domain.V3.Logic; using Kreta.Naplo.Domain.V3.Orarend; using Kreta.Naplo.Domain.V3.OsztalyCsoport; using Kreta.Naplo.Domain.V3.UniqueIdentifier; using Kreta.Naplo.Domain.V3.Utility; using Kreta.Resources; namespace Kreta.Naplo.BusinessLogic.V3.Orarend { internal static class OrarendSubqueries { internal static HashSet GetOrarend(DefaultConnectionParameters dcp, OrarendRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); return ListOrarendElemek(dcp, request.DatumTol, request.DatumIg); } internal static OrarendElemResponse GetOrarendElem(DefaultConnectionParameters dcp, OrarendElemRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); return ListOrarendElemek(dcp, request.OrarendElemUid.Datum, request.OrarendElemUid.Datum.AddDays(1), request.OrarendElemUid.Id, request.OrarendElemUid.Tipus) .FirstOrDefault() ?? throw new BlException(ErrorResource.AzOratIdokozbenToroltekKerjukFrissitsen, BlExceptionType.NemLetezoEntitas); } internal static HashSet ListOrarendElemek(DefaultConnectionParameters dcp, DateTime datumTol, DateTime datumIg, int? orarendElemId = null, CalendarOraTypeEnum? orarendElemTipus = null) { var orarendElemek = new HashSet(); var eventList = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)) .GetOrarendElemekMobilNaplo(datumTol, datumIg, dcp.FelhasznaloId); if (orarendElemId != null) { if (orarendElemTipus == CalendarOraTypeEnum.OrarendiOra) { eventList = new List() { eventList.FirstOrDefault(e => (e.oraType == CalendarOraTypeEnum.OrarendiOra || e.oraType == CalendarOraTypeEnum.TanitasiOra) && e.OrarendiOraId == orarendElemId && e.datum == datumTol) }; } else { eventList = new List() { eventList.FirstOrDefault(e => e.oraType == orarendElemTipus && e.id == orarendElemId && e.datum == datumTol) }; } } if (eventList.Any() && eventList.First() == null) { return orarendElemek; } var oraFiles = CsatolmanySubqueries.ListCsatolmanyok(dcp, new CsatolmanyListRequest { DatumTol = datumTol, DatumIg = datumIg, OrarendElemek = eventList.Where(o => o.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny).Select(o => new OrarendElemSimplified(o.id, o.OrarendiOraId ?? 0, o.OrarendiOraGroupId ?? 0, o.oraType, o.datum.Value)) }); var kezdoIdopont = new SystemSettingsHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja); var lezartOsztalyokEsBontottCsoportjaik = new NaplozarasLogic(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetLezartOsztalyokEsBontottCsoportjaik(); var naplozarasDatum = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetNaplozarasDate(null); foreach (var tanarOra in eventList) { if (tanarOra.oraType == CalendarOraTypeEnum.TanevRendjeEsemeny) { orarendElemek.Add( new OrarendElemResponse { Uid = new OrarendElemUid(tanarOra.id, tanarOra.oraType, tanarOra.start.Value), Nev = tanarOra.title, Kezdete = tanarOra.start.Value.Add(kezdoIdopont).AddMinutes(-1), Vege = tanarOra.end.Value.Add(kezdoIdopont).AddMinutes(-1), Allapot = (int)TanoraAllapotaEnum.TanevRendjeEsemeny, Csatolmanyok = new List() }); } else if (!tanarOra.allDay) { var oraResponse = new OrarendElemResponse { Uid = new OrarendElemUid(tanarOra.id, tanarOra.oraType, tanarOra.datum.Value), Nev = tanarOra.TantargyTeljesNev, HasOrarendiOra = tanarOra.OrarendiOraGroupId.HasValue, OsztalyCsoportId = tanarOra.TanevRendOsztalyCsoportId, OsztalyCsoportNev = tanarOra.OsztalyCsoport, TantargyId = tanarOra.TantargyId, TantargyNev = tanarOra.TantargyTeljesNev, Terem = tanarOra.Terem, Kezdete = tanarOra.start.Value, Vege = tanarOra.end.Value, Tema = tanarOra.Tema, Oraszam = tanarOra.hanyadikora, Allapot = (int)tanarOra.OraAllapota, TanarUid = tanarOra.TanarIdpUniqueId, TanarNev = tanarOra.TanarNev, HelyettesitoTanarUid = tanarOra.HelyettesitoTanarIdpUniqueId, HelyettesitoTanarNev = tanarOra.HelyettesNev, EvesOraSorszam = tanarOra.EvesOraSorszam, HaziFeladatId = tanarOra.HaziFeladatId, BejelentettSzamonkeresId = tanarOra.BejelentettSzamonkeresId, BejelentettSzamonkeresMod = tanarOra.BejelentettSzamonkeresMod, BejelentettSzamonkeresTema = tanarOra.BejelentettSzamonkeresTema, ElozoNaplozottOraDatum = tanarOra.ElozoNaplozottOraDatum, ElozoNaplozottOraTema = tanarOra.ElozoNaplozottOraTema, Naplozart = lezartOsztalyokEsBontottCsoportjaik.Contains(tanarOra.TanevRendOsztalyCsoportId) || tanarOra.datum.Value <= naplozarasDatum }; oraResponse.Csatolmanyok = oraFiles[oraResponse.Uid]; if (!tanarOra.CsengetesiRendId.HasValue) { oraResponse.Oraszam = null; } orarendElemek.Add(oraResponse); } } return orarendElemek; } public static string OraNaplozas(DefaultConnectionParameters dcp, OraNaplozasRequest request, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); if (request.IsElmaradt) { if (new SystemSettingsHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetSystemSettingValue(RendszerBeallitasTipusEnum.Elmaradt_tanitasi_ora_rogzitesenek_tiltasa)) { throw new BlException("Az órát az intézményi beállítások alapján nem lehet elmaradtra naplózni", BlExceptionType.FunkcioKikapcsolva); } } var naploValidacioParameters = new NaploValidacioParameters(from: request.OrarendElemUid.Datum, to: request.OrarendElemUid.Datum.AddDays(1), new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), felhasznaloSzerepkor: null); var naploValidator = new NaploValidacio(naploValidacioParameters); try { var logicCo = new NaplozasMobilCo(); request.ConvertTo(logicCo); var tanitasiOraId = new NaplozasLogic(naploValidator, logicCo).SaveNaplozas(fileServiceHelper, coreApiClient).TanitasiOraId; return UidLogic.Concat(tanitasiOraId, CalendarOraTypeEnum.TanitasiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString()); } catch (ValidationException exception) { throw new BlException(exception.Message, BlExceptionType.ModelValidacio); } catch (BlException exception) { throw new BlException(exception.Message, BlExceptionType.ModelValidacio); } catch (EntityNotFoundException) { throw new BlException(ErrorResource.NaplozasSikertelenAzOraMarNemLetezikAKivalasztottNapon, BlExceptionType.NemLetezoEntitas); } catch (Exception exception) { throw new BlException(ErrorResource.SikertelenMentes, exception); } } public static string OraNaplozasTorles(DefaultConnectionParameters dcp, OraNaplozasTorlesRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); try { var naploValidacioParameters = new NaploValidacioParameters(from: request.OrarendElemUid.Datum, to: request.OrarendElemUid.Datum.AddDays(1), new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), felhasznaloSzerepkor: null); var naploValidator = new NaploValidacio(naploValidacioParameters); var logicCo = new NaplozasMobilCo(); request.ConvertTo(logicCo); new NaplozasLogic(naploValidator, logicCo).NaplozasValidacio(); var tanoraHelper = new TanoraHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)); var tanitasiOra = dcp.DalHandler.TanitasiOra().Get(request.OrarendElemUid.Id); if (tanitasiOra.TanarId != dcp.FelhasznaloId && tanitasiOra.HelyettesitoTanarId != dcp.FelhasznaloId) { throw new BlException(BlExceptionType.NincsJogosultsag); } tanoraHelper.NaplozasTorlese(request.OrarendElemUid.Id, true); var orarendiOra = tanoraHelper.GetOrarendiOraIdForTanitasiOra(tanitasiOra); if (orarendiOra != null) { return UidLogic.Concat(orarendiOra.ID, CalendarOraTypeEnum.OrarendiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString()); } else { return UidLogic.Concat(-1, CalendarOraTypeEnum.OrarendiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString()); } } catch (ValidationException exception) { throw new BlException(exception.Message, BlExceptionType.ModelValidacio); } catch (BlException exception) when (exception.ExceptionType is BlExceptionType.ModelValidacio) { throw new BlException(exception.Message, BlExceptionType.ModelValidacio); } catch (Exception exception) { throw new BlException(ErrorResource.SikertelenTorles, exception); } } internal static IEnumerable GetTanuloJelenlet(DefaultConnectionParameters dcp, TanuloJelenletRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); var connection = new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId); (var oraKezdete, var oraVege, var osztalyCsoportId, var tantargyId) = GetOraAlapadatok(dcp, request); var parhuzamosOranNaplozott = new MulasztasHelper(connection).ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdete, oraVege, request.OrarendElemUid.Id); var mulasztasok = OraSubqueries.GetTanuloJelenlet(dcp, new Domain.V3.Ora.TanuloJelenletRequest(request.OrarendElemUid.Id)); var osztalyCsoportTanuloi = FelmentesSubqueries.GetFelmentesekWithTanuloAdatok(dcp, new FelmentesRequest { OsztalyCsoportId = osztalyCsoportId, Datum = oraKezdete, TantargyId = tantargyId }); var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = new SystemSettingsHelper(connection).GetSystemSettingValue(RendszerBeallitasTipusEnum.A_foglalkozasok_mulasztasi_adatai_megadasanal_a_parhuzamos_orakkal_valo_utkozes_vizsgalata); var igazolasLista = dcp.DalHandler.IgazolasDal().GetIgazolasokByDate(request.OrarendElemUid.Datum, dcp.TanevId, dcp.IntezmenyId).ToDaoList().Select(x => x.TanuloId); var magantanuloMulasztasSystemSetting = (SystemSettingMagantanuloMulasztas)new SystemSettingsHelper(connection).GetSystemSettingValue(RendszerBeallitasTipusEnum.Magantanulo_oralatogatas_aloli_mentessegenek_kezelese); var isNemGyakorlatiTantargyonResztKellVennie = magantanuloMulasztasSystemSetting != SystemSettingMagantanuloMulasztas.CsakGyakorlaton && !new TantargyHelper(connection).IsGyakorlatiTantargy(tantargyId); var alapertelmezettJelenlet = new SystemSettingsHelper(connection).GetSystemSettingValue(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben); var elozoOranHianyzoAjanlasa = new FelhasznaloHelper(connection).GetProfilTipus(dcp.FelhasznaloId, "HianyzokAutoKitoltes"); var elozoOranhianyzottTanuloIdList = elozoOranHianyzoAjanlasa ? dcp.DalHandler.Tanulo().GetElozoOranHianyzottTanulok(oraKezdete, osztalyCsoportId) : new List(); var tantargybolElozoOranHianyzottTanuloIdList = dcp.DalHandler.OrarendiOra().GetElozoOranHianyzottTanulo(tantargyId, osztalyCsoportId, oraKezdete, dcp.TanevId, dcp.IntezmenyId); return CheckTanuloJelenlet(osztalyCsoportTanuloi, mulasztasok, igazolasLista, parhuzamosOranNaplozott, elozoOranhianyzottTanuloIdList, tantargybolElozoOranHianyzottTanuloIdList, tantargyId, isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled, magantanuloMulasztasSystemSetting, isNemGyakorlatiTantargyonResztKellVennie, alapertelmezettJelenlet); } internal static IEnumerable ListHetirend(DefaultConnectionParameters dcp, HetirendListRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); return dcp.DalHandler.NaptariHet().GetNaptariHetList(dcp.TanevId, new NaptariHetAndOrarendOverlapFilter { OrarendElemKezdoNapDatuma = request.OrarendElemKezdoNapDatuma, OrarendElemVegNapDatuma = request.OrarendElemVegNapDatuma }) .ToDaoList() .Select(x => new HetirendListResponse { Id = x.Id, HetSorszama = x.HetSorszama, KezdoNapDatuma = x.KezdoNapDatuma, VegNapDatuma = x.VegNapDatuma, Hetirend = x.HetirendNev ?? ((int)HetiRendTipusEnum.MindegyikHet).GetDisplayName(dcp.TanevId) }); } internal static BejelentettSzamonkeresekResponse GetBejelentettSzamonkeres(DefaultConnectionParameters dcp, int id) { var szamonkeres = dcp.DalHandler.SzamonkeresElorejelzes().GetBejelentettSzamonkeresekGrid( dcp.IntezmenyId, dcp.TanevId, new SzamonkeresElorejelzesSearchPco { SzamonkeresIds = new List() { id }, }, null).ToDaoList().FirstOrDefault(); if (szamonkeres == null) { throw new BlException(BlExceptionType.NemLetezoEntitas); } return new BejelentettSzamonkeresekResponse { Id = szamonkeres.Id, Tema = szamonkeres.Tema, ErtekelesMod = szamonkeres.ErtekelesMod, OraSzam = szamonkeres.OraSzam, TantargyId = szamonkeres.TantargyId, TantargyNev = szamonkeres.TantargyNev, TanarUid = szamonkeres.TanarUid, TanarNev = szamonkeres.TanarNev }; } internal static void DeleteBejelentettSzamonkeres(DefaultConnectionParameters dcp, int id) { var szamonkeres = dcp.DalHandler.SzamonkeresElorejelzes().Get(id); if (szamonkeres.Torolt) throw new BlException(ErrorResource.ASzamonkeresIdokozbenMarTorolveLett, BlExceptionType.NemLetezoEntitas); if (szamonkeres.RogzitoId != dcp.FelhasznaloId) throw new BlException(BlExceptionType.NincsJogosultsag); dcp.DalHandler.SzamonkeresElorejelzes().Delete(id); } internal static void PostSzamonkeres(DefaultConnectionParameters dcp, SzamonkeresRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); var connection = new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId); var systemSettingsHelper = new SystemSettingsHelper(connection); var limitFigyelmeztetesiTiltasiBeallitas = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Limit_Figyelmeztetesi_Tiltasi_Beallitas); var ertekelesModokBeallitasaNapiLimithez = systemSettingsHelper.GetSystemSettingValue>(RendszerBeallitasTipusEnum.Ertekeles_Modok_Beallitasa_Napi_Limithez); var napiSzamonkeresiLimit = systemSettingsHelper.GetSystemSettingValue(RendszerBeallitasTipusEnum.Napi_Szamonkeresi_Limit); var orarendiOra = dcp.DalHandler.OrarendiOra().Get(request.OrarendElemUid.Id); var orarendiOraGroupId = orarendiOra.OrarendiOraGroupId.Value; var szamonkeresElorejelzesCO = new SzamonkeresElorejelzesCO { OrarendiOraGroupId = orarendiOraGroupId, Datum = request.OrarendElemUid.Datum, Megnevezes = request.Tema, SzamonkeresModId = request.ErtekelesMod }; if (dcp.DalHandler.SzamonkeresElorejelzes().HasSzamonkeresForOrarendiOraGroupId(dcp.TanevId, orarendiOraGroupId)) { throw new BlException(OrarendResource.SzamonkeresMarRogzitveAzAdottOrahoz, BlExceptionType.ModelValidacio); } var szamonkeresElorejelzesHelper = new SzamonkeresElorejelzesHelper(connection); var tanulokSzamonkeresElorejelzesei = szamonkeresElorejelzesHelper.GetTanulokSzamonkeresElorejelzesei(new SzamonkeresElorejelzesSearchCO { OraGroupId = orarendiOraGroupId, Datum = request.OrarendElemUid.Datum, NapiSzamonkeresLimit = napiSzamonkeresiLimit, OsztalyCsoportId = orarendiOra.OsztalyCsoportId, ErtekelesModokLimithez = ertekelesModokBeallitasaNapiLimithez }); if (ertekelesModokBeallitasaNapiLimithez.Contains(request.ErtekelesMod) && napiSzamonkeresiLimit > 0 && ertekelesModokBeallitasaNapiLimithez.Count > 0 && limitFigyelmeztetesiTiltasiBeallitas < 3) { switch (limitFigyelmeztetesiTiltasiBeallitas) { case 1: if (tanulokSzamonkeresElorejelzesei != null && tanulokSzamonkeresElorejelzesei.Tables.Count > 0 && tanulokSzamonkeresElorejelzesei.Tables[0].Rows.Count > 0) { throw new BlException(string.Format(OrarendResource.AMegengedettMennyiseguSzamonkeresMarRogzitesreKerültAzAdottNapra, napiSzamonkeresiLimit), BlExceptionType.ModelValidacio); } break; case 2: if (tanulokSzamonkeresElorejelzesei != null && tanulokSzamonkeresElorejelzesei.Tables.Count > 0 && tanulokSzamonkeresElorejelzesei.Tables[0].Rows.Count > 0) { if (request.ForceSave) { szamonkeresElorejelzesHelper.SaveSzamonkeresElorejelzes(szamonkeresElorejelzesCO, dcp.FelhasznaloId, dcp.IntezmenyId); return; } throw new BlException(string.Format(OrarendResource.AMegengedettMennyiseguSzamonkeresMarRogzitesreKerültAzAdottNapraBiztosanRogzitiIgyIsASzamonkerest, napiSzamonkeresiLimit), HttpStatusCode.Conflict); } break; default: break; } } szamonkeresElorejelzesHelper.SaveSzamonkeresElorejelzes(szamonkeresElorejelzesCO, dcp.FelhasznaloId, dcp.IntezmenyId); } internal static IEnumerable GetFelmentes(DefaultConnectionParameters dcp, int tantargyId) { return dcp.DalHandler.Tanulo().GetTanulokFelmentesei(new List(), dcp.TanevId, isFromSzervezet: true, tantargyId: tantargyId).ToDaoList() .Select(f => new FelmentesResponse { TanuloId = f.TanuloId, TantargyNev = f.TantargyNev, ErtekelesAloliFelmentes = f.ErtekelesMentesites, TanoraLatogatasaAloliFelmentes = f.OraMentesites, SzovegesenErtekelheto = f.SzovegesenErtekelheto, FelmentesOka = f.FelmentesOka, FelmentesKezdete = f.FelmentesKezdete, FelmentesVege = f.FelmentesVege }); } private static (DateTime, DateTime, int, int) GetOraAlapadatok(DefaultConnectionParameters dcp, TanuloJelenletRequest request) { var oraKezdete = request.OrarendElemUid.Datum; var oraVege = request.OrarendElemUid.Datum; var osztalyCsoportId = 0; var tantargyId = 0; if (request.OrarendElemUid.Tipus == CalendarOraTypeEnum.OrarendiOra) { var orarendiOra = dcp.DalHandler.OrarendiOra().Get(request.OrarendElemUid.Id); oraKezdete = oraKezdete.AddHours(orarendiOra.OraKezdete.Value.Hour).AddMinutes(orarendiOra.OraKezdete.Value.Minute); oraVege = oraVege.AddHours(orarendiOra.OraVege.Value.Hour).AddMinutes(orarendiOra.OraVege.Value.Minute); osztalyCsoportId = orarendiOra.OsztalyCsoportId; tantargyId = orarendiOra.TantargyId; } else if (request.OrarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra) { var tanitasiOra = dcp.DalHandler.TanitasiOra().Get(request.OrarendElemUid.Id); oraKezdete = tanitasiOra.OraKezdete; oraVege = tanitasiOra.OraVege; osztalyCsoportId = tanitasiOra.OsztalyCsoportId; tantargyId = tanitasiOra.TantargyId; } return (oraKezdete, oraVege, osztalyCsoportId, tantargyId); } private static IEnumerable CheckTanuloJelenlet(IEnumerable<(int tanuloId, int? tantargyId, TanuloMentessegResponse mentessegResponse)> osztalyCsoportTanuloi, HashSet mulasztasok, IEnumerable igazolasLista, List parhuzamosOranNaplozott, List elozoOranHianyzottTanuloIdList, List tantargybolElozoOranHianyzottTanuloIdList, int tantargyId, bool isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled, SystemSettingMagantanuloMulasztas magantanuloMulasztasSystemSetting, bool isNemGyakorlatiTantargyonResztKellVennie, int alapertelmezettJelenlet) { var response = new List(); foreach (var tanulo in osztalyCsoportTanuloi) { var isEnabledHianyzas = true; var allapot = alapertelmezettJelenlet; var figyelmeztetoSzovegList = new List(); if (elozoOranHianyzottTanuloIdList.Contains(tanulo.tanuloId)) { allapot = (int)MulasztasTipusEnum.hianyzas; } if (tantargybolElozoOranHianyzottTanuloIdList.Contains(tanulo.tanuloId)) { figyelmeztetoSzovegList.Add(NaploApiResource.ElozoOranHianyzott); } if (igazolasLista.Contains(tanulo.tanuloId)) { allapot = (int)MulasztasTipusEnum.hianyzas; figyelmeztetoSzovegList.Add(OrarendResource.ATanulonakVanRogzitveIgazolasa); } if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozott.Contains(tanulo.tanuloId)) { allapot = (int)MulasztasTipusEnum.ures; isEnabledHianyzas = false; figyelmeztetoSzovegList.Add(OrarendResource.ParhuzamosOranMarNaploztak); } if (tanulo.mentessegResponse.IsMaganTanulo && magantanuloMulasztasSystemSetting != SystemSettingMagantanuloMulasztas.KotelezoMegjelenie && isNemGyakorlatiTantargyonResztKellVennie) { allapot = (int)MulasztasTipusEnum.ures; isEnabledHianyzas = false; figyelmeztetoSzovegList.Add(OrarendResource.Magantanulo); } if (tanulo.mentessegResponse.TanoraLatogatasaAloliFelmentes && tanulo.tantargyId == tantargyId) { allapot = (int)MulasztasTipusEnum.ures; isEnabledHianyzas = false; figyelmeztetoSzovegList.Add(tanulo.mentessegResponse.FelmentesOka); } if (tanulo.mentessegResponse.ErtekelesAloliFelmentes && tanulo.tantargyId == tantargyId) { figyelmeztetoSzovegList.Add(tanulo.mentessegResponse.FelmentesOka); } if (tanulo.mentessegResponse.IsSzakmaiGyakorlatonLevo) { allapot = (int)MulasztasTipusEnum.ures; } if (tanulo.mentessegResponse.IsJogviszonySzunetelteto) { allapot = (int)MulasztasTipusEnum.ures; isEnabledHianyzas = false; } var mulasztas = mulasztasok.Where(x => x.TanuloId == tanulo.tanuloId).FirstOrDefault(); if (mulasztas != null) { allapot = mulasztas.MulasztasTipus; } response.Add(new TanuloJelenletResponse(tanulo.tanuloId, allapot, mulasztas?.Keses, string.Join(" | ", figyelmeztetoSzovegList), isEnabledHianyzas)); } return response; } } }