using System.Collections.Generic; using System.Linq; using Kreta.BusinessLogic.Helpers; using Kreta.Core.ConnectionType; using Kreta.Core.Logic; using Kreta.DataAccessManual.Util; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Naplo.Dao.V3.Csatolmany; using Kreta.Naplo.Domain.V3.Common; using Kreta.Naplo.Domain.V3.Csatolmany; using Kreta.Naplo.Domain.V3.Orarend; using Kreta.Naplo.Domain.V3.UniqueIdentifier; namespace Kreta.Naplo.BusinessLogic.V3.Csatolmany { internal static class CsatolmanySubqueries { internal static Dictionary> ListCsatolmanyok(DefaultConnectionParameters dcp, CsatolmanyListRequest request) { var result = new Dictionary>(new OrarendElemUid()); if (!request.OrarendElemek.Any()) { return result; } var oraFiles = new OraFileHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)) .GetOraFilesByDateRange(request.DatumTol, request.DatumIg, (int)OraFileTipusEnum.openboard).ToDaoList(); foreach (var orarendElem in request.OrarendElemek.Distinct(new OrarendElemSimplified())) { result.Add(new OrarendElemUid(orarendElem.Id, orarendElem.Tipus, orarendElem.Datum), oraFiles.Where(x => orarendElem.Datum == x.OraDatum && ((orarendElem.Tipus == CalendarOraTypeEnum.OrarendiOra && orarendElem.Id == x.OrarendiOraId) || (orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.Id == x.TanitasiOraId) || (orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.OrarendiOraId == x.OrarendiOraId) || (orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.OrarendiOraGroupId == x.OrarendiOraId))) .Select(x => new CsatolmanyResponse { Id = x.FileId, Nev = x.FileNev }).ToList()); } return result; } } }