using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Caching; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.Helpers; using Kreta.Core; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Core.FeatureToggle; using Kreta.Core.Logic; using Kreta.Ellenorzo.Dao.VN.OsztalyCsoport.Osztaly; using Kreta.Ellenorzo.Domain.VN.Common; using Kreta.Ellenorzo.Domain.VN.Felhasznalo; using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Tanulo; using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport.Osztaly; using static Kreta.Ellenorzo.BL.VN.Logic.TanuloLogic; namespace Kreta.Ellenorzo.BL.VN.Felhasznalo.Tanulo { internal static class TanuloSubqueries { private static TanuloAdatlapCache TanuloAdatlapCache => KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile(); internal static TanuloAdatResponse GetTanuloAdat(DefaultConnectionParameters dcp) { return FeatureContext.Instance.IsEnabled(featureName: Constants.FeatureName.MobileEllenorzoApiCache, dcp.IntezmenyAzonosito) && TanuloAdatlapCache != null ? TanuloAdatlapCache.GetOrAddTanuloAdatlap(dcp.TanuloId, dcp.IntezmenyAzonosito, () => TanuloAdat(dcp)) : TanuloAdat(dcp); } private static TanuloAdatResponse TanuloAdat(DefaultConnectionParameters dcp) { DataSet tanuloAdatokDataSet = dcp.DalHandler.Tanulo().GetTanuloAdatok(dcp.StudentIdpUniqueId); return tanuloAdatokDataSet.Tables[0].Rows.Count != 0 ? tanuloAdatokDataSet.Tables[0].Rows[0].Field("TanuloId") == dcp.TanuloId ? tanuloAdatokDataSet.Tables[0].Rows.Cast().Select(tanuloAdatDataRow => new TanuloAdatResponse { Nev = tanuloAdatDataRow.Field("NyomtatasiNev"), SzuletesiNev = tanuloAdatDataRow.Field("SzuletesiNev"), SzuletesiDatum = tanuloAdatDataRow.Field("SzuletesiDatum"), SzuletesiHely = tanuloAdatDataRow.Field("SzuletesiHely"), Telefonszam = tanuloAdatDataRow.Field("AlapertelmezettTelefon"), EmailCim = tanuloAdatDataRow.Field("AlapertelmezettEmail"), Cimek = tanuloAdatokDataSet.Tables[1].Rows.Cast().Select(tanuloCimDataRow => $"{tanuloCimDataRow.Field("Varos")} ({tanuloCimDataRow.Field("Iranyitoszam")}), {tanuloCimDataRow.Field("Kozterulet")} {tanuloCimDataRow.Field("KozteruletJellegeNev")} {tanuloCimDataRow.Field("HazSzam")}{IsNullOrValue(tanuloCimDataRow.Field("Epulet"))}{IsNullOrValue(tanuloCimDataRow.Field("LepcsoHaz"))}{IsNullOrValue(tanuloCimDataRow.Field("Emelet"))}{IsNullOrValue(tanuloCimDataRow.Field("Ajto"))}" ).ToList(), AnyjaNeve = tanuloAdatDataRow.Field("AnyjaNeve"), IdpUniqueId = tanuloAdatDataRow.Field("IdpEgyediAzonosito"), Bankszamla = new BankszamlaResponse { BankszamlaSzam = TanuloHelper.ConvertSzamlaszam(tanuloAdatDataRow.Field("BankszamlaSzam")), BankszamlaTulajdonosTipusId = tanuloAdatDataRow.Field("BankszamlaTulajdonosTipusId"), BankszamlaTulajdonosNeve = tanuloAdatDataRow.Field("BankszamlaTulajdonosNeve") }, IsEszkozKiosztva = SDAConvert.ToBooleanFromTF(tanuloAdatDataRow["IsEszkozKiosztva"]) }).Single() : throw new BlException(BlExceptionType.IntezmenyMarTanevetValtott) : throw new BlException(BlExceptionType.NemLetezoEntitas); } internal static List ListOsztalyokAktivTanuloIds(DefaultConnectionParameters dcp, OsztalyTanuloiListRequest request) { return dcp.DalHandler.TanuloCsoport().OsztalyTanuloi(dcp.TanevId, request.OsztalyIds).ToDaoList().Select(t => t.Id).ToList(); } } }