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,127 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Felmentes;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.EgyediOra.JavasoltJelenlet;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo
{
public static class EgyediOraSubqueries
{
/// <summary>
/// Returns the filters to be executory from the template. The order of filters does not matter.
/// </summary>
public static List<JavasoltJelenletGetResponseCo> ListJavasoltJelenlet(int teacherId, string intezmenyAzonosito, int tanevId, IDalHandler h, JavasoltJelenletGetRequestCo request, Enums.OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum, int intezmenyId)
{
var response = new List<JavasoltJelenletGetResponseCo>();
foreach (var egyediOraKey in request.Key)
{
var osztalyTanuloi = OraSubqueries.GetOsztalyTanuloi(teacherId, new OsztalyTanuloiRequestCo() { OsztalyCsoportId = egyediOraKey.OsztalyCsoportId, OraShortDatuma = egyediOraKey.OraKezdetDatuma }, intezmenyAzonosito, intezmenyId, tanevId);
var igazolasLista = h.IgazolasDal().GetIgazolasokListajaGrid(
new IgazolasokListajaSearchPCO
{
OsztalyCsoportSearch = egyediOraKey.OsztalyCsoportId,
IgazolasDatuma = egyediOraKey.OraKezdetDatuma
},
oktatasNevelesKategoriaEnum).Tables[0];
response.Add(new JavasoltJelenletGetResponseCo
{
TantargyId = egyediOraKey.TantargyId,
OsztalyCsoportId = egyediOraKey.OsztalyCsoportId,
OraKezdetDatuma = egyediOraKey.OraKezdetDatuma,
TanuloLista = GetTanuloListaWithSzuroLista(osztalyTanuloi.TanuloLista, igazolasLista, egyediOraKey.TantargyId, egyediOraKey.OraKezdetDatuma, egyediOraKey.OraVegDatuma, egyediOraKey.OsztalyCsoportId)
});
}
return response;
bool HasTanuloIgazolas(int tanuloId, DataTable igazolasLista) => igazolasLista.AsEnumerable().Any(x => x.Field<int>("TanuloId") == tanuloId);
List<JavasoltJelenletTanuloGetResponseCo> GetTanuloListaWithSzuroLista(List<TanuloResponseCo> tanuloLista, DataTable igazolasLista, int tantargyId, DateTime oraKezdetDatuma, DateTime oraVegDatuma, int osztalyCsoportId)
{
var javasoltJelenletTanuloLista = new List<JavasoltJelenletTanuloGetResponseCo>();
if (!tanuloLista.Any())
{
return javasoltJelenletTanuloLista;
}
var parhuzamosOranNaplozottTanuloIdList = EgyediOraLogic.ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdetDatuma, oraVegDatuma, new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h);
var elozoOranHianyzottTanuloIdList = OraLogic.ListElozoOranHianyzottTanuloId(oraKezdetDatuma, osztalyCsoportId, teacherId, intezmenyId, intezmenyAzonosito, tanevId);
var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = SystemSettingsLogic.IsMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled(intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var isMagantanuloOralatogatasAloliMentessegEnabled = SystemSettingsLogic.IsMagantanuloOralatogatasAloliMentessegEnabled(tantargyId, intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var felmentesek = FelmentesSubqueries.ListFelmentes(new FelmentesGetRequestCo
{
TanuloIds = tanuloLista.Select(t => t.Id),
FelhasznaloId = teacherId,
IntezmenyId = intezmenyId,
IntezmenyAzonosito = intezmenyAzonosito,
TanevId = tanevId,
TantargyId = tantargyId
});
foreach (var tanulo in tanuloLista)
{
var javasoltJelenletTemplateTipusSzuroLista = new List<IJavasoltJelenletSzuroGetResponseCo>
{
new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Default)
};
if (HasTanuloIgazolas(tanulo.Id, igazolasLista))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Igazolas));
}
if (elozoOranHianyzottTanuloIdList?.Contains(tanulo.Id) ?? false)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ElozoOranHianyzott));
}
if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozottTanuloIdList.Contains(tanulo.Id))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ParhuzamosOranNaplozott));
}
if (felmentesek.ContainsKey(tanulo.Id) && TanuloLogic.CalculateIsNowFelmentett(felmentesek[tanulo.Id], oraKezdetDatuma, intezmenyId, intezmenyAzonosito, tanevId, FelmentesType.OralatogatasAlol))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Felmentes));
}
if (tanulo.TanugyiAdatok.IsSzakmaiGyakorlatonLevo)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.SzakmaiGyakorlat));
}
if (tanulo.TanugyiAdatok.IsJogviszonySzunetelteto)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.JogviszonySzuneteltetes));
}
if (TanuloLogic.CalculateIsNowMagantanulo(tanulo.IsMaganTanulo, tanulo.MaganTanulosagKezdetDatuma, tanulo.MaganTanulosagVegeDatuma, oraKezdetDatuma) && isMagantanuloOralatogatasAloliMentessegEnabled)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg));
}
javasoltJelenletTanuloLista.Add(new JavasoltJelenletTanuloGetResponseCo
{
TanuloId = tanulo.Id,
JavasoltJelenletTemplateTipusSzuroLista = javasoltJelenletTemplateTipusSzuroLista
});
}
return javasoltJelenletTanuloLista;
}
}
}
}

View file

