This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,91 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Ertekeles;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.Framework.Entities;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Post
{
public static class ErtekelesPostSubqueries
{
public static List<ErtekelesResponseCo> CreateOsztalyCsoportErtekeles(int teacherId, DefaultConnectionParameters defaultConnectionParameters, List<OsztalyCsoportErtekelesRequestCo> request)
{
var response = new List<ErtekelesResponseCo>();
if (IsRequestContainsDuplicatedItem(request))
{
response.Add(new ErtekelesResponseCo()
{
Exception = new ValidationException("A kérés többször tartalmazza ugyanazt az értékelést!")
});
return response;
}
var helper = new TanuloErtekelesHelper(new MobileConnectionType(teacherId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId));
foreach (var osztalyCsoportErtekeles in request)
{
try
{
helper.SaveTanuloErtekelesListMobilV2(teacherId, osztalyCsoportErtekeles);
}
catch (ValidationException execption)
{
response.Add(new ErtekelesResponseCo()
{
Exception = execption
});
}
catch (EntityNotFoundException)
{
response.Add(new ErtekelesResponseCo()
{
Exception = CreateMobileExeption(osztalyCsoportErtekeles.TanuloLista, ErrorResource.AzElemNemTalalhatoVagyToroltek)
});
}
catch (Exception)
{
response.Add(new ErtekelesResponseCo()
{
Exception = CreateMobileExeption(osztalyCsoportErtekeles.TanuloLista, ErrorResource.Hiba)
});
}
}
return response;
}
private static ValidationException CreateMobileExeption(List<TanuloForOsztalyCsoportErtekelesRequestCo> tanuloList, string message)
{
var ex = new ValidationException(ValidationErrorType.Undefined, TanuloErtekelesResource.HibasErtekeles);
foreach (var item in tanuloList)
{
ex.AddValidationItem(item.MobilId.ToString(), message);
}
return ex;
}
private static bool IsRequestContainsDuplicatedItem(List<OsztalyCsoportErtekelesRequestCo> request)
{
var requestUniqueItems = new List<(DateTime datum, int tantargyId, string tema, int tanuloErtekelesHashCode)>();
foreach (var item in request)
{
int tanuloErtekelesHashCode = item.TanuloLista.Select(x => $"{x.TanuloId} + {x.Ertekeles.OsztalyzatTipus} + {x.Ertekeles.Szazalek} + {x.Ertekeles.Szoveg}").Aggregate((a, b) => a + b).GetHashCode();
var requestItem = (item.Datum, item.TantargyId, item.Tema, tanuloErtekelesHashCode);
if (requestUniqueItems.Contains(requestItem))
{
return true;
}
requestUniqueItems.Add(requestItem);
}
return false;
}
}
}

View file

@ -0,0 +1,75 @@
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;
}
}
}

View file

@ -0,0 +1,96 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Post.Naplozas;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Naplozas;
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
using Kreta.BusinessLogic.Validation;
using Kreta.Client.CoreApi;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.Framework.Entities;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Post
{
public static class OrarendPostSubqueries
{
public static List<OraNaplozasResponseCo> CreateOraNaplozas(int teacherId, int intezmenyId, string intezmenyAzonosito, int tanevId, List<OraNaplozasRequestCo> request, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
var response = new List<OraNaplozasResponseCo>();
if (request.Count < 1)
{
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.NincsNaplozandoOra);
}
var naploValidacioParameters = new NaploValidacioParameters(from: request.Min(x => x.Datum), to: request.Max(x => x.Datum).AddDays(1), new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), felhasznaloSzerepkor: null);
var naploValidator = new NaploValidacio(naploValidacioParameters);
CheckAzonosElem(request);
return OraNaplozas();
List<OraNaplozasResponseCo> OraNaplozas()
{
foreach (var naplozandoOra in request)
{
try
{
var blValidator = new BlValidator(naplozandoOra);
if (!blValidator.IsValid)
{
throw blValidator.ConvertToValidationException();
}
var logicCo = new NaplozasMobilCo();
naplozandoOra.ConvertTo(logicCo);
var naplozasLogic = new NaplozasLogic(naploValidator, logicCo);
naplozasLogic.SaveNaplozas(fileServiceHelper, coreApiClient);
response.Add(new OraNaplozasResponseCo()
{
Exception = null,
MobilId = naplozandoOra.MobilId
});
}
catch (ValidationException execption)
{
response.Add(new OraNaplozasResponseCo()
{
Exception = execption,
MobilId = naplozandoOra.MobilId
});
}
catch (EntityNotFoundException)
{
response.Add(new OraNaplozasResponseCo()
{
Exception = new ValidationException(ValidationErrorType.Undefined, ErrorResource.NaplozasSikertelenAzOraMarNemLetezikAKivalasztottNapon),
MobilId = naplozandoOra.MobilId
});
}
}
return response;
}
}
private static void CheckAzonosElem(List<OraNaplozasRequestCo> request)
{
var tupleList = new List<(int OraRendiOraId, DateTime Date)>();
foreach (var naplozandoOra in request)
{
if (tupleList.Any(x => x.OraRendiOraId == naplozandoOra.OrarendiOraId && x.Date == naplozandoOra.Datum))
{
throw new ValidationException(ValidationErrorType.Undefined, ErrorResource.TobbszorosNaplozas);
}
if (naplozandoOra.OrarendiOraId.HasValue)
{
tupleList.Add((OraRendiOraId: naplozandoOra.OrarendiOraId.Value, Date: naplozandoOra.Datum));
}
}
}
}
}