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 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(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()) { 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(), Telefonok = felhasznaloTelefonok.TryGetValue(new TelefonListResponse { FelhasznaloUid = new FelhasznaloUid(item.Id) }, out TelefonListResponse telefon) ? telefon.Telefonszamok : new List() })) { throw new BlException(BlExceptionType.DuplikaltKulcs); } } return response; } } }