kreta/Kreta.WebApi/Ellenorzo/Kreta.Ellenorzo.BL/VN/Felhasznalo/Tanulo/TanuloSubqueries.cs
2024-03-13 00:33:46 +01:00

70 lines
4.3 KiB
C#

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<TanuloAdatlapCache>();
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<int>("TanuloId") == dcp.TanuloId
? tanuloAdatokDataSet.Tables[0].Rows.Cast<DataRow>().Select(tanuloAdatDataRow =>
new TanuloAdatResponse
{
Nev = tanuloAdatDataRow.Field<string>("NyomtatasiNev"),
SzuletesiNev = tanuloAdatDataRow.Field<string>("SzuletesiNev"),
SzuletesiDatum = tanuloAdatDataRow.Field<DateTime>("SzuletesiDatum"),
SzuletesiHely = tanuloAdatDataRow.Field<string>("SzuletesiHely"),
Telefonszam = tanuloAdatDataRow.Field<string>("AlapertelmezettTelefon"),
EmailCim = tanuloAdatDataRow.Field<string>("AlapertelmezettEmail"),
Cimek = tanuloAdatokDataSet.Tables[1].Rows.Cast<DataRow>().Select(tanuloCimDataRow =>
$"{tanuloCimDataRow.Field<string>("Varos")} ({tanuloCimDataRow.Field<string>("Iranyitoszam")}), {tanuloCimDataRow.Field<string>("Kozterulet")} {tanuloCimDataRow.Field<string>("KozteruletJellegeNev")} {tanuloCimDataRow.Field<string>("HazSzam")}{IsNullOrValue(tanuloCimDataRow.Field<string>("Epulet"))}{IsNullOrValue(tanuloCimDataRow.Field<string>("LepcsoHaz"))}{IsNullOrValue(tanuloCimDataRow.Field<string>("Emelet"))}{IsNullOrValue(tanuloCimDataRow.Field<string>("Ajto"))}"
).ToList(),
AnyjaNeve = tanuloAdatDataRow.Field<string>("AnyjaNeve"),
IdpUniqueId = tanuloAdatDataRow.Field<Guid>("IdpEgyediAzonosito"),
Bankszamla = new BankszamlaResponse
{
BankszamlaSzam = TanuloHelper.ConvertSzamlaszam(tanuloAdatDataRow.Field<string>("BankszamlaSzam")),
BankszamlaTulajdonosTipusId = tanuloAdatDataRow.Field<int?>("BankszamlaTulajdonosTipusId"),
BankszamlaTulajdonosNeve = tanuloAdatDataRow.Field<string>("BankszamlaTulajdonosNeve")
},
IsEszkozKiosztva = SDAConvert.ToBooleanFromTF(tanuloAdatDataRow["IsEszkozKiosztva"])
}).Single()
: throw new BlException(BlExceptionType.IntezmenyMarTanevetValtott)
: throw new BlException(BlExceptionType.NemLetezoEntitas);
}
internal static List<int> ListOsztalyokAktivTanuloIds(DefaultConnectionParameters dcp, OsztalyTanuloiListRequest request)
{
return dcp.DalHandler.TanuloCsoport().OsztalyTanuloi(dcp.TanevId, request.OsztalyIds).ToDaoList<OsztalyTanuloResponseDao>().Select(t => t.Id).ToList();
}
}
}