296 lines
14 KiB
C#
296 lines
14 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Kreta.BusinessLogic.Caching;
|
|
using Kreta.BusinessLogic.HelperClasses;
|
|
using Kreta.BusinessLogic.Helpers;
|
|
using Kreta.Core;
|
|
using Kreta.Core.ConnectionType;
|
|
using Kreta.Core.Enum;
|
|
using Kreta.Core.Exceptions;
|
|
using Kreta.Core.FeatureToggle;
|
|
using Kreta.Core.Logic;
|
|
using Kreta.DataAccess.Interfaces;
|
|
using Kreta.DataAccessManual.Util;
|
|
using Kreta.Ellenorzo.BL.VN.Felhasznalo.Gondviselo;
|
|
using Kreta.Ellenorzo.BL.VN.Felhasznalo.Tanulo;
|
|
using Kreta.Ellenorzo.BL.VN.Intezmeny;
|
|
using Kreta.Ellenorzo.BL.VN.Intezmeny.Rendszermodul;
|
|
using Kreta.Ellenorzo.BL.VN.Intezmeny.TestreszabasBeallitasok;
|
|
using Kreta.Ellenorzo.Dao.VN.Email;
|
|
using Kreta.Ellenorzo.Dao.VN.Ertekeles;
|
|
using Kreta.Ellenorzo.Domain.VN.Common;
|
|
using Kreta.Ellenorzo.Domain.VN.Felhasznalo;
|
|
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Tanulo;
|
|
using Kreta.Ellenorzo.Domain.VN.Intezmeny;
|
|
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
|
|
using Kreta.Ellenorzo.Enums;
|
|
using Kreta.Enums;
|
|
using Kreta.Job.Tasks.Cache;
|
|
using Kreta.Resources;
|
|
using static Kreta.Ellenorzo.Domain.VN.Converter.ResponseModelConverter;
|
|
|
|
namespace Kreta.Ellenorzo.BL.VN.Felhasznalo
|
|
{
|
|
internal static class FelhasznaloSubqueries
|
|
{
|
|
internal static TanuloGetResponse GetTanuloAdatlap(DefaultConnectionParameters dcp)
|
|
{
|
|
var tanuloAdat = TanuloSubqueries.GetTanuloAdat(dcp);
|
|
var response = new TanuloGetResponse
|
|
{
|
|
Uid = new TanuloUid(dcp.TanuloId),
|
|
IdpUniqueId = tanuloAdat.IdpUniqueId,
|
|
TanuloAdat = tanuloAdat,
|
|
TanevId = dcp.TanevId,
|
|
Intezmeny = new IntezmenyResponse
|
|
{
|
|
IntezmenyAdatok = IntezmenySubqueries.GetSajatIntezmenyAdatok(dcp),
|
|
Rendszermodulok = RendszermodulSubqueries.ListRendszermodul(dcp),
|
|
TestreszabasBeallitasok = TestreszabasBeallitasokSubqueries.GetTestreszabasBeallitasok(dcp)
|
|
},
|
|
GondviseloLista = ModelToModel(GondviseloSubqueries.ListGondviseloForTanulo(dcp))
|
|
};
|
|
|
|
if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Gondviselo))
|
|
{
|
|
response.TanuloAdat.Bankszamla.IsReadOnly = !response.GondviseloLista.SingleOrDefault(x => x.Uid.Id == dcp.GondviseloId.Value)?.IsTorvenyesKepviselo ?? true;
|
|
}
|
|
|
|
dcp.DalHandler.FelhasznaloBelepes().UpdateLastLoginByUserId(dcp.FelhasznaloId, DateTime.Now, dcp.GondviseloId.HasValue);
|
|
|
|
return response;
|
|
}
|
|
|
|
internal static void SaveBankszamla(DefaultConnectionParameters dcp, BankszamlaRequest request)
|
|
{
|
|
if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Tanulo) || IsGondviseloTorvenyesKepviselo(dcp))
|
|
{
|
|
|
|
var validacioError = BankszamlaLogic.KitoltottsegValidacio(request.BankszamlaSzam, request.BankszamlaTulajdonosTipusId, request.BankszamlaTulajdonosNeve);
|
|
if (!string.IsNullOrWhiteSpace(validacioError))
|
|
{
|
|
throw new BlException(validacioError, BlExceptionType.ModelValidacio);
|
|
}
|
|
if (!BankszamlaLogic.IsBankAccountNumberValid(request.BankszamlaSzam))
|
|
{
|
|
throw new BlException(string.Format(TanuloResource.NemMegfeleloBankszamlaszam, request.BankszamlaSzam), BlExceptionType.ModelValidacio);
|
|
}
|
|
validacioError = BankszamlaLogic.CDVValidacio(request.BankszamlaSzam);
|
|
if (!string.IsNullOrWhiteSpace(validacioError))
|
|
{
|
|
throw new BlException(validacioError, BlExceptionType.ModelValidacio);
|
|
}
|
|
|
|
var bankszamlaCo = new BankszamlaCo
|
|
{
|
|
BankszamlaSzam = request.BankszamlaSzam,
|
|
BankszamlaTulajdonos = request.BankszamlaTulajdonosTipusId,
|
|
BankszamlaTulajdonosNeve = request.BankszamlaTulajdonosNeve,
|
|
SzamlavezetoBank = request.SzamlavezetoBank
|
|
};
|
|
|
|
new TanuloHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).SaveTanuloBankszamlaAdatok(dcp.TanuloId, dcp.GondviseloId, bankszamlaCo);
|
|
}
|
|
|
|
else
|
|
{
|
|
throw new BlException(BlExceptionType.NincsJogosultsag);
|
|
}
|
|
}
|
|
|
|
internal static void DeleteBankszamla(DefaultConnectionParameters dcp)
|
|
{
|
|
if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Tanulo) || IsGondviseloTorvenyesKepviselo(dcp))
|
|
{
|
|
new TanuloHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).SaveTanuloBankszamlaAdatok(dcp.TanuloId, dcp.GondviseloId, new BankszamlaCo());
|
|
}
|
|
|
|
else
|
|
{
|
|
throw new BlException(BlExceptionType.NincsJogosultsag);
|
|
}
|
|
}
|
|
|
|
internal static void SaveElerhetoseg(DefaultConnectionParameters dcp, ElerhetosegRequest request)
|
|
{
|
|
SaveEmail(dcp, request.EmailCim);
|
|
SaveTelefonszam(dcp, request.Telefonszam);
|
|
|
|
var tanuloAdatlapCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile<TanuloAdatlapCache>();
|
|
var cacheEnabledAndNotNull = FeatureContext.Instance.IsEnabled(Constants.FeatureName.MobileEllenorzoApiCache, dcp.IntezmenyAzonosito) && tanuloAdatlapCache != null;
|
|
if (cacheEnabledAndNotNull)
|
|
{
|
|
tanuloAdatlapCache.RemoveTanuloAdatlap(dcp.TanuloId, dcp.IntezmenyAzonosito);
|
|
}
|
|
}
|
|
|
|
internal static void SaveEmail(DefaultConnectionParameters dcp, string emailCim)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(emailCim))
|
|
{
|
|
var dal = dcp.DalHandler.Email();
|
|
var isUjEmail = false;
|
|
IEmail ujEmail;
|
|
var emailek = dal.GetFelhasznalokEmailCimei(new EmailRequestDao()
|
|
{
|
|
FelhasznaloIds = new List<int>()
|
|
{
|
|
dcp.TanuloId
|
|
},
|
|
IsPublic = null
|
|
});
|
|
if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Gondviselo))
|
|
{
|
|
emailek = emailek.Where(e => e.GondviseloId == dcp.GondviseloId).ToList();
|
|
}
|
|
else if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Tanulo))
|
|
{
|
|
emailek = emailek.Where(e => e.FelhasznaloId == dcp.TanuloId && e.GondviseloId == null).ToList();
|
|
}
|
|
var alapertelmezettEmail = emailek.FirstOrDefault(e => e.IsAlapertelmezett);
|
|
var duplikaltEmail = emailek.FirstOrDefault(e => e.Email == emailCim && e.Id != alapertelmezettEmail.Id);
|
|
if (duplikaltEmail != null)
|
|
{
|
|
var regiEmail = dal.Get(alapertelmezettEmail.Id);
|
|
regiEmail.Alapertelmezett = false;
|
|
dal.FullUpdate(regiEmail);
|
|
|
|
ujEmail = dal.Get(duplikaltEmail.Id);
|
|
ujEmail.Alapertelmezett = true;
|
|
ujEmail.IsMobilRogzitett = true;
|
|
dal.FullUpdate(ujEmail);
|
|
}
|
|
else
|
|
{
|
|
if (alapertelmezettEmail == null)
|
|
{
|
|
ujEmail = dal.Get();
|
|
isUjEmail = true;
|
|
}
|
|
else
|
|
{
|
|
ujEmail = dal.Get(alapertelmezettEmail.Id);
|
|
}
|
|
if (ujEmail.EmailCim != emailCim)
|
|
{
|
|
ujEmail.Alapertelmezett = true;
|
|
ujEmail.EmailCim = emailCim;
|
|
ujEmail.EmailTipusa = (int)EmailTipusEnum.Hivatalos;
|
|
ujEmail.GondviseloId = dcp.GondviseloId ?? ujEmail.GondviseloId;
|
|
ujEmail.FelhasznaloId = dcp.TanuloId;
|
|
ujEmail.IsMobilRogzitett = true;
|
|
if (isUjEmail)
|
|
{
|
|
ujEmail.IntezmenyId = dcp.IntezmenyId;
|
|
dal.Insert(ujEmail);
|
|
}
|
|
else
|
|
{
|
|
dal.FullUpdate(ujEmail);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
internal static void SaveTelefonszam(DefaultConnectionParameters dcp, string telefonszam)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(telefonszam))
|
|
{
|
|
var dal = dcp.DalHandler.Telefon();
|
|
var isUjTelefon = false;
|
|
ITelefon ujTelefon;
|
|
var telefonszamok = dal.ListTelefon(new List<int>() { dcp.TanuloId }, null);
|
|
if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Gondviselo))
|
|
{
|
|
telefonszamok = telefonszamok.Where(e => e.GondviseloId == dcp.GondviseloId).ToList();
|
|
}
|
|
else if (dcp.JogosultsagLista.Contains(FelhasznaloSzerepkor.Tanulo))
|
|
{
|
|
telefonszamok = telefonszamok.Where(e => e.FelhasznaloId == dcp.TanuloId && e.GondviseloId == null).ToList();
|
|
}
|
|
var alapertelmezettTelefon = telefonszamok.FirstOrDefault(e => e.IsAlapertelmezett);
|
|
var duplikaltTelefon = telefonszamok.FirstOrDefault(e => e.Telefonszam == telefonszam && e.Id != alapertelmezettTelefon.Id);
|
|
|
|
if (duplikaltTelefon != null)
|
|
{
|
|
var regiTelefon = dal.Get(alapertelmezettTelefon.Id);
|
|
regiTelefon.Alapertelmezett = false;
|
|
dal.FullUpdate(regiTelefon);
|
|
|
|
ujTelefon = dal.Get(duplikaltTelefon.Id);
|
|
ujTelefon.Alapertelmezett = true;
|
|
ujTelefon.IsMobilRogzitett = true;
|
|
dal.FullUpdate(ujTelefon);
|
|
}
|
|
else
|
|
{
|
|
if (alapertelmezettTelefon == null)
|
|
{
|
|
ujTelefon = dal.Get();
|
|
isUjTelefon = true;
|
|
}
|
|
else
|
|
{
|
|
ujTelefon = dal.Get(alapertelmezettTelefon.Id);
|
|
}
|
|
if (ujTelefon.TelefonSzam != telefonszam)
|
|
{
|
|
ujTelefon.Alapertelmezett = true;
|
|
ujTelefon.TelefonSzam = telefonszam;
|
|
ujTelefon.TelefonTipusa = (int)TelefonTipusEnum.Mobil;
|
|
ujTelefon.GondviseloId = dcp.GondviseloId ?? ujTelefon.GondviseloId;
|
|
ujTelefon.FelhasznaloId = dcp.TanuloId;
|
|
ujTelefon.IsMobilRogzitett = true;
|
|
if (isUjTelefon)
|
|
{
|
|
ujTelefon.IntezmenyId = dcp.IntezmenyId;
|
|
dal.Insert(ujTelefon);
|
|
}
|
|
else
|
|
{
|
|
dal.FullUpdate(ujTelefon);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
internal static bool IsGondviseloTorvenyesKepviselo(DefaultConnectionParameters dcp)
|
|
=> dcp.DalHandler.Gondviselo().Get(dcp.GondviseloId.Value).IsTorvenyesKepviselo;
|
|
|
|
internal static NapiErtesitesOsszefoglaloResponse GetNapiErtesitesOsszefoglalo(DefaultConnectionParameters dcp)
|
|
{
|
|
var napiErtesitesOsszefoglalo = dcp.DalHandler.Felhasznalo().GetNapiErtesitesOsszefoglalo(dcp.TanuloId, null).ToDaoList<NapiErtesitesOsszefoglaloDao>();
|
|
|
|
return new NapiErtesitesOsszefoglaloResponse
|
|
{
|
|
Ertekelesek = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "Ertekelesek").ErtesitesekSzama,
|
|
Mulasztasok = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "Mulasztasok").ErtesitesekSzama,
|
|
Feljegyzesek = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "Feljegyzesek").ErtesitesekSzama,
|
|
Bejelentettszamonkeresek = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "BejelentettSzamonkeresek").ErtesitesekSzama,
|
|
Hazifeladatok = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "HaziFeladatok").ErtesitesekSzama,
|
|
Uzenetek = napiErtesitesOsszefoglalo.First(e => e.ErtesitesTipusa == "Uzenetek").ErtesitesekSzama,
|
|
Orarendvaltozasok = GetOrarendValtozasok(dcp)
|
|
};
|
|
}
|
|
|
|
private static int GetOrarendValtozasok(DefaultConnectionParameters dcp)
|
|
{
|
|
var orarendvaltozasokSzama = 0;
|
|
var orarendValtozasCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile<OrarendValtozasCache>();
|
|
var cacheEnabledAndNotNull = FeatureContext.Instance.IsEnabled(Constants.FeatureName.MobileEllenorzoApiCache, dcp.IntezmenyAzonosito) && orarendValtozasCache != null;
|
|
if (cacheEnabledAndNotNull)
|
|
{
|
|
var orarendValtozasok = orarendValtozasCache.GetOrarendValtozasok(dcp.IntezmenyAzonosito);
|
|
if (orarendValtozasok.Any())
|
|
{
|
|
orarendvaltozasokSzama = orarendValtozasok.Where(e => e.IntezmenyAzonosito == dcp.IntezmenyAzonosito && e.UserId == dcp.TanuloId).Count();
|
|
}
|
|
}
|
|
|
|
return orarendvaltozasokSzama;
|
|
}
|
|
}
|
|
}
|