@ -0,0 +1,60 @@
using System;
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Felmentes;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core;
using Kreta.Core.ConnectionType;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo
{
public static class FelmentesSubqueries
{
public static Dictionary<int, List<FelmentesGetResponseCo>> ListFelmentes(FelmentesGetRequestCo request)
{
var result = new Dictionary<int, List<FelmentesGetResponseCo>>();
foreach (DataRow tanuloFelmentes in new TanuloHelper(new MobileConnectionType(request.FelhasznaloId, request.IntezmenyId, request.IntezmenyAzonosito, request.TanevId)).GetTanulokFelmentesei(request.TanuloIds, tantargyId: request.TantargyId).Tables[0].Rows)
{
if (request.TantargyId.IsEntityId() && tanuloFelmentes.Field<int>("TantargyId") == request.TantargyId)
{
if (result.ContainsKey(tanuloFelmentes.Field<int>("TanuloId")))
{
result[tanuloFelmentes.Field<int>("TanuloId")].Add(new FelmentesGetResponseCo
{
Id = tanuloFelmentes.Field<int>("ID"),
TantargyId = tanuloFelmentes.Field<int>("TantargyId"),
TantargyNev = tanuloFelmentes.Field<string>("TantargyNev"),
IsErtekelesAlolFelmentett = (bool)tanuloFelmentes["ErtekelesMentesites_BOOL"],
IsOralatogatasAlolFelmentett = (bool)tanuloFelmentes["OraMentesites_BOOL"],
FelmentesOkSzovege = tanuloFelmentes.Field<string>("FelmentesOka"),
KezdetDatuma = tanuloFelmentes.Field<DateTime?>("Kezdete"),
VegDatuma = tanuloFelmentes.Field<DateTime?>("Vege"),
IsSzovegesenErtekelheto = (bool)tanuloFelmentes["SzovegesenErtekelheto_BOOL"]
});
}
else
{
result.Add(tanuloFelmentes.Field<int>("TanuloId"), new List<FelmentesGetResponseCo>()
{
new FelmentesGetResponseCo
{
Id = tanuloFelmentes.Field<int>("ID"),
TantargyId = tanuloFelmentes.Field<int>("TantargyId"),
TantargyNev = tanuloFelmentes.Field<string>("TantargyNev"),
IsErtekelesAlolFelmentett = (bool)tanuloFelmentes["ErtekelesMentesites_BOOL"],
IsOralatogatasAlolFelmentett = (bool)tanuloFelmentes["OraMentesites_BOOL"],
FelmentesOkSzovege = tanuloFelmentes.Field<string>("FelmentesOka"),
KezdetDatuma = tanuloFelmentes.Field<DateTime?>("Kezdete"),
VegDatuma = tanuloFelmentes.Field<DateTime?>("Vege"),
IsSzovegesenErtekelheto = (bool)tanuloFelmentes["SzovegesenErtekelheto_BOOL"]
}
});
}
}
}
return result;
}
}
}

View file

@ -0,0 +1,46 @@
using System;
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.OpenBoard;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
public static class FeltolthetoFajlokSzamaGetSubqueries
{
public static FeltolthetoFajlokSzamaResponseCo GetFeltolthetoFajlokSzama(DefaultConnectionParameters defaultConnectionParameters, FeltolthetoFajlokSzamaRequestCo request)
{
var response = new FeltolthetoFajlokSzamaResponseCo();
if (request.TanitasiOraId.HasValue && request.OrarendiOraId.HasValue)
{
response.Exception = new ValidationException("Hibás kérelem!");
return response;
}
try
{
var openBoardHelper = new OpenBoardHelper(new MobileConnectionType(defaultConnectionParameters.FelhasznaloId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId));
int feltoltottFajlokSzama = openBoardHelper.GetFeltoltottFajlokSzama(DateTime.Now, request.OrarendiOraId, request.TanitasiOraId);
int feltolthetoFajlokSzama = Constant.FeltolthetoFajlokMaxSzama - feltoltottFajlokSzama;
if (feltolthetoFajlokSzama < 1)
{
response.FeltolthetoFajlokSzama = 0;
}
else
{
response.FeltolthetoFajlokSzama = feltolthetoFajlokSzama;
}
}
catch (ValidationException e)
{
response.Exception = e;
}
return response;
}
}
}

View file

@ -0,0 +1,45 @@
using System.Collections.Generic;
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanar;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Framework.Util;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
public static class IskolaorGetSubqueries
{
public static IConnectionType ConnectionType;
public static List<IskolaorResponseCo> Iskolaor(int tanarId, DefaultConnectionParameters defaultConnectionParameters)
{
ConnectionType = new MobileConnectionType(tanarId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId);
var iskolaorAlkalmazottakList = new AlkalmazottHelper(ConnectionType).GetIskolaor();
var response = new List<IskolaorResponseCo>();
if (iskolaorAlkalmazottakList.Count > 0)
{
foreach (var iskolaor in iskolaorAlkalmazottakList)
{
var iskolaorResponseCo = new IskolaorResponseCo
{
Id = iskolaor.Id,
Nev = iskolaor.Nev,
FeladatEllatasiHelyId = iskolaor.FeladatEllatasiHelyId,
FeladatEllatasiHely = iskolaor.MukodesiHelyNeve + " - " + iskolaor.OktatasiNevelesiFeladatTipusId.GetItemNameFromCache(defaultConnectionParameters.TanevId, defaultConnectionParameters.IntezmenyAzonosito),
EmailCim = iskolaor.AlapertelmezettEmailCim,
Telefonszam = iskolaor.AlapertelmezettTelefonszam,
IdpEgyediAzonosito = iskolaor.IdpEgyediAzonosito.ToString(),
IntezmenyAzonosito = defaultConnectionParameters.IntezmenyAzonosito
};
response.Add(iskolaorResponseCo);
}
}
return response;
}
}
}

View file

