using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Felmentes; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Enum; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic; using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get; using Kreta.Core.ConnectionType; using Kreta.DataAccessManual.Interfaces; using Kreta.DataAccessManual.ParameterClasses; namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo { public static class EgyediOraSubqueries { /// /// Returns the filters to be executory from the template. The order of filters does not matter. /// public static List ListJavasoltJelenlet(int teacherId, string intezmenyAzonosito, int tanevId, IDalHandler h, JavasoltJelenletGetRequestCo request, Enums.OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum, int intezmenyId) { var response = new List(); foreach (var egyediOraKey in request.Key) { var osztalyTanuloi = OraSubqueries.GetOsztalyTanuloi(teacherId, new OsztalyTanuloiRequestCo() { OsztalyCsoportId = egyediOraKey.OsztalyCsoportId, OraShortDatuma = egyediOraKey.OraKezdetDatuma }, intezmenyAzonosito, intezmenyId, tanevId); var igazolasLista = h.IgazolasDal().GetIgazolasokListajaGrid( new IgazolasokListajaSearchPCO { OsztalyCsoportSearch = egyediOraKey.OsztalyCsoportId, IgazolasDatuma = egyediOraKey.OraKezdetDatuma }, oktatasNevelesKategoriaEnum).Tables[0]; response.Add(new JavasoltJelenletGetResponseCo { TantargyId = egyediOraKey.TantargyId, OsztalyCsoportId = egyediOraKey.OsztalyCsoportId, OraKezdetDatuma = egyediOraKey.OraKezdetDatuma, TanuloLista = GetTanuloListaWithSzuroLista(osztalyTanuloi.TanuloLista, igazolasLista, egyediOraKey.TantargyId, egyediOraKey.OraKezdetDatuma, egyediOraKey.OraVegDatuma, egyediOraKey.OsztalyCsoportId) }); } return response; bool HasTanuloIgazolas(int tanuloId, DataTable igazolasLista) => igazolasLista.AsEnumerable().Any(x => x.Field("TanuloId") == tanuloId); List GetTanuloListaWithSzuroLista(List tanuloLista, DataTable igazolasLista, int tantargyId, DateTime oraKezdetDatuma, DateTime oraVegDatuma, int osztalyCsoportId) { var javasoltJelenletTanuloLista = new List(); if (!tanuloLista.Any()) { return javasoltJelenletTanuloLista; } var parhuzamosOranNaplozottTanuloIdList = EgyediOraLogic.ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdetDatuma, oraVegDatuma, new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h); var elozoOranHianyzottTanuloIdList = OraLogic.ListElozoOranHianyzottTanuloId(oraKezdetDatuma, osztalyCsoportId, teacherId, intezmenyId, intezmenyAzonosito, tanevId); var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = SystemSettingsLogic.IsMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled(intezmenyAzonosito, tanevId, teacherId, intezmenyId); var isMagantanuloOralatogatasAloliMentessegEnabled = SystemSettingsLogic.IsMagantanuloOralatogatasAloliMentessegEnabled(tantargyId, intezmenyAzonosito, tanevId, teacherId, intezmenyId); var felmentesek = FelmentesSubqueries.ListFelmentes(new FelmentesGetRequestCo { TanuloIds = tanuloLista.Select(t => t.Id), FelhasznaloId = teacherId, IntezmenyId = intezmenyId, IntezmenyAzonosito = intezmenyAzonosito, TanevId = tanevId, TantargyId = tantargyId }); foreach (var tanulo in tanuloLista) { var javasoltJelenletTemplateTipusSzuroLista = new List { new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Default) }; if (HasTanuloIgazolas(tanulo.Id, igazolasLista)) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Igazolas)); } if (elozoOranHianyzottTanuloIdList?.Contains(tanulo.Id) ?? false) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ElozoOranHianyzott)); } if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozottTanuloIdList.Contains(tanulo.Id)) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ParhuzamosOranNaplozott)); } if (felmentesek.ContainsKey(tanulo.Id) && TanuloLogic.CalculateIsNowFelmentett(felmentesek[tanulo.Id], oraKezdetDatuma, intezmenyId, intezmenyAzonosito, tanevId, FelmentesType.OralatogatasAlol)) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Felmentes)); } if (tanulo.TanugyiAdatok.IsSzakmaiGyakorlatonLevo) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.SzakmaiGyakorlat)); } if (tanulo.TanugyiAdatok.IsJogviszonySzunetelteto) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.JogviszonySzuneteltetes)); } if (TanuloLogic.CalculateIsNowMagantanulo(tanulo.IsMaganTanulo, tanulo.MaganTanulosagKezdetDatuma, tanulo.MaganTanulosagVegeDatuma, oraKezdetDatuma) && isMagantanuloOralatogatasAloliMentessegEnabled) { javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg)); } javasoltJelenletTanuloLista.Add(new JavasoltJelenletTanuloGetResponseCo { TanuloId = tanulo.Id, JavasoltJelenletTemplateTipusSzuroLista = javasoltJelenletTemplateTipusSzuroLista }); } return javasoltJelenletTanuloLista; } } } }