kreta/Kreta.BusinessLogic/Classes/MobileApi/Naplo/V2/SubqueriesRepo/Post/FeltoltottFajlPostSubqueries.cs
2024-03-13 00:33:46 +01:00

75 lines
4 KiB
C#

using System;
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.OpenBoard;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Post
{
public static class FeltoltottFajlPostSubqueries
{
public static FeltoltottFajlResponseCo CreateFajlFeltoltes(IDalHandler h, IFileServiceHelper fileServiceHelper, DefaultConnectionParameters defaultConnectionParameters, FeltoltottFajlRequestCo request)
{
var response = new FeltoltottFajlResponseCo();
if (request.TanitasiOraId.HasValue && request.OrarendiOraId.HasValue)
{
response.Exception = new ValidationException("Hibás kérelem!");
return response;
}
try
{
IConnectionType connection = new DalHandlerConnectionType(new MobileConnectionType(defaultConnectionParameters.FelhasznaloId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId), h);
var openBoardHelper = new OpenBoardHelper(new DalHandlerConnectionType(new MobileConnectionType(defaultConnectionParameters.FelhasznaloId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId), h), fileServiceHelper);
var dktFileHelper = new DktFileHelper(new DalHandlerConnectionType(new MobileConnectionType(defaultConnectionParameters.FelhasznaloId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId), h), fileServiceHelper);
int feltoltottFajlokSzama = openBoardHelper.GetFeltoltottFajlokSzama(DateTime.Now, request.OrarendiOraId, request.TanitasiOraId);
int feltolthetoFajlokSzama = Constant.FeltolthetoFajlokMaxSzama - feltoltottFajlokSzama;
if (feltolthetoFajlokSzama < 1)
{
throw new ValidationException("Nem tölthető fel a fájl, mert elérte a maximális feltöltési limitet ehhez az órához!");
}
DateTime ido = DateTime.Now;
int sorszam = feltoltottFajlokSzama + 1;
string fileName = $"Kep_{sorszam}_{ido.ToString(Constant.DateTimeFormat)}";
string contentType = "image/jpeg";
var intezmenyGuid = new IntezmenyHelper(connection).GetIntezmenyiAdatok().IntezmenyGuid;
var path = $"OpenBoard/{intezmenyGuid}/{defaultConnectionParameters.TanevId}";
if (request.TanitasiOraId.HasValue)
{
path += $"/TanitasiOra/{request.TanitasiOraId.Value}";
}
else if (request.OrarendiOraId.HasValue)
{
path += $"/OrarendiOra/{request.OrarendiOraId.Value}";
}
else
{
throw new ValidationException("Nem tartozhat Órarendi órához és Tanítási órához is a kép! Csak az egyik legyen megadva!");
}
var fileId = dktFileHelper.UploadFile(string.Concat(fileName, ".jpeg"), Convert.FromBase64String(request.ContentAsBase64EncodedString.Replace("data:image/jpeg;base64,", "")), contentType, path);
var oraFileHelper = new OraFileHelper(connection);
oraFileHelper.InsertFileToOraFile(fileId, request.OrarendiOraId, request.TanitasiOraId, ido.Date, (int)OraFileTipusEnum.openboard, true);
response.FeltolthetoFajlokSzama = feltolthetoFajlokSzama - 1;
}
catch (ValidationException e)
{
response.Exception = e;
}
return response;
}
}
}