@ -0,0 +1,93 @@
using System.Collections.Generic;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Orarend;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.Util;
using Kreta.Enums.ManualEnums;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
public static class OrarendGetSubqueries
{
public static ResponseWrapperCo<List<OraGetResponseCo>> OraLista(int teacherId, IDalHandler h, int intezmenyId, int tanevId, OraGetRequestCo request, string intezmenyAzonosito)
{
var returnObject = new ResponseWrapperCo<List<OraGetResponseCo>>(request.Hash);
//if (returnObject.IsDatabaseHashOk) return returnObject;
var oraCoList = new List<OraGetResponseCo>();
var eventList = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h))
.GetOrarendElemekMobilNaplo(request.Datum, request.Datum.AddDays(1), teacherId);
foreach (var tanarOra in eventList)
{
if (tanarOra.allDay)
continue; //Különleges napok átugrása
var oraResponseCo = new OraGetResponseCo
{
OrarendiOraId = tanarOra.oraType == CalendarOraTypeEnum.OrarendiOra || tanarOra.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas ? tanarOra.id : (int?)null,
TanitasiOraId = tanarOra.oraType != CalendarOraTypeEnum.OrarendiOra && tanarOra.oraType != CalendarOraTypeEnum.TanoranKivuliFoglalkozas ? tanarOra.id : (int?)null,
Allapot = tanarOra.OraAllapota,
Kezdete = tanarOra.start.Value,
Vege = tanarOra.end.Value,
Oraszam = tanarOra.hanyadikora,
IsElmaradt = tanarOra.isElmaradt,
Tema = tanarOra.Tema,
TantargyId = tanarOra.TantargyId,
TantargyNev = tanarOra.TantargyTeljesNev,
TantargyKategoria = tanarOra.TantargyKategoria,
HelyettesitoId = tanarOra.helyettesitoId,
OsztalyCsoportId = tanarOra.TanevRendOsztalyCsoportId,
OsztalyCsoportNev = tanarOra.OsztalyCsoport,
TeremNev = tanarOra.Terem,
OraTulajdonosTanar = new TanarSimplifiedGetResponseCo { Id = tanarOra.TanarId, Nev = tanarOra.TanarNev },
EvesOraszam = tanarOra.EvesOraSorszam
};
var dktFeladatHelper = new DktFeladatHelper(new DalHandlerConnectionType(new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h));
if (oraResponseCo.Allapot == TanoraAllapotaEnum.Naplozott)
{
var haziFeladatCo = dktFeladatHelper.GetTanitasiOraHaziFeladatDetail(oraResponseCo.TanitasiOraId, null, false);
SetHaziFeladatData(oraResponseCo, haziFeladatCo);
}
else if (oraResponseCo.Allapot == TanoraAllapotaEnum.Nem_naplozott)
{
var haziFeladatCo = dktFeladatHelper.GetOrarendiOraHaziFeladatDetail(oraResponseCo.OrarendiOraId, request.Datum, false, null, null);
SetHaziFeladatData(oraResponseCo, haziFeladatCo);
}
if (tanarOra.hanyadikora == -1 || tanarOra.oraType == CalendarOraTypeEnum.TanoranKivuliFoglalkozas || tanarOra.oraType == CalendarOraTypeEnum.TanoranKivuliNaplozottFoglalkozas)
{
oraResponseCo.Oraszam = null;
}
if (tanarOra.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny)
{
var helper = new TanoraHelper(new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId));
oraResponseCo.EvesOraszam = helper.GetOraEvesSorszamaSP(oraResponseCo.TantargyId, oraResponseCo.OsztalyCsoportId, oraResponseCo.Kezdete, oraResponseCo.OraTulajdonosTanar.Id);
}
oraCoList.Add(oraResponseCo);
}
returnObject.FillData(oraCoList);
return returnObject;
}
private static OraGetResponseCo SetHaziFeladatData(OraGetResponseCo oraResponseCo, TanarHaziFeladatDetailCO haziFeladatCo)
{
if (haziFeladatCo != null && haziFeladatCo.Id.HasValue && haziFeladatCo.Id > 0)
{
oraResponseCo.HazifeladatId = haziFeladatCo.Id;
oraResponseCo.HazifeladatSzovege = haziFeladatCo.Szoveg?.Replace("<a", "<a target=\"_blank\"");
oraResponseCo.HazifeladatHatarido = haziFeladatCo.Hatarido;
}
return oraResponseCo;
}
}
}

View file

@ -0,0 +1,49 @@
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanar;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Framework.Util;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
public static class TanarGetSubqueries
{
public static IConnectionType ConnectionType;
public static ProfilResponseCo Profil(int tanarId, DefaultConnectionParameters defaultConnectionParameters)
{
ConnectionType = new MobileConnectionType(tanarId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId);
var dataRow = new TanarHelper(ConnectionType).GetProfil();
var tanarProfil = new TanarProfilCo
{
Id = SDAConvert.ToInt32(dataRow["Id"]),
Nev = SDAConvert.ToString(dataRow["Nev"]),
FeladatEllatasiHelyId = SDAConvert.ToInt32(dataRow["FeladatEllatasiHelyId"]),
MukodesiHelyNeve = SDAConvert.ToString(dataRow["MukodesiHelyNev"]),
OktatasiNevelesiFeladatNeve = SDAConvert.ToInt32(dataRow["OktatasiNevelesiFeladatTipusId"]).GetItemNameFromCache(defaultConnectionParameters.TanevId, defaultConnectionParameters.IntezmenyAzonosito),
MunkahelyiEmailCim = SDAConvert.ToString(dataRow["MunkahelyiEmailCim"]),
PublikusEmailCim = SDAConvert.ToString(dataRow["PublikusEmailCim"]),
PublikusTelefonszam = SDAConvert.ToString(dataRow["PublikusTelefonszam"])
};
var response = new ProfilResponseCo();
if (tanarProfil != null)
{
response.Id = tanarProfil.Id;
response.Nev = tanarProfil.Nev;
response.Kep = null;
response.FeladatEllatasiHelyId = tanarProfil.FeladatEllatasiHelyId;
response.FeladatEllatasiHely = $"{tanarProfil.MukodesiHelyNeve} - {tanarProfil.OktatasiNevelesiFeladatNeve}";
response.MunkahelyiEmailCim = tanarProfil.MunkahelyiEmailCim != "" ? tanarProfil.MunkahelyiEmailCim : null;
response.PublikusEmailCim = tanarProfil.PublikusEmailCim != "" ? tanarProfil.PublikusEmailCim : null;
response.PublikusTelefonszam = tanarProfil.PublikusTelefonszam != "" ? tanarProfil.PublikusTelefonszam : null;
}
return response;
}
}
}

