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

49 lines
2.3 KiB
C#

using System.Collections.Generic;
using System.Linq;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Ellenorzo.BL.VN.Email;
using Kreta.Ellenorzo.BL.VN.Logic;
using Kreta.Ellenorzo.BL.VN.Telefon;
using Kreta.Ellenorzo.Dao.VN.Felhasznalo.Alkalmazott;
using Kreta.Ellenorzo.Domain.VN.Common;
using Kreta.Ellenorzo.Domain.VN.Email;
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Alkalmazott;
using Kreta.Ellenorzo.Domain.VN.Telefon;
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
namespace Kreta.Ellenorzo.BL.VN.Felhasznalo.Alkalmazott
{
internal static class AlkalmazottSubqueries
{
internal static HashSet<AlkalmazottListResponse> ListAlkalmazott(DefaultConnectionParameters dcp, AlkalmazottListRequest request)
{
if (JogosultsagLogic.ListHozzaferhetoAlkalmazottIds(dcp).Intersect(request.FelhasznaloIds).ToList().Count != request.FelhasznaloIds.Count ||
!request.Email.IsPublic.Value || !request.Telefon.IsPublic.Value)
{
throw new BlException(BlExceptionType.NemLetezoEntitas);
}
var response = new HashSet<AlkalmazottListResponse>(new AlkalmazottListResponse());
var felhasznaloEmailek = EmailSubqueries.ListEmail(dcp.DalHandler, request.Email);
var felhasznaloTelefonok = TelefonSubqueries.ListTelefon(dcp.DalHandler, request.Telefon);
foreach (var item in dcp.DalHandler.Alkalmazott().GetAlkalmazottak(dcp.TanevId, request.FelhasznaloIds).ToDaoList<AlkalmazottResponseDao>())
{
if (!response.Add(new AlkalmazottListResponse
{
Uid = new AlkalmazottUid(item.Id),
Nev = item.Nev,
Emailek = felhasznaloEmailek.TryGetValue(new EmailListResponse { FelhasznaloUid = new FelhasznaloUid(item.Id) }, out EmailListResponse email) ? email.Emailek : new List<EmailResponse>(),
Telefonok = felhasznaloTelefonok.TryGetValue(new TelefonListResponse { FelhasznaloUid = new FelhasznaloUid(item.Id) }, out TelefonListResponse telefon) ? telefon.Telefonszamok : new List<TelefonResponse>()
}))
{
throw new BlException(BlExceptionType.DuplikaltKulcs);
}
}
return response;
}
}
}