kreta/Kreta.WebApi/Ellenorzo/Kreta.Ellenorzo.BL/VN/Csatolmany/CsatolmanySubqueries.cs
2024-03-13 00:33:46 +01:00

74 lines
3.9 KiB
C#

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<OrarendElemUid, List<CsatolmanySimplifiedResponse>> ListCsatolmanyok(DefaultConnectionParameters dcp, CsatolmanyListRequest request)
{
var result = new Dictionary<OrarendElemUid, List<CsatolmanySimplifiedResponse>>(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<OraFileResponseDao>();
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;
}
}
}