View file

@ -0,0 +1,77 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Common.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic.TanuloErtekeles;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.Enums;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
public static class TanuloErtekeleseiGetSubqueries
{
public static List<ErtekelesGetResponseCo> GetTanuloErtekelesei(DefaultConnectionParameters defaultConnectionParameters, ErtekelesGetRequestCo request)
{
var response = new List<ErtekelesGetResponseCo>();
var helper = new TanuloErtekelesHelper(new MobileConnectionType(defaultConnectionParameters.FelhasznaloId, defaultConnectionParameters.IntezmenyId, defaultConnectionParameters.IntezmenyAzonosito, defaultConnectionParameters.TanevId));
var tanuloErtekelesei = helper.GetTanuloErtekelesListDataSet(new TanuloErtekelesListCo
{
TanevId = defaultConnectionParameters.TanevId,
TanuloIds = new List<int>() { request.TanuloId },
TantargyUids = new List<string>() { request.TantargyId.ToString() }
}).Tables[0];
if (tanuloErtekelesei.Rows.Count > 0)
{
helper.RemoveTanuloJogosultsagMiattiErtekelesek(new List<int>() { request.TanuloId }, tanuloErtekelesei);
List<int> egyszerAdhatoErtekelesTipusIds = EnumExtensions.GetErtekelesTipusDictionaryItems(defaultConnectionParameters.TanevId, true).Select(x => x.Id).ToList();
foreach (var ertekeles in tanuloErtekelesei.ToDaoList<ErtekelesResponseDao>())
{
var ertekelesOsztalyzatValue = SDAConvert.ToNullableInt32(TanuloErtekelesLogicBase.GetOsztalyzatTextShort(ertekeles.ErtekelesOsztalyzatId, egyszerAdhatoErtekelesTipusIds, true));
var ertekFajta = ertekelesOsztalyzatValue.HasValue ? ErtekelesErtekFajta.Osztalyzat
: !string.IsNullOrWhiteSpace(ertekeles.ErtekelesSzoveg) ? ErtekelesErtekFajta.Szoveges
: ertekeles.ErtekelesSzazalekErteke != null ? ErtekelesErtekFajta.Szazalekos
: ErtekelesErtekFajta.None;
var ertekelesResponse = new ErtekelesGetResponseCo
{
Id = ertekeles.Id,
Datum = ertekeles.Datum,
Tipus = new NaploEnumCo<ErtekelesTipusEnum>(ertekeles.TipusId, ertekeles.TipusNeve),
Mod = ertekeles.ErtekelesModId.HasValue ? new NaploEnumCo<ErtekelesModEnum>(ertekeles.ErtekelesModId.Value, ertekeles.ErtekelesModNeve) : null,
Suly = ertekeles.ErtekelesSuly,
Tema = string.IsNullOrWhiteSpace(ertekeles.ErtekelesTema) ? null : ertekeles.ErtekelesTema
};
ertekelesResponse.Ertekeles = new ErtekelesFajtaCo();
switch (ertekFajta)
{
case ErtekelesErtekFajta.Osztalyzat:
ertekelesResponse.Ertekeles.Osztalyzat = ertekelesOsztalyzatValue;
break;
case ErtekelesErtekFajta.Szoveges:
ertekelesResponse.Ertekeles.Szoveg = ertekeles.ErtekelesSzoveg;
break;
case ErtekelesErtekFajta.Szazalekos:
ertekelesResponse.Ertekeles.Szazalek = ertekeles.ErtekelesSzazalekErteke;
break;
default:
break;
}
response.Add(ertekelesResponse);
}
}
return response;
}
}
}

View file

