using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Http; using System.Net.Http.Headers; using Kreta.BusinessLogic.Helpers; using Kreta.BusinessLogic.Interfaces; using Kreta.Core.ConnectionType; using Kreta.Core.Enum; using Kreta.Core.Exceptions; using Kreta.Core.Logic; using Kreta.DataAccessManual.Util; using Kreta.Ellenorzo.Dao.VN.OraFile; using Kreta.Ellenorzo.Domain.VN.Common; using Kreta.Ellenorzo.Domain.VN.Csatolmany; using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier; using Kreta.Enums; using Kreta.Enums.ManualEnums; namespace Kreta.Ellenorzo.BL.VN.Ora { internal static class CsatolmanySubqueries { internal static HttpResponseMessage GetCsatolmany(DefaultConnectionParameters dcp, IFileServiceHelper fileServiceHelper, CsatolmanyUid uid) { var response = new HttpResponseMessage(HttpStatusCode.OK); var fileHelper = new DktFileHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), fileServiceHelper); var (jogosult, feltoltottFajl) = fileHelper.GetFile(dcp.DalHandler, dcp.TanuloId, uid.Id); if (!jogosult) { throw new BlException(BlExceptionType.NincsJogosultsag); } var memoryStream = new MemoryStream(fileHelper.GetCsatolmanyData(feltoltottFajl).Data) { Position = 0 }; response.Content = new StreamContent(memoryStream); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = feltoltottFajl.FileNev + "." + feltoltottFajl.Extension }; response.Content.Headers.Add("Content-Type", "application/octet-stream"); return response; } internal static Dictionary> ListCsatolmanyok(DefaultConnectionParameters dcp, CsatolmanyListRequest request) { var result = new Dictionary>(new OrarendElemUid()); if (!request.OrarendElemUids.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 orarendElemUid in request.OrarendElemUids.Distinct(new OrarendElemUid())) { result.Add(orarendElemUid, oraFiles.Where(x => orarendElemUid.Datum == x.OraDatum && ((orarendElemUid.Tipus == CalendarOraTypeEnum.OrarendiOra && orarendElemUid.Id == x.OrarendiOraId) || (orarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElemUid.Id == x.TanitasiOraId) || (orarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElemUid.OrarendiOraId == x.OrarendiOraId) || (orarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElemUid.OrarendiOraGroupId == x.OrarendiOraId))) .Select(x => new CsatolmanySimplifiedResponse { Uid = new CsatolmanyUid(x.FileId), Nev = x.FileNev }).ToList()); } return result; } } }