@ -0,0 +1,128 @@
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get
{
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.JavasoltJelenletTemplate;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.Enums;
using Kreta.Resources;
public static class OraSubqueries
{
public static ResponseWrapperCo<List<FeljegyzesResponseCo>> FeljegyzesLista(int teacherId, FeljegyzesRequestCo request, int intezmenyId, string intezmenyAzonosito, int tanevId)
{
var returnObject = new ResponseWrapperCo<List<FeljegyzesResponseCo>>(request.Hash);
var tanuloFeljegyzesList = new List<FeljegyzesResponseCo>();
var tanuloFeljegyzesDt = GetAndValidateTanoraHelper(request.TanoraId, teacherId, intezmenyId, intezmenyAzonosito, tanevId).GetTanuloFeljegyzesek(request.TanoraId).Tables[0];
foreach (DataRow tanuloFeljegyzes in tanuloFeljegyzesDt.Rows)
{
var tanuloId = tanuloFeljegyzes.Field<int>("TanuloId");
var newFeljegyzesInfo = new FeljegyzesInfoResponseCo
{
Id = tanuloFeljegyzes.Field<int>("Id"),
Tipus = new NaploEnumCo<EsemenyTipusEnum>(tanuloFeljegyzes.Field<int>("Tipus"))
};
var letezoTanuloFeljegyzes = tanuloFeljegyzesList.Find(x => x.TanuloId == tanuloId);
if (letezoTanuloFeljegyzes == null)
{
tanuloFeljegyzesList.Add(
new FeljegyzesResponseCo
{
TanuloId = tanuloId,
FeljegyzesLista = new List<FeljegyzesInfoResponseCo>()
{
newFeljegyzesInfo
}
});
}
else
{
letezoTanuloFeljegyzes.FeljegyzesLista.Add(newFeljegyzesInfo);
}
}
returnObject.FillData(tanuloFeljegyzesList);
return returnObject;
}
public static List<JavasoltJelenletTemplateGetResponseCo> ListJavasoltJelenletTemplate(int teacherId, JavasoltJelenletTemplateGetRequestCo request)
=> new JavasoltJelenletTemplateLogic(request.OraAllapot).GetTemplate();
public static List<MulasztasResponseCo> MulasztasLista(int teacherId, MulasztasRequestCo request, int intezmenyId, string intezmenyAzonosito, int tanevId)
{
var tanuloMulasztasList = new List<MulasztasResponseCo>();
var tanuloMulasztasDt = GetAndValidateTanoraHelper(request.TanoraId, teacherId, intezmenyId, intezmenyAzonosito, tanevId).GetTanuloMulasztasok(request.TanoraId).Tables[0];
foreach (DataRow mulasztas in tanuloMulasztasDt.Rows)
{
tanuloMulasztasList.Add(new MulasztasResponseCo
{
Id = mulasztas.Field<int>("Id"),
Tipus = new NaploEnumCo<MulasztasTipusEnum>(mulasztas.Field<int>("Tipus")),
Keses = mulasztas.Field<int?>("Keses"),
TanuloId = mulasztas.Field<int>("TanuloId")
});
}
return tanuloMulasztasList;
}
public static OsztalyTanuloiResponseCo GetOsztalyTanuloi(int teacherId, OsztalyTanuloiRequestCo request, string intezmenyAzonosito, int intezmenyId, int tanevId)
{
var osztalyCsoportHelper = new OsztalyCsoportHelper(new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId));
var osztalyTanuloDao = osztalyCsoportHelper.GetOsztalyCsoportTanulokEsFelmenteseik(request.OsztalyCsoportId, request.OraShortDatuma, null, null).ToDaoList<TanuloResponseDao>();
var osztalyCsoport = osztalyCsoportHelper.GetOsztalyCsoportCoList().Find(x => x.Id == request.OsztalyCsoportId);
if (osztalyCsoport == default)
throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NemLetezoOsztalyCsoport);
var osztalyTanuloi = new OsztalyTanuloiResponseCo
{
Id = request.OsztalyCsoportId,
Nev = osztalyCsoport.Nev,
};
foreach (var tanuloGroup in osztalyTanuloDao.GroupBy(x => x.TanuloId))
{
var tanulo = tanuloGroup.FirstOrDefault();
var tanuloResponse = new TanuloResponseCo(tanulo);
if (tanulo.TantargyId.HasValue)
{
tanuloResponse.Felmentesek = tanuloGroup.Select(felmentes => new TanuloMentessegResponseCo(felmentes.TantargyId, felmentes.IsErtekelesMentesseg, felmentes.IsSzovegesenErtekelheto, felmentes.IsOraMentesites)).ToList();
}
osztalyTanuloi.TanuloLista.Add(tanuloResponse);
}
return osztalyTanuloi;
}
private static TanoraHelper GetAndValidateTanoraHelper(int tanoraId, int userId, int intezmenyId, string intezmenyAzonosito, int tanevId)
{
var tanoraHelper = new TanoraHelper(new MobileConnectionType(userId, intezmenyId, intezmenyAzonosito, tanevId));
if (!tanoraHelper.IsValidTanoraId(tanoraId))
{
throw new ValidationException(ValidationErrorType.ResourceNotFound, ErrorResource.NemLezetoTanitasiOra);
}
return tanoraHelper;
}
}
}

View file

@ -0,0 +1,139 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Felmentes;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.OrarendiOra.JavasoltJelenlet;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo
{
public static class OrarendiOraSubqueries
{
/// <summary>
/// Returns the filters to be executory from the template. The order of filters does not matter.
/// </summary>
public static List<JavasoltJelenletGetResponseCo> ListJavasoltJelenlet(int teacherId, int intezmenyId, string intezmenyAzonosito, int tanevId, IDalHandler h, JavasoltJelenletGetRequestCo request, Enums.OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum)
{
var response = new List<JavasoltJelenletGetResponseCo>();
var tanarHelyettesitesLogic = new HelyettesitesLogic.Tanar(teacherId, tanevId, intezmenyId, intezmenyAzonosito, oktatasNevelesKategoriaEnum);
foreach (var orarendiOraKey in request.Key)
{
var orarendiOraEntity = h.OrarendiOra().Get(orarendiOraKey.OrarendiOraId);
if (!orarendiOraKey.IsHelyettesitesKeresoAltalTalaltOra &&
orarendiOraEntity.TanarId != teacherId &&
!tanarHelyettesitesLogic.IsHelyettesito(orarendiOraEntity.OsztalyCsoportId, orarendiOraEntity.TantargyId))
{
throw new ValidationException(ValidationErrorType.Undefined, NaploApiResource.NincsJogosultsagaCsakASajatVagyHelyettesitesiOraKerdezhetoLe);
}
var osztalyTanuloi = OraSubqueries.GetOsztalyTanuloi(teacherId, new OsztalyTanuloiRequestCo() { OsztalyCsoportId = orarendiOraEntity.OsztalyCsoportId, OraShortDatuma = orarendiOraKey.OraKezdetDatuma }, intezmenyAzonosito, intezmenyId, tanevId);
var igazolasLista = h.IgazolasDal().GetIgazolasokListajaGrid(
new IgazolasokListajaSearchPCO
{
OsztalyCsoportSearch = orarendiOraEntity.OsztalyCsoportId,
IgazolasDatuma = orarendiOraKey.OraKezdetDatuma
},
oktatasNevelesKategoriaEnum).Tables[0];
response.Add(new JavasoltJelenletGetResponseCo
{
OrarendiOraId = orarendiOraKey.OrarendiOraId,
OraKezdetDatuma = orarendiOraKey.OraKezdetDatuma,
TanuloLista = GetTanuloListaWithSzuroLista(osztalyTanuloi.TanuloLista, igazolasLista, orarendiOraEntity.TantargyId, orarendiOraKey.OraKezdetDatuma, orarendiOraKey.OraVegDatuma, orarendiOraEntity.OsztalyCsoportId)
});
}
return response;
bool HasTanuloIgazolas(int tanuloId, DataTable igazolasLista) => igazolasLista.AsEnumerable().Any(x => x.Field<int>("TanuloId") == tanuloId);
List<JavasoltJelenletTanuloGetResponseCo> GetTanuloListaWithSzuroLista(List<TanuloResponseCo> tanuloLista, DataTable igazolasLista, int tantargyId, DateTime oraKezdetDatuma, DateTime oraVegDatuma, int osztalyCsoportId)
{
var javasoltJelenletTanuloLista = new List<JavasoltJelenletTanuloGetResponseCo>();
if (!tanuloLista.Any())
{
return javasoltJelenletTanuloLista;
}
var parhuzamosOranNaplozottTanuloIdList = OrarendiOraLogic.ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdetDatuma, oraVegDatuma, new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h);
var elozoOranHianyzottTanuloIdList = OraLogic.ListElozoOranHianyzottTanuloId(oraKezdetDatuma, osztalyCsoportId, teacherId, intezmenyId, intezmenyAzonosito, tanevId);
var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = SystemSettingsLogic.IsMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled(intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var isMagantanuloOralatogatasAloliMentessegEnabled = SystemSettingsLogic.IsMagantanuloOralatogatasAloliMentessegEnabled(tantargyId, intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var felmentesek = FelmentesSubqueries.ListFelmentes(new FelmentesGetRequestCo
{
TanuloIds = tanuloLista.Select(t => t.Id),
FelhasznaloId = teacherId,
IntezmenyId = intezmenyId,
IntezmenyAzonosito = intezmenyAzonosito,
TanevId = tanevId,
TantargyId = tantargyId
});
foreach (var tanulo in tanuloLista)
{
var javasoltJelenletTemplateTipusSzuroLista = new List<IJavasoltJelenletSzuroGetResponseCo>
{
new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Default)
};
if (HasTanuloIgazolas(tanulo.Id, igazolasLista))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Igazolas));
}
if (elozoOranHianyzottTanuloIdList?.Contains(tanulo.Id) ?? false)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ElozoOranHianyzott));
}
if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozottTanuloIdList.Contains(tanulo.Id))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ParhuzamosOranNaplozott));
}
if (felmentesek.ContainsKey(tanulo.Id) && TanuloLogic.CalculateIsNowFelmentett(felmentesek[tanulo.Id], oraKezdetDatuma, intezmenyId, intezmenyAzonosito, tanevId, FelmentesType.OralatogatasAlol))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Felmentes));
}
if (tanulo.TanugyiAdatok.IsSzakmaiGyakorlatonLevo)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.SzakmaiGyakorlat));
}
if (tanulo.TanugyiAdatok.IsJogviszonySzunetelteto)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.JogviszonySzuneteltetes));
}
if (TanuloLogic.CalculateIsNowMagantanulo(tanulo.IsMaganTanulo, tanulo.MaganTanulosagKezdetDatuma, tanulo.MaganTanulosagVegeDatuma, oraKezdetDatuma) && isMagantanuloOralatogatasAloliMentessegEnabled)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg));
}
javasoltJelenletTanuloLista.Add(new JavasoltJelenletTanuloGetResponseCo
{
TanuloId = tanulo.Id,
JavasoltJelenletTemplateTipusSzuroLista = javasoltJelenletTemplateTipusSzuroLista
});
}
return javasoltJelenletTanuloLista;
}
}
}
}

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));
}
}
}
}
}

View file

@ -0,0 +1,136 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Felmentes;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.Common;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Ora.TanitasiOra.JavasoltJelenlet;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanulo;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.Get;
using Kreta.Core.ConnectionType;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.DataAccessManual.Interfaces;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.Resources;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo
{
public static class TanitasiOraSubqueries
{
/// <summary>
/// Returns the filters to be executory from the template. The order of filters does not matter.
/// </summary>
public static List<JavasoltJelenletGetResponseCo> ListJavasoltJelenlet(int teacherId, int intezmenyId, string intezmenyAzonosito, int tanevId, IDalHandler h, JavasoltJelenletGetRequestCo request, Enums.OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum)
{
var response = new List<JavasoltJelenletGetResponseCo>();
var tanarHelyettesitesLogic = new HelyettesitesLogic.Tanar(teacherId, tanevId, intezmenyId, intezmenyAzonosito, oktatasNevelesKategoriaEnum);
foreach (var tanitasiOraKey in request.Key)
{
var tanitasiOraEntity = h.TanitasiOra().Get(tanitasiOraKey.TanitasiOraId);
if (tanitasiOraEntity.TanarId != teacherId && !tanarHelyettesitesLogic.IsHelyettesito(tanitasiOraEntity.OsztalyCsoportId, tanitasiOraEntity.TantargyId))
{
throw new ValidationException(ValidationErrorType.Undefined, NaploApiResource.NincsJogosultsagaCsakASajatVagyHelyettesitesiOraKerdezhetoLe);
}
var osztalyTanuloi = OraSubqueries.GetOsztalyTanuloi(teacherId, new OsztalyTanuloiRequestCo() { OsztalyCsoportId = tanitasiOraEntity.OsztalyCsoportId, OraShortDatuma = tanitasiOraEntity.Datum }, intezmenyAzonosito, intezmenyId, tanevId);
var igazolasLista = h.IgazolasDal().GetIgazolasokListajaGrid(
new IgazolasokListajaSearchPCO
{
OsztalyCsoportSearch = tanitasiOraEntity.OsztalyCsoportId,
IgazolasDatuma = tanitasiOraEntity.OraKezdete
},
oktatasNevelesKategoriaEnum).Tables[0];
response.Add(new JavasoltJelenletGetResponseCo
{
TanitasiOraId = tanitasiOraKey.TanitasiOraId,
TanuloLista = GetTanuloListaWithSzuroLista(osztalyTanuloi.TanuloLista, igazolasLista, tanitasiOraEntity.TantargyId, tanitasiOraEntity.OraKezdete, tanitasiOraEntity.OraVege, tanitasiOraKey.TanitasiOraId, tanitasiOraEntity.OsztalyCsoportId)
});
}
return response;
bool HasTanuloIgazolas(int tanuloId, DataTable igazolasLista) => igazolasLista.AsEnumerable().Any(x => x.Field<int>("TanuloId") == tanuloId);
List<JavasoltJelenletTanuloGetResponseCo> GetTanuloListaWithSzuroLista(List<TanuloResponseCo> tanuloLista, DataTable igazolasLista, int tantargyId, DateTime oraKezdetDatuma, DateTime oraVegDatuma, int tanitasiOraId, int osztalyCsoportId)
{
var javasoltJelenletTanuloLista = new List<JavasoltJelenletTanuloGetResponseCo>();
if (!tanuloLista.Any())
{
return javasoltJelenletTanuloLista;
}
var parhuzamosOranNaplozottTanuloIdList = TanitasiOraLogic.ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdetDatuma, oraVegDatuma, tanitasiOraId, new MobileConnectionType(teacherId, intezmenyId, intezmenyAzonosito, tanevId), h);
var elozoOranHianyzottTanuloIdList = OraLogic.ListElozoOranHianyzottTanuloId(oraKezdetDatuma, osztalyCsoportId, teacherId, intezmenyId, intezmenyAzonosito, tanevId);
var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = SystemSettingsLogic.IsMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled(intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var isMagantanuloOralatogatasAloliMentessegEnabled = SystemSettingsLogic.IsMagantanuloOralatogatasAloliMentessegEnabled(tantargyId, intezmenyAzonosito, tanevId, teacherId, intezmenyId);
var felmentesek = FelmentesSubqueries.ListFelmentes(new FelmentesGetRequestCo
{
TanuloIds = tanuloLista.Select(t => t.Id),
FelhasznaloId = teacherId,
IntezmenyId = intezmenyId,
IntezmenyAzonosito = intezmenyAzonosito,
TanevId = tanevId,
TantargyId = tantargyId
});
foreach (var tanulo in tanuloLista)
{
var javasoltJelenletTemplateTipusSzuroLista = new List<IJavasoltJelenletSzuroGetResponseCo>
{
new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Default)
};
if (HasTanuloIgazolas(tanulo.Id, igazolasLista))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Igazolas));
}
if (elozoOranHianyzottTanuloIdList?.Contains(tanulo.Id) ?? false)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ElozoOranHianyzott));
}
if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozottTanuloIdList.Contains(tanulo.Id))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.ParhuzamosOranNaplozott));
}
if (felmentesek.ContainsKey(tanulo.Id) && TanuloLogic.CalculateIsNowFelmentett(felmentesek[tanulo.Id], oraKezdetDatuma, intezmenyId, intezmenyAzonosito, tanevId, FelmentesType.OralatogatasAlol))
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.Felmentes));
}
if (tanulo.TanugyiAdatok.IsSzakmaiGyakorlatonLevo)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.SzakmaiGyakorlat));
}
if (tanulo.TanugyiAdatok.IsJogviszonySzunetelteto)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.JogviszonySzuneteltetes));
}
if (TanuloLogic.CalculateIsNowMagantanulo(tanulo.IsMaganTanulo, tanulo.MaganTanulosagKezdetDatuma, tanulo.MaganTanulosagVegeDatuma, oraKezdetDatuma) && isMagantanuloOralatogatasAloliMentessegEnabled)
{
javasoltJelenletTemplateTipusSzuroLista.Add(new JavasoltJelenletSzuroGetResponseCo(JavasoltJelenletTemplateType.MagantanuloOralatogatasAloliMentesseg));
}
javasoltJelenletTanuloLista.Add(new JavasoltJelenletTanuloGetResponseCo
{
TanuloId = tanulo.Id,
JavasoltJelenletTemplateTipusSzuroLista = javasoltJelenletTemplateTipusSzuroLista
});
}
return javasoltJelenletTanuloLista;
}
}
}
}

View file

@ -0,0 +1,71 @@
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Tanmenet;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Logic;
using Kreta.Core.Validation.Exceptions;
using Kreta.Core.Validation.Exceptions.Enum;
using Kreta.DataAccessManual.Interfaces;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo
{
public static class TanmenetSubqueries
{
public static List<TanmenetGetResponseCo> ListTanmenet(IDalHandler h, int teacherId, int tanevId, int intezmenyId, string intezmenyAzonosito, TanmenetGetRequestCo request)
{
var allowedRequestRecordLength = 10;
if (request.Key.Length > allowedRequestRecordLength)
{
throw new ValidationException(ValidationErrorType.Undefined, $"Hiba történt, {nameof(allowedRequestRecordLength)}={allowedRequestRecordLength}!");
}
var errors = new List<ValidationExceptionItem>();
var tanarHelyettesitesLogic = new HelyettesitesLogic.Tanar(teacherId, tanevId, intezmenyId, intezmenyAzonosito, null);
for (int i = 0; i < request.Key.Length; i++)
{
var tanmenetKey = request.Key[i];
if (tanmenetKey.FeltoltoTanarId != teacherId && !tanarHelyettesitesLogic.IsHelyettesito(tanmenetKey.OsztalyCsoportId, tanmenetKey.TantargyId))
{
errors.Add(new ValidationExceptionItem(i.ToString(), $"Nincs jogosultsága, csak a saját vagy helyettesítési tanmenet kérdezhető le!"));
}
}
if (errors.Count > 0)
{
throw new ValidationException(ValidationErrorType.Undefined, "Hiba történt!", errors);
}
var response = new List<TanmenetGetResponseCo>();
var tanmenetDal = h.Tanmenet();
foreach (var tanmenetKey in request.Key)
{
var tanmenetItems = new List<TanmenetItemGetResponseCo>();
var tanmenetItemDt = tanmenetDal.GetTanmenetek(tanmenetKey.TantargyId, tanmenetKey.OsztalyCsoportId, tanmenetKey.FeltoltoTanarId).Tables[0];
foreach (DataRow tanmenetItem in tanmenetItemDt.Rows)
{
tanmenetItems.Add(new TanmenetItemGetResponseCo
{
Id = tanmenetItem.Field<int>("ID"),
EvesOraszam = tanmenetItem.Field<int>("Oraszam"),
Tema = tanmenetItem.Field<string>("Tema"),
Megjegyzes = tanmenetItem.Field<string>("Megjegyzes"),
Nev = tanmenetItem.Field<string>("Nev"),
RovidNev = tanmenetItem.Field<string>("RovidNev")
});
}
response.Add(new TanmenetGetResponseCo
{
OsztalyCsoportId = tanmenetKey.OsztalyCsoportId,
TantargyId = tanmenetKey.TantargyId,
FeltoltoTanarId = tanmenetKey.FeltoltoTanarId,
Items = tanmenetItems
});
}
return response;
}
}
}

View file

@ -0,0 +1,51 @@
using System.Collections.Generic;
using System.Data;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Enum;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.Co.Get.Enum;
using Kreta.DataAccessManual.Interfaces;
using Kreta.Enums;
using Kreta.Enums.ManualEnums.WebApi.Naplo;
namespace Kreta.BusinessLogic.Classes.MobileApi.Naplo.V2.SubqueriesRepo.UtilityMethods
{
public static class EnumSubqueries
{
public static List<NaploEnumListItemCo> GetNaploEnum(IDalHandler h, int tanevId, EnumRequestCo request)
{
var naploEnumList = new List<NaploEnumListItemCo>();
var dal = h.AdatszotarDAL();
DataTable adatszotarDt = new DataTable();
switch (request.EngedelyezettEnum.GetEnum())
{
case EngedelyezettEnumok.ErtekelesModEnum:
adatszotarDt = dal.GetAdatszotarLathatoElemek(GeneratedAdatszotarTipusEnum.ErtekelesMod, tanevId).Tables[0];
break;
case EngedelyezettEnumok.ErtekelesTipusEnum:
adatszotarDt = dal.GetAdatszotarLathatoElemek(GeneratedAdatszotarTipusEnum.ErtekelesTipus, tanevId).Tables[0];
break;
case EngedelyezettEnumok.OsztalyzatTipusEnum:
adatszotarDt = dal.GetAdatszotarLathatoElemek(GeneratedAdatszotarTipusEnum.OsztalyzatTipus, tanevId).Tables[0];
break;
case EngedelyezettEnumok.MulasztasTipusEnum:
adatszotarDt = dal.GetAdatszotarLathatoElemek(GeneratedAdatszotarTipusEnum.MulasztasTipus, tanevId).Tables[0];
break;
case EngedelyezettEnumok.EsemenyTipusEnum: /// TODO devKornél: mobilosokkal egyeztetve, ez itt hibás is, és nem is használják
naploEnumList.Add(new NaploEnumListItemCo((int)EsemenyTipusEnum.HaziFeladatHiany, null, nameof(EsemenyTipusEnum.HaziFeladatHiany)));
naploEnumList.Add(new NaploEnumListItemCo((int)EsemenyTipusEnum.Felszereleshiany, null, nameof(EsemenyTipusEnum.Felszereleshiany)));
naploEnumList.Add(new NaploEnumListItemCo((int)EsemenyTipusEnum.SzakmaiMentessegNemHivatalos, null, nameof(EsemenyTipusEnum.SzakmaiMentessegNemHivatalos)));
naploEnumList.Add(new NaploEnumListItemCo((int)EsemenyTipusEnum.Dicseret, null, nameof(EsemenyTipusEnum.Dicseret)));
return naploEnumList;
}
foreach (DataRow item in adatszotarDt.Rows)
{
naploEnumList.Add(new NaploEnumListItemCo(item.Field<int>("ID"), null, item.Field<string>("Megnevezes")));
}
return naploEnumList;
}
}
}