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,45 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Naplo.Dao.V3.Csatolmany;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Csatolmany;
using Kreta.Naplo.Domain.V3.Orarend;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
namespace Kreta.Naplo.BusinessLogic.V3.Csatolmany
{
internal static class CsatolmanySubqueries
{
internal static Dictionary<OrarendElemUid, List<CsatolmanyResponse>> ListCsatolmanyok(DefaultConnectionParameters dcp, CsatolmanyListRequest request)
{
var result = new Dictionary<OrarendElemUid, List<CsatolmanyResponse>>(new OrarendElemUid());
if (!request.OrarendElemek.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 orarendElem in request.OrarendElemek.Distinct(new OrarendElemSimplified()))
{
result.Add(new OrarendElemUid(orarendElem.Id, orarendElem.Tipus, orarendElem.Datum),
oraFiles.Where(x => orarendElem.Datum == x.OraDatum &&
((orarendElem.Tipus == CalendarOraTypeEnum.OrarendiOra && orarendElem.Id == x.OrarendiOraId) ||
(orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.Id == x.TanitasiOraId) ||
(orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.OrarendiOraId == x.OrarendiOraId) ||
(orarendElem.Tipus == CalendarOraTypeEnum.TanitasiOra && orarendElem.OrarendiOraGroupId == x.OrarendiOraId)))
.Select(x => new CsatolmanyResponse
{
Id = x.FileId,
Nev = x.FileNev
}).ToList());
}
return result;
}
}
}

View file

@ -0,0 +1,20 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Web.Logging.Abstractions;
namespace Kreta.Naplo.BusinessLogic.V3.Dummy
{
public class DummyFacade : NaploFacade
{
private readonly ITraceLogger TraceLogger;
public DummyFacade(MobileUser mobileUser, ITraceLogger traceLogger) : base(mobileUser)
{
TraceLogger = traceLogger;
}
public List<object> TraceLoggerDummy()
=> RunSubquery(() => DummySubqueries.TraceLoggerDummy(TraceLogger));
}
}

View file

@ -0,0 +1,18 @@
using System.Collections.Generic;
using Kreta.Web.Logging.Abstractions;
namespace Kreta.Naplo.BusinessLogic.V3.Dummy
{
internal static class DummySubqueries
{
internal static List<object> TraceLoggerDummy(ITraceLogger traceLogger)
{
traceLogger.Info("teszt");
return new List<object>
{
new { Teszt = "hi" }
};
}
}
}

View file

@ -0,0 +1,17 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Enum;
namespace Kreta.Naplo.BusinessLogic.V3.Enum
{
public class EnumFacade : NaploFacade
{
public EnumFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public List<EnumResponse> GetNaploEnum(EnumRequest request)
=> RunSubquery(() => EnumSubqueries.GetNaploEnum(DefaultConnectionParameters, request));
}
}

View file

@ -0,0 +1,105 @@
using System.Collections.Generic;
using Kreta.BusinessLogic.Classes;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Enums;
using Kreta.Naplo.Domain.V3.Adatszotar;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Enum;
using Kreta.Resources;
namespace Kreta.Naplo.BusinessLogic.V3.Enum
{
internal static class EnumSubqueries
{
internal static List<EnumResponse> GetNaploEnum(DefaultConnectionParameters dcp, EnumRequest request)
{
var engedelyezettEnumok = new List<string>()
{
"ErtekelesMod",
"ErtekelesTipus",
"FeljegyzesTipus",
"MulasztasTipus",
"OsztalyzatTipus",
"IgazolasTipus",
"CalendarOraTypeEnum",
"TanoraAllapotaEnum"
};
if (!engedelyezettEnumok.Contains(request.EnumTipus))
{
throw new BlException(ErrorResource.NemEngedelyezettVagyNemLetezoEnum, BlExceptionType.ModelValidacio);
}
if (request.EnumTipus.Contains("CalendarOraTypeEnum"))
{
return ManualEnumToList<Enums.ManualEnums.CalendarOraTypeEnum>(dcp.TanevId);
}
if (request.EnumTipus.Contains("TanoraAllapotaEnum"))
{
return ManualEnumToList<Enums.ManualEnums.TanoraAllapotaEnum>(dcp.TanevId);
}
if (!System.Enum.TryParse(request.EnumTipus == "FeljegyzesTipus" ? "EsemenyTipus" : request.EnumTipus, out GeneratedAdatszotarTipusEnum enumErtek))
{
throw new BlException(BlExceptionType.ModelValidacio);
}
var enumList = new List<EnumResponse>();
var adatszotar = EnumExtensions.GetAdatszotarDictElemekForTipus(dcp.TanevId, enumErtek, null, true);
foreach (var adatszotarElem in adatszotar)
{
enumList.Add(new EnumResponse
{
Id = adatszotarElem.Key,
Nev = GetEnumNev(enumErtek, adatszotarElem.Key),
Leiras = adatszotarElem.Value
});
}
return enumList;
}
private static string GetEnumNev(GeneratedAdatszotarTipusEnum enumErtek, int enumId)
{
switch (enumErtek)
{
case GeneratedAdatszotarTipusEnum.ErtekelesMod:
return new Adatszotar<ErtekelesModEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.ErtekelesTipus:
return new Adatszotar<ErtekelesTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.EsemenyTipus:
return new Adatszotar<EsemenyTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.MulasztasTipus:
return new Adatszotar<MulasztasTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.OsztalyzatTipus:
return new Adatszotar<OsztalyzatTipusEnum>(enumId).Uid.Nev;
case GeneratedAdatszotarTipusEnum.IgazolasTipus:
return new Adatszotar<IgazolasTipusEnum>(enumId).Uid.Nev;
}
return string.Empty;
}
private static List<EnumResponse> ManualEnumToList<T>(int tanevId) where T : System.Enum
{
var enums = new List<EnumResponse>();
int enumId = 0;
foreach (var item in System.Enum.GetValues(typeof(T)))
{
enumId = (int)item;
enums.Add(new EnumResponse
{
Id = enumId,
Nev = item.ToString(),
Leiras = enumId.GetDisplayName<T>(tanevId)
});
}
return enums;
}
}
}

View file

@ -0,0 +1,79 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Logic;
using Kreta.Naplo.Dao.V3.Orarend;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Ertekeles;
using Kreta.Naplo.Domain.V3.Felmentes;
namespace Kreta.Naplo.BusinessLogic.V3.Felmentes
{
public static class FelmentesSubqueries
{
internal static IEnumerable<(int tanuloId, int? tantargyId, TanuloMentessegResponse mentessegResponse)> GetFelmentesekWithTanuloAdatok(DefaultConnectionParameters dcp, FelmentesRequest request)
{
var osztalyCsoportTanuloi = new OsztalyCsoportHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.GetOsztalyCsoportTanulokEsFelmenteseik(request.OsztalyCsoportId, request.Datum, request.TanuloId, request.TantargyId).ToDaoList<JelenletResponseDao>();
return GetTanulokWithFelmentesek(osztalyCsoportTanuloi).Select(x => (x.TanuloId, x.TantargyId, new TanuloMentessegResponse
{
TanoraLatogatasaAloliFelmentes = x.IsOraMentesites ?? false,
ErtekelesAloliFelmentes = x.IsErtekelesMentesseg ?? false,
SzovegesenErtekelheto = x.IsSzovegesenErtekelheto ?? true,
FelmentesOka = x.MentessegOka,
IsMaganTanulo = (x.IsMaganTanulo ?? false) &&
(x.MaganTanulosagKezdetDatuma.HasValue ? x.MaganTanulosagKezdetDatuma <= request.Datum : true) &&
(x.MaganTanulosagVegeDatuma.HasValue ? x.MaganTanulosagVegeDatuma >= request.Datum : true),
IsJogviszonySzunetelteto = x.IsJogviszonySzunetelteto ?? false,
IsSzakmaiGyakorlatonLevo = x.IsSzakmaiGyakorlatonLevo ?? false
}));
}
private static IEnumerable<JelenletResponseDao> GetTanulokWithFelmentesek(List<JelenletResponseDao> osztalyCsoportTanuloi)
{
foreach (var felmentesek in osztalyCsoportTanuloi.GroupBy(x => (x.TanuloId, x.TantargyId)))
{
if (felmentesek.Any())
{
var felmentes = felmentesek.First();
if (felmentesek.Count() > 1)
{
AggregateFelmentesek(felmentesek, felmentes);
}
yield return felmentes;
}
}
}
/// <summary>
/// Aggregálni kell a felmentéseket a következő logika alapján
/// lényegében a két felmentést kell uniózni, ami az időpont esetében egyértelmű (legkorábbitól a legkésőbbig), a CB esetében meg vagy kapcsolatotot jelent, azaz ami legalább egynél be van pipálva
/// </summary>
/// <param name="felmentesek">felmentes lista ha több is szerepel</param>
/// <param name="felmentes">felmentes elem</param>
private static void AggregateFelmentesek(IGrouping<(int TanuloId, int? TantargyId), JelenletResponseDao> felmentesek, JelenletResponseDao felmentes)
{
var aggeregateFelmentes = felmentesek.Aggregate((currentValue, sequenceValue) => new JelenletResponseDao
{
IsOraMentesites = currentValue.IsOraMentesites.GetValueOrDefault() || sequenceValue.IsOraMentesites.GetValueOrDefault(),
IsErtekelesMentesseg = currentValue.IsErtekelesMentesseg.GetValueOrDefault() || sequenceValue.IsErtekelesMentesseg.GetValueOrDefault(),
IsSzovegesenErtekelheto = currentValue.IsSzovegesenErtekelheto.GetValueOrDefault() || sequenceValue.IsSzovegesenErtekelheto.GetValueOrDefault(),
MentessegOka = currentValue.MentessegOka + $" | {sequenceValue.MentessegOka}"
});
felmentes.IsOraMentesites = aggeregateFelmentes.IsOraMentesites;
felmentes.IsErtekelesMentesseg = aggeregateFelmentes.IsErtekelesMentesseg;
felmentes.IsSzovegesenErtekelheto = aggeregateFelmentes.IsSzovegesenErtekelheto;
felmentes.MentessegOka = aggeregateFelmentes.MentessegOka;
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using System.Net.Http;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.CoreApi;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.HaziFeladat;
namespace Kreta.Naplo.BusinessLogic.V3.HaziFeladat
{
public class HaziFeladatFacade : NaploFacade
{
private readonly IFileServiceHelper _fileServiceHelper;
private readonly ICoreApiClient _coreApiClient;
public HaziFeladatFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public HaziFeladatFacade(MobileUser mobileUser, IFileServiceHelper fileServiceHelper) : base(mobileUser)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
}
public HaziFeladatFacade(MobileUser mobileUser, ICoreApiClient coreApiClient) : base(mobileUser)
{
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
public HaziFeladatFacade(MobileUser mobileUser, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) : base(mobileUser)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
public HaziFeladatResponse GetHaziFeladat(int id)
=> RunSubquery(() => HaziFeladatSubqueries.GetHaziFeladat(id, DefaultConnectionParameters));
public int SaveHaziFeladat(HaziFeladatCreateRequest request)
=> RunSubquery(() => HaziFeladatSubqueries.SaveHaziFeladat(request, DefaultConnectionParameters, _fileServiceHelper, _coreApiClient));
public void UpdateHaziFeladat(int id, HaziFeladatUpdateRequest request)
=> RunSubquery(() => HaziFeladatSubqueries.UpdateHaziFeladat(id, request, DefaultConnectionParameters, _fileServiceHelper, _coreApiClient));
public void DeleteHaziFeladat(int id)
=> RunSubquery(() => HaziFeladatSubqueries.DeleteHaziFeladat(id, DefaultConnectionParameters, _coreApiClient));
public void HaziFeladatCsatolmanyTorles(int id)
=> RunSubquery(() => HaziFeladatSubqueries.HaziFeladatCsatolmanyTorles(id, DefaultConnectionParameters, _fileServiceHelper));
}
}

View file

@ -0,0 +1,115 @@
using System.Linq;
using System.Net;
using System.Net.Http;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Utils;
using Kreta.Client.CoreApi;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Naplo.BusinessLogic.V3.Logic;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Csatolmany;
using Kreta.Naplo.Domain.V3.HaziFeladat;
namespace Kreta.Naplo.BusinessLogic.V3.HaziFeladat
{
internal static class HaziFeladatSubqueries
{
internal static HaziFeladatResponse GetHaziFeladat(int id, DefaultConnectionParameters dcp)
{
var haziFeladat = new DktFeladatHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetTanarHaziFeladatDetail(id);
//felesleges html tagek kitörlése kódból- KRETA2-4145
//TODO: felesleges lesz ha ha már db-ben se lesznek már ilyenek benne
haziFeladat.Szoveg = RichTextLogic.RemoveSpecificHtmlTags(haziFeladat.Szoveg, RichTextLogic.RemovableHtmlTags);
return new HaziFeladatResponse
{
Id = haziFeladat.Id.Value,
Szoveg = string.IsNullOrWhiteSpace(haziFeladat.Szoveg) ? null : haziFeladat.Szoveg,
HataridoDatuma = haziFeladat.Hatarido,
TantargyId = haziFeladat.TantargyId,
TantargyNev = haziFeladat.Tantargy,
Csatolmanyok = haziFeladat.Csatolmanyok.Select(x => new CsatolmanyResponse { Id = x.Key, Nev = x.Value }),
};
}
internal static int SaveHaziFeladat(HaziFeladatCreateRequest request, DefaultConnectionParameters dcp, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var tanarHaziFeladatCo = new TanarHaziFeladatCO()
{
Szoveg = CommonUtils.CreateLinksInText(request.Szoveg),
Hatarido = request.BeadasiHatarido,
FeladasDatuma = request.OraDatum.Date,
Idopont = request.OraDatum,
Oraszam = request.Oraszam,
TantargyId = request.TantargyId,
OsztalyCsoportId = request.OsztalyCsoportId,
IsTanarRogzitette = true,
RogzitoId = dcp.FelhasznaloId,
IntezmenyId = dcp.IntezmenyId,
TanevId = dcp.TanevId
};
return new DktFeladatHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.SaveOrUpdateTanarHaziFeladat(tanarHaziFeladatCo, dcp.DalHandler.TanarDal().GetTanarId(request.OraDatum, request.Oraszam, request.OsztalyCsoportId, request.TantargyId), fileServiceHelper, coreApiClient);
}
internal static void UpdateHaziFeladat(int id, HaziFeladatUpdateRequest request, DefaultConnectionParameters dcp, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var tanarHaziFeladatCo = new TanarHaziFeladatCO()
{
Id = id,
Szoveg = CommonUtils.CreateLinksInText(request.Szoveg),
Hatarido = request.HataridoDatuma,
CsatolmanyId = request.CsatolmanyId,
IsTanarRogzitette = true,
RogzitoId = dcp.FelhasznaloId,
IntezmenyId = dcp.IntezmenyId,
TanevId = dcp.TanevId
};
new DktFeladatHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.SaveOrUpdateTanarHaziFeladat(tanarHaziFeladatCo, dcp.FelhasznaloId, fileServiceHelper, coreApiClient);
}
internal static void DeleteHaziFeladat(int id, DefaultConnectionParameters dcp, ICoreApiClient coreApiClient)
{
var hazi = dcp.DalHandler.DKT_FeladatDal().Get(id);
if (hazi.Torolt)
{
throw new BlException(BlExceptionType.NemLetezoEntitas);
}
if (hazi.AlkalmazottId == dcp.FelhasznaloId || hazi.RogzitoAlkalmazottId == dcp.FelhasznaloId || hazi.HelyettesitoAlkalmazottId == dcp.FelhasznaloId)
{
new DktFeladatHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).DeleteHazi(id, coreApiClient);
}
else
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
}
internal static void HaziFeladatCsatolmanyTorles(int id, DefaultConnectionParameters dcp, IFileServiceHelper fileServiceHelper)
{
var dktFileHelper = new DktFileHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), fileServiceHelper);
if (!dktFileHelper.IsFelhasznaloToltotteFel(dcp.DalHandler, id))
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
dktFileHelper.DeleteCsatolmany(id, true);
}
}
}

View file

@ -0,0 +1,23 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Igazolas;
namespace Kreta.Naplo.BusinessLogic.V3.Igazolas
{
public class IgazolasFacade : NaploFacade
{
public IgazolasFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public IEnumerable<IgazolasResponse> GetIgazolas(int tanuloId)
=> RunSubquery(() => IgazolasSubqueries.GetIgazolas(DefaultConnectionParameters, tanuloId));
public void CreateIgazolas(IgazolasCreateRequest request)
=> RunSubquery(() => IgazolasSubqueries.CreateIgazolas(DefaultConnectionParameters, request));
public void DeleteIgazolas(int id)
=> RunSubquery(() => IgazolasSubqueries.DeleteIgazolas(DefaultConnectionParameters, id));
}
}

View file

@ -0,0 +1,79 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Naplo.BusinessLogic.V3.Logic;
using Kreta.Naplo.Dao.V3.Igazolas;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Igazolas;
using Kreta.Resources;
namespace Kreta.Naplo.BusinessLogic.V3.Igazolas
{
public class IgazolasSubqueries
{
internal static IEnumerable<IgazolasResponse> GetIgazolas(DefaultConnectionParameters dcp, int tanuloId)
{
var igazolasok = new IgazolasHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetIgazolasByTanuloId(tanuloId).ToDaoList<IgazolasResponseDao>();
return igazolasok.Select(igazolas =>
new IgazolasResponse
{
Id = igazolas.Id,
Kezdete = igazolas.Kezdete,
Vege = igazolas.Vege,
Tipusa = igazolas.Tipusa,
Megjegyzes = igazolas.Megjegyzes,
Rogzito = igazolas.Rogzito,
Torolheto = AuthorizationHelper.Igazolas.TanarHasAccess(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), igazolas.Id)
}).ToList();
}
internal static void CreateIgazolas(DefaultConnectionParameters dcp, IgazolasCreateRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
if (!AuthorizationHelper.Tanulo.TanarHasAccess(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), new List<int> { request.TanuloId }, request.OsztalyCsoportId, false))
{
throw new BlException(ErrorResource.AFelhasznalonakNincsMegfeleloJogosultsagaAFunkcioHasznalatahoz, BlExceptionType.NincsJogosultsag);
}
if (request.IgazolasKezdete <= new SystemSettingsHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetIgazolasokNaplozarasDatuma())
{
throw new BlException(IgazolasResource.AzIgazolasKezdoNapjaNemEshetLezartIdoszakra, BlExceptionType.ModelValidacio);
}
new IgazolasHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).SaveOrUpdateIgazolas(new IgazolasCO()
{
TanuloId = request.TanuloId,
OsztCsop = request.OsztalyCsoportId,
ErvKezdete = request.IgazolasKezdete,
ErvVege = request.IgazolasVege,
RogzitoId = dcp.FelhasznaloId,
RogzDatum = DateTime.Now,
IgazolasTipus = request.IgazolasTipus,
Megjegyzes = request.IgazolasMegjegyzes
});
}
internal static void DeleteIgazolas(DefaultConnectionParameters dcp, int id)
{
var torolheto = AuthorizationHelper.Igazolas.TanarHasAccess(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), id);
if (torolheto)
{
new IgazolasHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).DeleteIgazolasById(id);
}
else
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
}
}
}

View file

@ -0,0 +1,44 @@
using System;
using System.Runtime.Caching;
using Kreta.Core.Logic;
using Kreta.DataAccessManual;
using Kreta.Naplo.Dao.V3.Naplo;
namespace Kreta.Naplo.BusinessLogic.V3.Intezmeny
{
internal static class IntezmenySubqueries
{
internal static IntezmenyAdatokDao GetIntezmenyAdatokFromCache(string intezmenyAzonosito)
{
var cache = MemoryCache.Default;
var cacheKey = $"{intezmenyAzonosito}_mobileIntezmenyAdatok";
if (!(cache[cacheKey] is IntezmenyAdatokDao intezmenyAdatok))
{
intezmenyAdatok = new IntezmenyAdatokDao();
Dal.MobileConnection.Run(
intezmenyAzonosito,
null,
h =>
{
intezmenyAdatok = h.IntezmenyDal().GetIntezmenyIdAktivTanevIdByAzonosito(intezmenyAzonosito).Tables[0].Rows[0].ToDao<IntezmenyAdatokDao>();
});
var policy = new CacheItemPolicy
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(20))
};
cache.Set(cacheKey, intezmenyAdatok, policy);
}
return intezmenyAdatok;
}
internal static void RemoveIntezemenyAdatokCache(string intezmenyAzonosito)
{
_ = MemoryCache.Default.Remove($"{intezmenyAzonosito}_mobileIntezmenyAdatok");
}
}
}

View file

@ -0,0 +1,17 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Iskolaor;
namespace Kreta.Naplo.BusinessLogic.V3.Iskolaor
{
public class IskolaorFacade : NaploFacade
{
public IskolaorFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public List<IskolaorResponse> ListIskolaor()
=> RunSubquery(() => IskolaorSubqueries.ListIskolaor(DefaultConnectionParameters));
}
}

View file

@ -0,0 +1,29 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Framework.Util;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Iskolaor;
namespace Kreta.Naplo.BusinessLogic.V3.Iskolaor
{
public class IskolaorSubqueries
{
public static List<IskolaorResponse> ListIskolaor(DefaultConnectionParameters dcp)
{
var iskolaorAlkalmazottakList = new AlkalmazottHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetIskolaor();
return iskolaorAlkalmazottakList.Select(iskolaor =>
new IskolaorResponse
{
Uid = iskolaor.IdpEgyediAzonosito,
Nev = iskolaor.Nev,
FeladatEllatasiHelyId = iskolaor.FeladatEllatasiHelyId,
FeladatEllatasiHelyNev = iskolaor.MukodesiHelyNeve + " - " + iskolaor.OktatasiNevelesiFeladatTipusId.GetItemNameFromCache(dcp.TanevId, dcp.IntezmenyAzonosito),
EmailCim = iskolaor.AlapertelmezettEmailCim,
Telefonszam = iskolaor.AlapertelmezettTelefonszam
}).ToList();
}
}
}

View file

@ -0,0 +1,29 @@
using System.Data;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Enums;
namespace Kreta.Naplo.BusinessLogic.V3.Logic
{
public static class HelyettesitesLogic
{
public class Tanar
{
public Tanar(int tanarId, int tanevId, int intezmenyId, string intezmenyAzonosito, OktNevelesiKategoriaEnum? oktatasNevelesKategoriaEnum = null)
{
TanarHelyettesiteseiDt = new HelyettesitesHelper(new MobileConnectionType(tanarId, intezmenyId, intezmenyAzonosito, tanevId))
.GetHelyettesitesekListajaGrid(new Kreta.BusinessLogic.HelperClasses.HelyettesitesekListajaSearchCO
{
HelyettesitoTanarSearch = tanarId,
FeladatKategoriaId = oktatasNevelesKategoriaEnum.HasValue ? (int)oktatasNevelesKategoriaEnum : default
}).Tables[0];
}
private DataTable TanarHelyettesiteseiDt { get; set; }
public bool IsHelyettesito(int osztalyCsoportId, int tantargyId)
=> TanarHelyettesiteseiDt.Select($"OsztalyCsoportId = {osztalyCsoportId} AND TantargyId = {tantargyId}").Length > 0;
}
}
}

View file

@ -0,0 +1,50 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using Kreta.Core;
using Kreta.Core.Domain;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
namespace Kreta.Naplo.BusinessLogic.V3.Logic
{
internal class ValidatorLogic
{
private readonly List<ValidationResult> _errorList = new List<ValidationResult>();
private readonly bool _isValid = true;
internal ValidatorLogic(object instance)
{
var context = new ValidationContext(instance, serviceProvider: null, items: null);
_isValid = Validator.TryValidateObject(instance, context, _errorList, true);
}
public static implicit operator string(ValidatorLogic validator) => validator.GetFirstUserFriendlyError();
internal BlException ConvertToValidationException()
{
var exception = new BlException(BlExceptionType.ModelValidacio);
var count = 1;
foreach (var error in _errorList)
{
var name = error.MemberNames.FirstOrDefault() ?? "custom_" + count;
exception.ErrorList.Add(new DetailedErrorItem(name, error.ErrorMessage, BlExceptionType.ModelValidacio));
count++;
}
return exception;
}
internal string GetFirstUserFriendlyError()
=> _errorList.Count > 0 ? _errorList[0].ErrorMessage : string.Empty;
internal void ThrowExceptionIfModelIsNotvalid()
{
if (!_isValid)
{
throw ConvertToValidationException();
}
}
}
}

View file

@ -0,0 +1,9 @@
using Kreta.Naplo.Domain.V3.Common;
namespace Kreta.Naplo.BusinessLogic.V3.Naplo
{
public class NaploFacade : NaploFacadeBase
{
public NaploFacade(MobileUser mobileUser) : base(mobileUser) { }
}
}

View file

@ -0,0 +1,50 @@
using System;
using Kreta.BusinessLogic.Utils;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Naplo.BusinessLogic.V3.Intezmeny;
using Kreta.Naplo.Domain.V3.Common;
namespace Kreta.Naplo.BusinessLogic.V3.Naplo
{
public class NaploFacadeBase
{
public NaploFacadeBase(MobileUser mobileUser)
{
var intezmenyAzonosito = CommonUtils.GetOrganizationIdentifier();
DefaultConnectionParameters = new DefaultConnectionParameters(mobileUser, IntezmenySubqueries.GetIntezmenyAdatokFromCache(intezmenyAzonosito), intezmenyAzonosito);
if (!mobileUser.InstituteCode.Equals(DefaultConnectionParameters.IntezmenyAzonosito, StringComparison.InvariantCultureIgnoreCase))
{
throw new BlException(BlExceptionType.IntezmenyAzonositoUtkozes);
}
if (mobileUser.SchoolYearId != DefaultConnectionParameters.TanevId)
{
IntezmenySubqueries.RemoveIntezemenyAdatokCache(DefaultConnectionParameters.IntezmenyAzonosito);
throw new BlException(BlExceptionType.IntezmenyMarTanevetValtott);
}
}
protected DefaultConnectionParameters DefaultConnectionParameters { get; }
protected T RunSubquery<T>(Func<T> subquery)
{
return DataAccessManual.Dal.MobileConnection.Run(DefaultConnectionParameters.IntezmenyAzonosito, DefaultConnectionParameters.TanevId, h =>
{
DefaultConnectionParameters.DalHandler = h;
return subquery();
}, DefaultConnectionParameters.FelhasznaloId);
}
protected void RunSubquery(Action subquery)
{
DataAccessManual.Dal.MobileConnection.Run(DefaultConnectionParameters.IntezmenyAzonosito, DefaultConnectionParameters.TanevId, h =>
{
DefaultConnectionParameters.DalHandler = h;
subquery();
}, DefaultConnectionParameters.FelhasznaloId);
}
}
}

View file

@ -0,0 +1,17 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Ora;
namespace Kreta.Naplo.BusinessLogic.V3.Ora
{
public class OraFacade : NaploFacade
{
public OraFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public List<OraFeljegyzesResponse> GetOraFeljegyzesek(OraFeljegyzesRequest request)
=> RunSubquery(() => OraSubqueries.GetOraFeljegyzesek(DefaultConnectionParameters, request));
}
}

View file

@ -0,0 +1,56 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Helpers;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Enums;
using Kreta.Naplo.Dao.V3.Ora;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Ora;
namespace Kreta.Naplo.BusinessLogic.V3.Ora
{
public class OraSubqueries
{
public static List<OraFeljegyzesResponse> GetOraFeljegyzesek(DefaultConnectionParameters dcp, OraFeljegyzesRequest request)
{
var result = new List<OraFeljegyzesResponse>();
var tanoraHelper = new TanoraHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId));
if (!tanoraHelper.IsValidTanoraId(request.TanoraId))
{
throw new BlException(BlExceptionType.ElvartErtekNemTalalhato);
}
var tanulokFeljegyzesek = tanoraHelper.GetTanuloFeljegyzesek(request.TanoraId).ToDaoList<FeljegyzesResponseDao>().GroupBy(f => f.TanuloId);
foreach (var tanuloFeljegyzesek in tanulokFeljegyzesek)
{
result.Add(new OraFeljegyzesResponse
{
TanuloId = tanuloFeljegyzesek.Key,
FeljegyzesLista = tanuloFeljegyzesek.Select(f => new FeljegyzesResponse
{
Id = f.Id,
Tipus = f.Tipus
}).ToList()
});
}
return result;
}
internal static HashSet<TanuloJelenletResponse> GetTanuloJelenlet(DefaultConnectionParameters dcp, TanuloJelenletRequest request)
{
return dcp.DalHandler.MulasztasDal()
.GetTanuloJelenletDataSet(dcp.TanevId, request.TanoraId)
.ToDaoList<MulasztasResponseDao>()
.Select(m => new TanuloJelenletResponse
{
TanuloId = m.TanuloId,
MulasztasTipus = m.Tipus ?? (int)MulasztasTipusEnum.jelenlet,
Keses = m.Keses
}).ToHashSet();
}
}
}

View file

@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using Kreta.BusinessLogic.Interfaces;
using Kreta.Client.CoreApi;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Orarend;
using Kreta.Naplo.Domain.V3.OsztalyCsoport;
namespace Kreta.Naplo.BusinessLogic.V3.Orarend
{
public class OrarendFacade : NaploFacade
{
private readonly IFileServiceHelper _fileServiceHelper;
private readonly ICoreApiClient _coreApiClient;
public OrarendFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public OrarendFacade(MobileUser mobileUser, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient) : base(mobileUser)
{
_fileServiceHelper = fileServiceHelper ?? throw new ArgumentNullException(nameof(fileServiceHelper));
_coreApiClient = coreApiClient ?? throw new ArgumentNullException(nameof(coreApiClient));
}
public OrarendElemResponse GetOrarendElem(OrarendElemRequest request) => RunSubquery(() => OrarendSubqueries.GetOrarendElem(DefaultConnectionParameters, request));
public HashSet<OrarendElemResponse> GetOrarend(OrarendRequest request) => RunSubquery(() => OrarendSubqueries.GetOrarend(DefaultConnectionParameters, request));
public string OraNaplozas(OraNaplozasRequest request) => RunSubquery(() => OrarendSubqueries.OraNaplozas(DefaultConnectionParameters, request, _fileServiceHelper, _coreApiClient));
public string OraNaplozasTorles(OraNaplozasTorlesRequest request) => RunSubquery(() => OrarendSubqueries.OraNaplozasTorles(DefaultConnectionParameters, request));
public IEnumerable<TanuloJelenletResponse> GetTanuloJelenlet(TanuloJelenletRequest request) => RunSubquery(() => OrarendSubqueries.GetTanuloJelenlet(DefaultConnectionParameters, request));
public IEnumerable<HetirendListResponse> ListHetirend(HetirendListRequest request) => RunSubquery(() => OrarendSubqueries.ListHetirend(DefaultConnectionParameters, request));
public BejelentettSzamonkeresekResponse GetBejelentettSzamonkeres(int id) => RunSubquery(() => OrarendSubqueries.GetBejelentettSzamonkeres(DefaultConnectionParameters, id));
public void DeleteBejelentettSzamonkeres(int id) => RunSubquery(() => OrarendSubqueries.DeleteBejelentettSzamonkeres(DefaultConnectionParameters, id));
public void PostSzamonkeres(SzamonkeresRequest request) => RunSubquery(() => OrarendSubqueries.PostSzamonkeres(DefaultConnectionParameters, request));
}
}

View file

@ -0,0 +1,508 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.BusinessLogic.Interfaces;
using Kreta.BusinessLogic.Logic.Naplozas;
using Kreta.BusinessLogic.Logic.Naplozas.Validacio;
using Kreta.Client.CoreApi;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Core.Validation.Exceptions;
using Kreta.DataAccessManual;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Enums.ManualEnums.SystemSettings;
using Kreta.Framework.Entities;
using Kreta.Naplo.BusinessLogic.V3.Csatolmany;
using Kreta.Naplo.BusinessLogic.V3.Felmentes;
using Kreta.Naplo.BusinessLogic.V3.Logic;
using Kreta.Naplo.BusinessLogic.V3.Ora;
using Kreta.Naplo.Dao.V3.Orarend;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Csatolmany;
using Kreta.Naplo.Domain.V3.Ertekeles;
using Kreta.Naplo.Domain.V3.Felmentes;
using Kreta.Naplo.Domain.V3.Logic;
using Kreta.Naplo.Domain.V3.Orarend;
using Kreta.Naplo.Domain.V3.OsztalyCsoport;
using Kreta.Naplo.Domain.V3.UniqueIdentifier;
using Kreta.Naplo.Domain.V3.Utility;
using Kreta.Resources;
namespace Kreta.Naplo.BusinessLogic.V3.Orarend
{
internal static class OrarendSubqueries
{
internal static HashSet<OrarendElemResponse> GetOrarend(DefaultConnectionParameters dcp, OrarendRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
return ListOrarendElemek(dcp, request.DatumTol, request.DatumIg);
}
internal static OrarendElemResponse GetOrarendElem(DefaultConnectionParameters dcp, OrarendElemRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
return ListOrarendElemek(dcp, request.OrarendElemUid.Datum, request.OrarendElemUid.Datum.AddDays(1), request.OrarendElemUid.Id, request.OrarendElemUid.Tipus)
.FirstOrDefault() ?? throw new BlException(ErrorResource.AzOratIdokozbenToroltekKerjukFrissitsen, BlExceptionType.NemLetezoEntitas);
}
internal static HashSet<OrarendElemResponse> ListOrarendElemek(DefaultConnectionParameters dcp, DateTime datumTol, DateTime datumIg, int? orarendElemId = null, CalendarOraTypeEnum? orarendElemTipus = null)
{
var orarendElemek = new HashSet<OrarendElemResponse>();
var eventList = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler))
.GetOrarendElemekMobilNaplo(datumTol, datumIg, dcp.FelhasznaloId);
if (orarendElemId != null)
{
if (orarendElemTipus == CalendarOraTypeEnum.OrarendiOra)
{
eventList = new List<OrarendCO.ExtendedEvent>()
{
eventList.FirstOrDefault(e => (e.oraType == CalendarOraTypeEnum.OrarendiOra || e.oraType == CalendarOraTypeEnum.TanitasiOra) && e.OrarendiOraId == orarendElemId && e.datum == datumTol)
};
}
else
{
eventList = new List<OrarendCO.ExtendedEvent>()
{
eventList.FirstOrDefault(e => e.oraType == orarendElemTipus && e.id == orarendElemId && e.datum == datumTol)
};
}
}
if (eventList.Any() && eventList.First() == null)
{
return orarendElemek;
}
var oraFiles = CsatolmanySubqueries.ListCsatolmanyok(dcp, new CsatolmanyListRequest
{
DatumTol = datumTol,
DatumIg = datumIg,
OrarendElemek = eventList.Where(o => o.oraType != CalendarOraTypeEnum.TanevRendjeEsemeny).Select(o => new OrarendElemSimplified(o.id, o.OrarendiOraId ?? 0, o.OrarendiOraGroupId ?? 0, o.oraType, o.datum.Value))
});
var kezdoIdopont = new SystemSettingsHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetSystemSettingValue<TimeSpan>(RendszerBeallitasTipusEnum.Az_elektronikus_naplo_megjelenesenek_kezdoidopontja);
var lezartOsztalyokEsBontottCsoportjaik = new NaplozarasLogic(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetLezartOsztalyokEsBontottCsoportjaik();
var naplozarasDatum = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetNaplozarasDate(null);
foreach (var tanarOra in eventList)
{
if (tanarOra.oraType == CalendarOraTypeEnum.TanevRendjeEsemeny)
{
orarendElemek.Add(
new OrarendElemResponse
{
Uid = new OrarendElemUid(tanarOra.id, tanarOra.oraType, tanarOra.start.Value),
Nev = tanarOra.title,
Kezdete = tanarOra.start.Value.Add(kezdoIdopont).AddMinutes(-1),
Vege = tanarOra.end.Value.Add(kezdoIdopont).AddMinutes(-1),
Allapot = (int)TanoraAllapotaEnum.TanevRendjeEsemeny,
Csatolmanyok = new List<CsatolmanyResponse>()
});
}
else if (!tanarOra.allDay)
{
var oraResponse = new OrarendElemResponse
{
Uid = new OrarendElemUid(tanarOra.id, tanarOra.oraType, tanarOra.datum.Value),
Nev = tanarOra.TantargyTeljesNev,
HasOrarendiOra = tanarOra.OrarendiOraGroupId.HasValue,
OsztalyCsoportId = tanarOra.TanevRendOsztalyCsoportId,
OsztalyCsoportNev = tanarOra.OsztalyCsoport,
TantargyId = tanarOra.TantargyId,
TantargyNev = tanarOra.TantargyTeljesNev,
Terem = tanarOra.Terem,
Kezdete = tanarOra.start.Value,
Vege = tanarOra.end.Value,
Tema = tanarOra.Tema,
Oraszam = tanarOra.hanyadikora,
Allapot = (int)tanarOra.OraAllapota,
TanarUid = tanarOra.TanarIdpUniqueId,
TanarNev = tanarOra.TanarNev,
HelyettesitoTanarUid = tanarOra.HelyettesitoTanarIdpUniqueId,
HelyettesitoTanarNev = tanarOra.HelyettesNev,
EvesOraSorszam = tanarOra.EvesOraSorszam,
HaziFeladatId = tanarOra.HaziFeladatId,
BejelentettSzamonkeresId = tanarOra.BejelentettSzamonkeresId,
BejelentettSzamonkeresMod = tanarOra.BejelentettSzamonkeresMod,
BejelentettSzamonkeresTema = tanarOra.BejelentettSzamonkeresTema,
ElozoNaplozottOraDatum = tanarOra.ElozoNaplozottOraDatum,
ElozoNaplozottOraTema = tanarOra.ElozoNaplozottOraTema,
Naplozart = lezartOsztalyokEsBontottCsoportjaik.Contains(tanarOra.TanevRendOsztalyCsoportId) || tanarOra.datum.Value <= naplozarasDatum
};
oraResponse.Csatolmanyok = oraFiles[oraResponse.Uid];
if (!tanarOra.CsengetesiRendId.HasValue)
{
oraResponse.Oraszam = null;
}
orarendElemek.Add(oraResponse);
}
}
return orarendElemek;
}
public static string OraNaplozas(DefaultConnectionParameters dcp, OraNaplozasRequest request, IFileServiceHelper fileServiceHelper, ICoreApiClient coreApiClient)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
if (request.IsElmaradt)
{
if (new SystemSettingsHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Elmaradt_tanitasi_ora_rogzitesenek_tiltasa))
{
throw new BlException("Az órát az intézményi beállítások alapján nem lehet elmaradtra naplózni", BlExceptionType.FunkcioKikapcsolva);
}
}
var naploValidacioParameters = new NaploValidacioParameters(from: request.OrarendElemUid.Datum, to: request.OrarendElemUid.Datum.AddDays(1),
new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), felhasznaloSzerepkor: null);
var naploValidator = new NaploValidacio(naploValidacioParameters);
try
{
var logicCo = new NaplozasMobilCo();
request.ConvertTo(logicCo);
var tanitasiOraId = new NaplozasLogic(naploValidator, logicCo).SaveNaplozas(fileServiceHelper, coreApiClient).TanitasiOraId;
return UidLogic.Concat(tanitasiOraId, CalendarOraTypeEnum.TanitasiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString());
}
catch (ValidationException exception)
{
throw new BlException(exception.Message, BlExceptionType.ModelValidacio);
}
catch (BlException exception)
{
throw new BlException(exception.Message, BlExceptionType.ModelValidacio);
}
catch (EntityNotFoundException)
{
throw new BlException(ErrorResource.NaplozasSikertelenAzOraMarNemLetezikAKivalasztottNapon, BlExceptionType.NemLetezoEntitas);
}
catch (Exception exception)
{
throw new BlException(ErrorResource.SikertelenMentes, exception);
}
}
public static string OraNaplozasTorles(DefaultConnectionParameters dcp, OraNaplozasTorlesRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
try
{
var naploValidacioParameters = new NaploValidacioParameters(from: request.OrarendElemUid.Datum, to: request.OrarendElemUid.Datum.AddDays(1),
new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), felhasznaloSzerepkor: null);
var naploValidator = new NaploValidacio(naploValidacioParameters);
var logicCo = new NaplozasMobilCo();
request.ConvertTo(logicCo);
new NaplozasLogic(naploValidator, logicCo).NaplozasValidacio();
var tanoraHelper = new TanoraHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler));
var tanitasiOra = dcp.DalHandler.TanitasiOra().Get(request.OrarendElemUid.Id);
if (tanitasiOra.TanarId != dcp.FelhasznaloId && tanitasiOra.HelyettesitoTanarId != dcp.FelhasznaloId)
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
tanoraHelper.NaplozasTorlese(request.OrarendElemUid.Id, true);
var orarendiOra = tanoraHelper.GetOrarendiOraIdForTanitasiOra(tanitasiOra);
if (orarendiOra != null)
{
return UidLogic.Concat(orarendiOra.ID, CalendarOraTypeEnum.OrarendiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString());
}
else
{
return UidLogic.Concat(-1, CalendarOraTypeEnum.OrarendiOra, request.OrarendElemUid.Datum.ToIso8601Utc().ToIso8601UtcString());
}
}
catch (ValidationException exception)
{
throw new BlException(exception.Message, BlExceptionType.ModelValidacio);
}
catch (BlException exception) when (exception.ExceptionType is BlExceptionType.ModelValidacio)
{
throw new BlException(exception.Message, BlExceptionType.ModelValidacio);
}
catch (Exception exception)
{
throw new BlException(ErrorResource.SikertelenTorles, exception);
}
}
internal static IEnumerable<TanuloJelenletResponse> GetTanuloJelenlet(DefaultConnectionParameters dcp, TanuloJelenletRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var connection = new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId);
(var oraKezdete, var oraVege, var osztalyCsoportId, var tantargyId) = GetOraAlapadatok(dcp, request);
var parhuzamosOranNaplozott = new MulasztasHelper(connection).ListParhuzamosOranNaplozottMulasztasTanuloId(oraKezdete, oraVege, request.OrarendElemUid.Id);
var mulasztasok = OraSubqueries.GetTanuloJelenlet(dcp, new Domain.V3.Ora.TanuloJelenletRequest(request.OrarendElemUid.Id));
var osztalyCsoportTanuloi = FelmentesSubqueries.GetFelmentesekWithTanuloAdatok(dcp, new FelmentesRequest { OsztalyCsoportId = osztalyCsoportId, Datum = oraKezdete, TantargyId = tantargyId });
var isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled = new SystemSettingsHelper(connection).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.A_foglalkozasok_mulasztasi_adatai_megadasanal_a_parhuzamos_orakkal_valo_utkozes_vizsgalata);
var igazolasLista = dcp.DalHandler.IgazolasDal().GetIgazolasokByDate(request.OrarendElemUid.Datum, dcp.TanevId, dcp.IntezmenyId).ToDaoList<JelenletIgazolasResponseDao>().Select(x => x.TanuloId);
var magantanuloMulasztasSystemSetting = (SystemSettingMagantanuloMulasztas)new SystemSettingsHelper(connection).GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Magantanulo_oralatogatas_aloli_mentessegenek_kezelese);
var isNemGyakorlatiTantargyonResztKellVennie = magantanuloMulasztasSystemSetting != SystemSettingMagantanuloMulasztas.CsakGyakorlaton && !new TantargyHelper(connection).IsGyakorlatiTantargy(tantargyId);
var alapertelmezettJelenlet = new SystemSettingsHelper(connection).GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.alapertelmezett_statusz_naplozasok_eseteben);
var elozoOranHianyzoAjanlasa = new FelhasznaloHelper(connection).GetProfilTipus(dcp.FelhasznaloId, "HianyzokAutoKitoltes");
var elozoOranhianyzottTanuloIdList = elozoOranHianyzoAjanlasa ? dcp.DalHandler.Tanulo().GetElozoOranHianyzottTanulok(oraKezdete, osztalyCsoportId) : new List<int>();
var tantargybolElozoOranHianyzottTanuloIdList = dcp.DalHandler.OrarendiOra().GetElozoOranHianyzottTanulo(tantargyId, osztalyCsoportId, oraKezdete, dcp.TanevId, dcp.IntezmenyId);
return CheckTanuloJelenlet(osztalyCsoportTanuloi, mulasztasok, igazolasLista, parhuzamosOranNaplozott, elozoOranhianyzottTanuloIdList, tantargybolElozoOranHianyzottTanuloIdList, tantargyId, isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled, magantanuloMulasztasSystemSetting, isNemGyakorlatiTantargyonResztKellVennie, alapertelmezettJelenlet);
}
internal static IEnumerable<HetirendListResponse> ListHetirend(DefaultConnectionParameters dcp, HetirendListRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
return dcp.DalHandler.NaptariHet().GetNaptariHetList(dcp.TanevId, new NaptariHetAndOrarendOverlapFilter
{
OrarendElemKezdoNapDatuma = request.OrarendElemKezdoNapDatuma,
OrarendElemVegNapDatuma = request.OrarendElemVegNapDatuma
})
.ToDaoList<NaptariHetResponseDao>()
.Select(x => new HetirendListResponse
{
Id = x.Id,
HetSorszama = x.HetSorszama,
KezdoNapDatuma = x.KezdoNapDatuma,
VegNapDatuma = x.VegNapDatuma,
Hetirend = x.HetirendNev ?? ((int)HetiRendTipusEnum.MindegyikHet).GetDisplayName<HetiRendTipusEnum>(dcp.TanevId)
});
}
internal static BejelentettSzamonkeresekResponse GetBejelentettSzamonkeres(DefaultConnectionParameters dcp, int id)
{
var szamonkeres = dcp.DalHandler.SzamonkeresElorejelzes().GetBejelentettSzamonkeresekGrid(
dcp.IntezmenyId,
dcp.TanevId,
new SzamonkeresElorejelzesSearchPco
{
SzamonkeresIds = new List<int>() { id },
}, null).ToDaoList<BejelentettSzamonkeresResponseDao>().FirstOrDefault();
if (szamonkeres == null)
{
throw new BlException(BlExceptionType.NemLetezoEntitas);
}
return new BejelentettSzamonkeresekResponse
{
Id = szamonkeres.Id,
Tema = szamonkeres.Tema,
ErtekelesMod = szamonkeres.ErtekelesMod,
OraSzam = szamonkeres.OraSzam,
TantargyId = szamonkeres.TantargyId,
TantargyNev = szamonkeres.TantargyNev,
TanarUid = szamonkeres.TanarUid,
TanarNev = szamonkeres.TanarNev
};
}
internal static void DeleteBejelentettSzamonkeres(DefaultConnectionParameters dcp, int id)
{
var szamonkeres = dcp.DalHandler.SzamonkeresElorejelzes().Get(id);
if (szamonkeres.Torolt) throw new BlException(ErrorResource.ASzamonkeresIdokozbenMarTorolveLett, BlExceptionType.NemLetezoEntitas);
if (szamonkeres.RogzitoId != dcp.FelhasznaloId) throw new BlException(BlExceptionType.NincsJogosultsag);
dcp.DalHandler.SzamonkeresElorejelzes().Delete(id);
}
internal static void PostSzamonkeres(DefaultConnectionParameters dcp, SzamonkeresRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var connection = new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId);
var systemSettingsHelper = new SystemSettingsHelper(connection);
var limitFigyelmeztetesiTiltasiBeallitas = systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Limit_Figyelmeztetesi_Tiltasi_Beallitas);
var ertekelesModokBeallitasaNapiLimithez = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Ertekeles_Modok_Beallitasa_Napi_Limithez);
var napiSzamonkeresiLimit = systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Napi_Szamonkeresi_Limit);
var orarendiOra = dcp.DalHandler.OrarendiOra().Get(request.OrarendElemUid.Id);
var orarendiOraGroupId = orarendiOra.OrarendiOraGroupId.Value;
var szamonkeresElorejelzesCO = new SzamonkeresElorejelzesCO
{
OrarendiOraGroupId = orarendiOraGroupId,
Datum = request.OrarendElemUid.Datum,
Megnevezes = request.Tema,
SzamonkeresModId = request.ErtekelesMod
};
if (dcp.DalHandler.SzamonkeresElorejelzes().HasSzamonkeresForOrarendiOraGroupId(dcp.TanevId, orarendiOraGroupId))
{
throw new BlException(OrarendResource.SzamonkeresMarRogzitveAzAdottOrahoz, BlExceptionType.ModelValidacio);
}
var szamonkeresElorejelzesHelper = new SzamonkeresElorejelzesHelper(connection);
var tanulokSzamonkeresElorejelzesei = szamonkeresElorejelzesHelper.GetTanulokSzamonkeresElorejelzesei(new SzamonkeresElorejelzesSearchCO
{
OraGroupId = orarendiOraGroupId,
Datum = request.OrarendElemUid.Datum,
NapiSzamonkeresLimit = napiSzamonkeresiLimit,
OsztalyCsoportId = orarendiOra.OsztalyCsoportId,
ErtekelesModokLimithez = ertekelesModokBeallitasaNapiLimithez
});
if (ertekelesModokBeallitasaNapiLimithez.Contains(request.ErtekelesMod) && napiSzamonkeresiLimit > 0 && ertekelesModokBeallitasaNapiLimithez.Count > 0 && limitFigyelmeztetesiTiltasiBeallitas < 3)
{
switch (limitFigyelmeztetesiTiltasiBeallitas)
{
case 1:
if (tanulokSzamonkeresElorejelzesei != null && tanulokSzamonkeresElorejelzesei.Tables.Count > 0 && tanulokSzamonkeresElorejelzesei.Tables[0].Rows.Count > 0)
{
throw new BlException(string.Format(OrarendResource.AMegengedettMennyiseguSzamonkeresMarRogzitesreKerültAzAdottNapra, napiSzamonkeresiLimit), BlExceptionType.ModelValidacio);
}
break;
case 2:
if (tanulokSzamonkeresElorejelzesei != null && tanulokSzamonkeresElorejelzesei.Tables.Count > 0 && tanulokSzamonkeresElorejelzesei.Tables[0].Rows.Count > 0)
{
if (request.ForceSave)
{
szamonkeresElorejelzesHelper.SaveSzamonkeresElorejelzes(szamonkeresElorejelzesCO, dcp.FelhasznaloId, dcp.IntezmenyId);
return;
}
throw new BlException(string.Format(OrarendResource.AMegengedettMennyiseguSzamonkeresMarRogzitesreKerültAzAdottNapraBiztosanRogzitiIgyIsASzamonkerest, napiSzamonkeresiLimit), HttpStatusCode.Conflict);
}
break;
default:
break;
}
}
szamonkeresElorejelzesHelper.SaveSzamonkeresElorejelzes(szamonkeresElorejelzesCO, dcp.FelhasznaloId, dcp.IntezmenyId);
}
internal static IEnumerable<FelmentesResponse> GetFelmentes(DefaultConnectionParameters dcp, int tantargyId)
{
return dcp.DalHandler.Tanulo().GetTanulokFelmentesei(new List<int>(), dcp.TanevId, isFromSzervezet: true, tantargyId: tantargyId).ToDaoList<FelmentesResponseDao>()
.Select(f => new FelmentesResponse
{
TanuloId = f.TanuloId,
TantargyNev = f.TantargyNev,
ErtekelesAloliFelmentes = f.ErtekelesMentesites,
TanoraLatogatasaAloliFelmentes = f.OraMentesites,
SzovegesenErtekelheto = f.SzovegesenErtekelheto,
FelmentesOka = f.FelmentesOka,
FelmentesKezdete = f.FelmentesKezdete,
FelmentesVege = f.FelmentesVege
});
}
private static (DateTime, DateTime, int, int) GetOraAlapadatok(DefaultConnectionParameters dcp, TanuloJelenletRequest request)
{
var oraKezdete = request.OrarendElemUid.Datum;
var oraVege = request.OrarendElemUid.Datum;
var osztalyCsoportId = 0;
var tantargyId = 0;
if (request.OrarendElemUid.Tipus == CalendarOraTypeEnum.OrarendiOra)
{
var orarendiOra = dcp.DalHandler.OrarendiOra().Get(request.OrarendElemUid.Id);
oraKezdete = oraKezdete.AddHours(orarendiOra.OraKezdete.Value.Hour).AddMinutes(orarendiOra.OraKezdete.Value.Minute);
oraVege = oraVege.AddHours(orarendiOra.OraVege.Value.Hour).AddMinutes(orarendiOra.OraVege.Value.Minute);
osztalyCsoportId = orarendiOra.OsztalyCsoportId;
tantargyId = orarendiOra.TantargyId;
}
else if (request.OrarendElemUid.Tipus == CalendarOraTypeEnum.TanitasiOra)
{
var tanitasiOra = dcp.DalHandler.TanitasiOra().Get(request.OrarendElemUid.Id);
oraKezdete = tanitasiOra.OraKezdete;
oraVege = tanitasiOra.OraVege;
osztalyCsoportId = tanitasiOra.OsztalyCsoportId;
tantargyId = tanitasiOra.TantargyId;
}
return (oraKezdete, oraVege, osztalyCsoportId, tantargyId);
}
private static IEnumerable<TanuloJelenletResponse> CheckTanuloJelenlet(IEnumerable<(int tanuloId, int? tantargyId, TanuloMentessegResponse mentessegResponse)> osztalyCsoportTanuloi,
HashSet<Domain.V3.Ora.TanuloJelenletResponse> mulasztasok,
IEnumerable<int> igazolasLista,
List<int> parhuzamosOranNaplozott,
List<int> elozoOranHianyzottTanuloIdList,
List<int> tantargybolElozoOranHianyzottTanuloIdList,
int tantargyId,
bool isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled,
SystemSettingMagantanuloMulasztas magantanuloMulasztasSystemSetting,
bool isNemGyakorlatiTantargyonResztKellVennie,
int alapertelmezettJelenlet)
{
var response = new List<TanuloJelenletResponse>();
foreach (var tanulo in osztalyCsoportTanuloi)
{
var isEnabledHianyzas = true;
var allapot = alapertelmezettJelenlet;
var figyelmeztetoSzovegList = new List<string>();
if (elozoOranHianyzottTanuloIdList.Contains(tanulo.tanuloId))
{
allapot = (int)MulasztasTipusEnum.hianyzas;
}
if (tantargybolElozoOranHianyzottTanuloIdList.Contains(tanulo.tanuloId))
{
figyelmeztetoSzovegList.Add(NaploApiResource.ElozoOranHianyzott);
}
if (igazolasLista.Contains(tanulo.tanuloId))
{
allapot = (int)MulasztasTipusEnum.hianyzas;
figyelmeztetoSzovegList.Add(OrarendResource.ATanulonakVanRogzitveIgazolasa);
}
if (isMulasztasokParhuzamosOraKezelesUtkozesVizsgalatEnabled && parhuzamosOranNaplozott.Contains(tanulo.tanuloId))
{
allapot = (int)MulasztasTipusEnum.ures;
isEnabledHianyzas = false;
figyelmeztetoSzovegList.Add(OrarendResource.ParhuzamosOranMarNaploztak);
}
if (tanulo.mentessegResponse.IsMaganTanulo && magantanuloMulasztasSystemSetting != SystemSettingMagantanuloMulasztas.KotelezoMegjelenie && isNemGyakorlatiTantargyonResztKellVennie)
{
allapot = (int)MulasztasTipusEnum.ures;
isEnabledHianyzas = false;
figyelmeztetoSzovegList.Add(OrarendResource.Magantanulo);
}
if (tanulo.mentessegResponse.TanoraLatogatasaAloliFelmentes && tanulo.tantargyId == tantargyId)
{
allapot = (int)MulasztasTipusEnum.ures;
isEnabledHianyzas = false;
figyelmeztetoSzovegList.Add(tanulo.mentessegResponse.FelmentesOka);
}
if (tanulo.mentessegResponse.ErtekelesAloliFelmentes && tanulo.tantargyId == tantargyId)
{
figyelmeztetoSzovegList.Add(tanulo.mentessegResponse.FelmentesOka);
}
if (tanulo.mentessegResponse.IsSzakmaiGyakorlatonLevo)
{
allapot = (int)MulasztasTipusEnum.ures;
}
if (tanulo.mentessegResponse.IsJogviszonySzunetelteto)
{
allapot = (int)MulasztasTipusEnum.ures;
isEnabledHianyzas = false;
}
var mulasztas = mulasztasok.Where(x => x.TanuloId == tanulo.tanuloId).FirstOrDefault();
if (mulasztas != null)
{
allapot = mulasztas.MulasztasTipus;
}
response.Add(new TanuloJelenletResponse(tanulo.tanuloId, allapot, mulasztas?.Keses, string.Join(" | ", figyelmeztetoSzovegList), isEnabledHianyzas));
}
return response;
}
}
}

View file

@ -0,0 +1,43 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.OsztalyCsoport;
namespace Kreta.Naplo.BusinessLogic.V3.OsztalyCsoport
{
public class OsztalyCsoportFacade : NaploFacade
{
public OsztalyCsoportFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public void CreateOsztalyCsoportErtekeles(List<OsztalyCsoportErtekelesRequest> request)
=> RunSubquery(() => OsztalyCsoportSubqueries.CreateOsztalyCsoportErtekeles(DefaultConnectionParameters, request));
public HashSet<OsztalyCsoportErtekelesekResponse> GetOsztalyCsoportErtekelesek(OsztalyCsoportErtekelesekRequest request)
=> RunSubquery(() => OsztalyCsoportSubqueries.GetOsztalyCsoportErtekelesek(DefaultConnectionParameters, request));
public void TanuloErtekelesMentes(int id, TanuloErtekelesMentesRequest request)
=> RunSubquery(() => OsztalyCsoportSubqueries.TanuloErtekelesMentes(DefaultConnectionParameters, id, request));
public void DeleteOsztalyCsoportErtekeles(int id)
=> RunSubquery(() => OsztalyCsoportSubqueries.DeleteOsztalyCsoportErtekeles(DefaultConnectionParameters, id));
public IEnumerable<OsztalyCsoportTanuloResponse> GetOsztalyCsoportTanuloi(OsztalyCsoportTanuloRequest request)
=> RunSubquery(() => OsztalyCsoportSubqueries.GetOsztalyCsoportTanuloi(DefaultConnectionParameters, request));
public OsztalyCsoportTanuloAdatokResponse GetOsztalyCsoportTanuloAdatok(int id)
=> RunSubquery(() => OsztalyCsoportSubqueries.GetOsztalyCsoportTanuloAdatok(DefaultConnectionParameters, id));
public IEnumerable<MondatbankResponse> GetMondatbank(MondatbankRequest request) => RunSubquery(()
=> OsztalyCsoportSubqueries.GetMondatbank(DefaultConnectionParameters, request));
public IEnumerable<OsztalyokCsoportokResponse> GetOsztalyokCsoportok()
=> RunSubquery(() => OsztalyCsoportSubqueries.GetOsztalyokCsoportok(DefaultConnectionParameters));
public IEnumerable<TanuloErtekelesekResponse> GetTanuloErtekelesei(TanuloErtekelesekRequest request)
=> RunSubquery(() => OsztalyCsoportSubqueries.GetTanuloErtekelesei(DefaultConnectionParameters, request));
public IEnumerable<BejelentettSzamonkeresekResponse> GetBejelentettSzamonkeresek(BejelentettSzamonkeresekRequest request)
=> RunSubquery(() => OsztalyCsoportSubqueries.GetBejelentettSzamonkeresek(DefaultConnectionParameters, request));
}
}

View file

@ -0,0 +1,410 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.MobileApi.Naplo.V3.Co.Ertekeles;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Logic;
using Kreta.BusinessLogic.Logic.TanuloErtekeles;
using Kreta.Core;
using Kreta.Core.ConnectionType;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Core.Validation.Exceptions;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.DataAccessManual.Util;
using Kreta.Enums;
using Kreta.Enums.ManualEnums;
using Kreta.Framework.Entities;
using Kreta.Framework.Util;
using Kreta.Naplo.BusinessLogic.V3.Logic;
using Kreta.Naplo.Dao.V3.Orarend;
using Kreta.Naplo.Dao.V3.OsztalyCsoport;
using Kreta.Naplo.Dao.V3.Tanulo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Enum;
using Kreta.Naplo.Domain.V3.Ertekeles;
using Kreta.Naplo.Domain.V3.OsztalyCsoport;
using Kreta.Resources;
namespace Kreta.Naplo.BusinessLogic.V3.OsztalyCsoport
{
public static class OsztalyCsoportSubqueries
{
internal static void CreateOsztalyCsoportErtekeles(DefaultConnectionParameters dcp, List<OsztalyCsoportErtekelesRequest> request)
{
if (request.Any(r => !r.TanuloLista.Any()))
{
throw new BlException(TanuloErtekelesResource.NincsKitoltveEgyetlenErtekelesSem, BlExceptionType.ModelValidacio);
}
if (IsRequestContainsDuplicatedItem(request))
{
throw new BlException(TanuloErtekelesResource.ErtekelesDuplikalt, BlExceptionType.DuplikaltKulcs);
}
foreach ((var datum, var osztalyCsoportId) in request.Select(x => (x.Datum, x.OsztalyCsoportId)).Distinct())
{
if (!new NaplozarasLogic(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.IsErtekelhetZarastolFuggetlenul(datum, osztalyCsoportId))
{
throw new BlException(TanuloErtekelesResource.ErtekelesNemAdhatoNaplozarasMiatt, BlExceptionType.NaploZaras);
}
}
foreach (var osztalyCsoportErtekeles in request)
{
var tanuloListaCo = osztalyCsoportErtekeles.TanuloLista.Select(x => new TanuloForOsztalyCsoportErtekelesRequestCo
{
Ertekeles = new ErtekelesRequestCo
{
OsztalyzatTipus = x.Ertekeles.OsztalyzatTipus.Uid.Id,
Szazalek = x.Ertekeles.Szazalek,
Szoveg = x.Ertekeles.Szoveg
},
TanuloId = x.TanuloId
}).ToList();
var co = new OsztalyCsoportErtekelesRequestCo
{
Datum = osztalyCsoportErtekeles.Datum.Date,
Mod = osztalyCsoportErtekeles.Mod.Uid.Id,
Tema = osztalyCsoportErtekeles.Tema,
OsztalyCsoportId = osztalyCsoportErtekeles.OsztalyCsoportId,
TantargyId = osztalyCsoportErtekeles.TantargyId,
TanuloLista = tanuloListaCo
};
try
{
new TanuloErtekelesHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.SaveTanuloErtekelesListMobil(dcp.FelhasznaloId, co);
}
catch (BlException exception)
{
throw new BlException(exception.Message, BlExceptionType.ModelValidacio);
}
catch (EntityNotFoundException)
{
throw new BlException(ErrorResource.AzElemNemTalalhatoVagyToroltek, BlExceptionType.ModelValidacio);
}
}
}
internal static IEnumerable<OsztalyCsoportTanuloResponse> GetOsztalyCsoportTanuloi(DefaultConnectionParameters dcp, OsztalyCsoportTanuloRequest request)
{
return dcp.DalHandler.TanuloCsoport().OsztalyTanuloi(dcp.TanevId, new List<int>() { request.OsztalyCsoportId }, datum: request.Datum ?? DateTime.Now)
.ToDaoList<OsztalyCsoportTanuloResponseDao>()
.Select(x => new OsztalyCsoportTanuloResponse { TanuloId = x.Id, TanuloNev = x.Nev, TanuloSzuletesiDatum = x.SzuletesiDatum, TanuloAnyjaNeve = x.AnyjaNeve });
}
private static bool IsRequestContainsDuplicatedItem(List<OsztalyCsoportErtekelesRequest> request)
{
var requestUniqueItems = new HashSet<(DateTime datum, int tantargyId, string tema, int tanuloErtekelesHashCode)>();
foreach (var item in request)
{
var tanuloErtekelesHashCode = item.TanuloLista.Select(x => $"{x.TanuloId} + {x.Ertekeles.OsztalyzatTipus} + {x.Ertekeles.Szazalek} + {x.Ertekeles.Szoveg}")
.Aggregate((a, b) => a + b).GetHashCode();
if (!requestUniqueItems.Add((item.Datum, item.TantargyId, item.Tema, tanuloErtekelesHashCode)))
{
return true;
}
}
return false;
}
internal static HashSet<OsztalyCsoportErtekelesekResponse> GetOsztalyCsoportErtekelesek(DefaultConnectionParameters dcp, OsztalyCsoportErtekelesekRequest request)
{
if (!new NaplozarasLogic(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.IsErtekelhetZarastolFuggetlenul(request.Datum, request.OsztalyCsoportId))
{
throw new BlException(TanuloErtekelesResource.ErtekelesNemAdhatoNaplozarasMiatt, BlExceptionType.NaploZaras);
}
var response = new HashSet<OsztalyCsoportErtekelesekResponse>();
var osztalyCsoportTanuloi = GetOsztalyCsoportTanuloi(dcp, new OsztalyCsoportTanuloRequest { OsztalyCsoportId = request.OsztalyCsoportId });
if (request.TanuloId.HasValue)
{
osztalyCsoportTanuloi = osztalyCsoportTanuloi.Where(t => t.TanuloId == request.TanuloId.Value);
}
var ertekelesekDaoList = dcp.DalHandler.TanuloErtekelesDal().GetErtekelesekDataSet(request.TantargyId, request.OsztalyCsoportId, request.TanuloId)
.ToDaoList<TanuloErtekelesekResponseDao>();
var ertekelesek = FilterErtekelesek(dcp.TanevId, ertekelesekDaoList, ErtekelesLekeresTipusEnum.NemBizonyitvanyErtekelesTipus);
var mentessegekDaoList = dcp.DalHandler.Tanulo().GetMentessegDataSet(request.TantargyId, request.TanuloId, request.Datum).ToDaoList<TanuloMentessegResponseDao>();
if (ertekelesek.Any())
{
var tanuloOrderedGroupedErtekelesek = ertekelesek.GroupBy(e => e.TanuloId);
var tanuloIds = ertekelesek.Select(e => e.TanuloId).Distinct().ToList();
var tantargyiAtlagokDaoList = dcp.DalHandler.TanuloErtekelesDal().GetTantargyiAtlagListDataSet(dcp.TanevId, new List<int> { request.TantargyId }, tanuloIds)
.ToDaoList<TantargyiAtlagResponseDao>();
foreach (var tanuloOrderedGroupedErtekeles in tanuloOrderedGroupedErtekelesek)
{
var legujabbErtekeles = tanuloOrderedGroupedErtekeles.First();
var tanuloMentesseg = mentessegekDaoList.Where(tm => tm.TanuloId == legujabbErtekeles.TanuloId);
response.Add(new OsztalyCsoportErtekelesekResponse
{
TanuloId = legujabbErtekeles.TanuloId,
TanuloErtekelesFelmentes = new TanuloMentessegResponse
{
TanoraLatogatasaAloliFelmentes = tanuloMentesseg.FirstOrDefault()?.TanoraLatogatasaAloliFelmentes ?? false,
ErtekelesAloliFelmentes = tanuloMentesseg.FirstOrDefault()?.ErtekelesAloliFelmentes ?? false,
SzovegesenErtekelheto = tanuloMentesseg.FirstOrDefault()?.SzovegesenErtekelheto ?? false,
FelmentesOka = tanuloMentesseg.FirstOrDefault()?.FelmentesOka
},
TanuloTantargyiAtlag = tantargyiAtlagokDaoList.Where(ta => ta.TanuloId == legujabbErtekeles.TanuloId).Select(ta => ta.SulyozottAtlag).FirstOrDefault(),
TanuloErtekelesSzam = tanuloOrderedGroupedErtekeles.Count(),
TanuloUtolsoErtekeles = new ErtekelesResponse
{
OsztalyzatTipus = legujabbErtekeles.ErtekelesOsztalyzatId,
Szazalek = legujabbErtekeles.ErtekelesSzazalek,
Szoveg = legujabbErtekeles.ErtekelesSzoveg,
TipusId = legujabbErtekeles.TipusId
},
TanuloUtolsoErtekelesDatum = legujabbErtekeles.ErtekelesDatum
});
}
}
var tanulokErtekelesekNelkul = osztalyCsoportTanuloi.Where(t => !response.Select(g => g.TanuloId).Contains(t.TanuloId));
foreach (var tanuloErtekelesNelkul in tanulokErtekelesekNelkul)
{
var tanuloMentesseg = mentessegekDaoList.Where(tm => tm.TanuloId == tanuloErtekelesNelkul.TanuloId);
_ = response.Add(new OsztalyCsoportErtekelesekResponse
{
TanuloId = tanuloErtekelesNelkul.TanuloId,
TanuloErtekelesFelmentes = new TanuloMentessegResponse
{
TanoraLatogatasaAloliFelmentes = tanuloMentesseg.FirstOrDefault()?.TanoraLatogatasaAloliFelmentes ?? false,
ErtekelesAloliFelmentes = tanuloMentesseg.FirstOrDefault()?.ErtekelesAloliFelmentes ?? false,
SzovegesenErtekelheto = tanuloMentesseg.FirstOrDefault()?.SzovegesenErtekelheto ?? false,
FelmentesOka = tanuloMentesseg.FirstOrDefault()?.FelmentesOka
},
TanuloTantargyiAtlag = null,
TanuloErtekelesSzam = 0,
TanuloUtolsoErtekeles = null,
TanuloUtolsoErtekelesDatum = null
});
}
return response;
}
private static List<TanuloErtekelesekResponseDao> FilterErtekelesek(int tanevId, List<TanuloErtekelesekResponseDao> ertekelesekDaoList, ErtekelesLekeresTipusEnum ertekelesTipus)
{
var egyszerAdhatoTanuloErtekelesTipusIdList = EnumExtensions.GetErtekelesTipusDictionaryItems(tanevId, true).Select(x => x.Id).ToList();
switch (ertekelesTipus)
{
case ErtekelesLekeresTipusEnum.NemBizonyitvanyErtekelesTipus:
return ertekelesekDaoList.Where(e => egyszerAdhatoTanuloErtekelesTipusIdList.All(b => b != e.TipusId)).ToList();
case ErtekelesLekeresTipusEnum.BizonyitvanyErtekelesTipus:
return ertekelesekDaoList.Where(e => egyszerAdhatoTanuloErtekelesTipusIdList.Any(b => b == e.TipusId)).ToList();
case ErtekelesLekeresTipusEnum.MindenErtekelesTipus:
return ertekelesekDaoList;
default:
return ertekelesekDaoList;
}
}
internal static void TanuloErtekelesMentes(DefaultConnectionParameters dcp, int id, TanuloErtekelesMentesRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var connectionType = new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler);
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(id);
if (tanuloErtekelesCo != null && tanuloErtekelesCo.ErtekeloId == dcp.FelhasznaloId)
{
if ((tanuloErtekelesCo.OsztalyCsoportId.HasValue && new NaplozarasLogic(connectionType).GetLezartOsztalyokEsBontottCsoportjaik().Contains(tanuloErtekelesCo.OsztalyCsoportId.Value))
|| tanuloErtekelesCo.Datum <= new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetNaplozarasDate(null))
{
throw new BlException(TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemModosithatErtekelestAzOsztalyTanuloinaknak, BlExceptionType.NaploZaras);
}
var tanuloErtekelesCoList = new List<TanuloErtekelesCo>();
tanuloErtekelesCo.Datum = request.ErtekelesDatum;
tanuloErtekelesCo.ErtekelesModId = request.ErtekelesModId;
tanuloErtekelesCo.ErtekelesTema = request.ErtekelesTema;
tanuloErtekelesCo.ErtekelesOsztalyzatId = request.ErtekelesOsztalyzatId;
tanuloErtekelesCo.ErtekelesSzoveg = tanuloErtekelesCo.ErtekelesSzovegFormazott = request.ErtekelesSzoveg;
tanuloErtekelesCo.ErtekelesSzazalek = request.ErtekelesSzazalek;
tanuloErtekelesCoList.Add(tanuloErtekelesCo);
tanuloErtekelesCoList = new TanuloErtekelesValidacioMobil(connectionType).Validate(dcp.DalHandler, tanuloErtekelesCoList, out List<ValidationExceptionItem> errors);
if (errors.Any())
{
throw TanuloErtekelesLogicMobil.GetValidationException(errors);
}
new TanuloErtekelesHelper(connectionType).SaveTanuloErtekelesList(dcp.FelhasznaloId, tanuloErtekelesCoList);
}
else
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
}
internal static void DeleteOsztalyCsoportErtekeles(DefaultConnectionParameters dcp, int id)
{
var connectionType = new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler);
var tanuloErtekelesCo = new TanuloErtekelesHelper(connectionType).GetTanuloErtekelesCoById(id);
var naplozarasLogic = new NaplozarasLogic(connectionType);
if (tanuloErtekelesCo != null && tanuloErtekelesCo.ErtekeloId == dcp.FelhasznaloId)
{
if (naplozarasLogic.IsCsakErtekelesZarasaVagyErtekelesEsNaploZarasaBeallitas() &&
tanuloErtekelesCo.Datum <= new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetNaplozarasDate(null))
{
throw new BlException(TanuloErtekelesResource.AzErtekelesNemTorolhetoErtekelesZarasMiatt, BlExceptionType.NaploZaras);
}
if (tanuloErtekelesCo.OsztalyCsoportId.HasValue && naplozarasLogic.GetLezartOsztalyokEsBontottCsoportjaik().Contains(tanuloErtekelesCo.OsztalyCsoportId.Value))
{
throw new BlException(TanuloErtekelesResource.AKivalasztottOsztalyNaplojaLezartNemTorolhetErtekelestAzOsztalyTanuloinaknak, BlExceptionType.NaploZaras);
}
new TanuloErtekelesHelper(connectionType).DeleteTanuloErtekelesById(id);
}
else
{
throw new BlException(BlExceptionType.NincsJogosultsag);
}
}
internal static OsztalyCsoportTanuloAdatokResponse GetOsztalyCsoportTanuloAdatok(DefaultConnectionParameters dcp, int id)
{
var response = new OsztalyCsoportTanuloAdatokResponse();
var tanuloAdatok = dcp.DalHandler.Tanulo().GetOsztalyCsoportTanuloAdatokDataSet(id).ToDaoList<OsztalyCsoportTanuloAdatokResponseDao>();
var tanuloGondviselok = dcp.DalHandler.Tanulo().GetGondviselok(id, dcp.TanevId).ToDaoList<OsztalyCsoportGondviseloResponseDao>();
return tanuloAdatok.Select(t => new OsztalyCsoportTanuloAdatokResponse
{
TanuloId = t.TanuloId,
TanuloNev = t.TanuloNev,
TanuloSzuletesiDatum = t.TanuloSzuletesiDatum,
TanuloAnyjaNeve = t.TanuloAnyjaNeve,
OsztalyCsoportok = tanuloAdatok.Select(o => new OsztalyCsoportResponse
{
OsztalyCsoportId = o.OsztalyCsoportId,
OsztalyCsoportNev = o.OsztalyCsoportNev
}).ToList(),
Gondviselok = tanuloGondviselok.Select(g => new OsztalyCsoportGondviseloResponse
{
Id = g.GondviseloId,
Nev = g.GondviseloNev,
RokonsagiFok = g.GondviseloRokonsagiFok?.GetDisplayName<RokonsagiFokEnum>(dcp.TanevId),
Telefonszam = g.GondviseloTelefonszam,
Email = g.GondviseloEmail,
IsTorvenyesKepviselo = g.IsTorvenyesKepviselo
}).ToList()
}).First();
}
internal static IEnumerable<MondatbankResponse> GetMondatbank(DefaultConnectionParameters dcp, MondatbankRequest request)
{
var osztalyCsoport = dcp.DalHandler.OsztalyCsoport().Get(request.OsztalyCsoportId);
return dcp.DalHandler.TanuloErtekelesMondatbankDal().GetTanuloErtekelesMondatbankData(dcp.TanevId, (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles, (int)ErtMondatbankTipusEnum.Tantargy, request.TantargyId, osztalyCsoport.EvfolyamTipusa).ToDaoList<MondatbankResponseDao>()
.Select(m => new MondatbankResponse
{
RovidNev = m.RovidNev,
Nev = RichTextLogic.RemoveHtmlForMobile(m.Nev)
});
}
internal static IEnumerable<OsztalyokCsoportokResponse> GetOsztalyokCsoportok(DefaultConnectionParameters dcp)
{
var osztalyCsoportAdatok = dcp.DalHandler.OsztalyCsoport().GetOsztalyCsoportAdatokDataSet().ToDaoList<OsztalyCsoportAdatokResponseDao>();
var tanitottOsztalyokCsoportok = dcp.DalHandler.Foglalkozas().GetTanarFoglalkozasok(dcp.FelhasznaloId, dcp.TanevId)
.Tables[0].Rows.Cast<DataRow>().Select(row => SDAConvert.ToInt32(row["OCSID"])).ToList();
return osztalyCsoportAdatok.Select(ocs => new OsztalyokCsoportokResponse
{
OsztalyCsoportId = ocs.OsztalyCsoportId,
OsztalyCsoportNev = ocs.OsztalyCsoportNev,
IsTanitom = tanitottOsztalyokCsoportok.Contains(ocs.OsztalyCsoportId),
OsztalyfonokCsoportvezetoUid = ocs.OsztalyfonokCsoportvezetoUid,
OsztalyfonokCsoportvezetoNev = ocs.OsztalyfonokCsoportvezetoNev,
OsztalyfonokHelyettesUid = ocs.OsztalyfonokHelyettesUid,
OsztalyfonokHelyettesNev = ocs.OsztalyfonokHelyettesNev
});
}
internal static IEnumerable<TanuloErtekelesekResponse> GetTanuloErtekelesei(DefaultConnectionParameters dcp, TanuloErtekelesekRequest request)
{
var ertekelesek = dcp.DalHandler.TanuloErtekelesDal().GetTanuloErtekeleseiDataSet(request.TanuloId, request.TantargyId, request.OsztalyCsoportId).ToDaoList<TanuloErtekeleseiResponseDao>();
var lezartOsztalyokEsBontottCsoportjaik = new NaplozarasLogic(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetLezartOsztalyokEsBontottCsoportjaik();
var naplozart = lezartOsztalyokEsBontottCsoportjaik.Contains(request.OsztalyCsoportId);
var naplozarasDatum = new DateTime();
if (!naplozart)
{
naplozarasDatum = new OrarendHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetNaplozarasDate(null);
}
return ertekelesek.Select(ertekeles => new TanuloErtekelesekResponse
{
ErtekelesId = ertekeles.ErtekelesId,
TantargyId = ertekeles.TantargyId,
TantargyNev = ertekeles.TantargyNev,
Ertekeles = ertekeles.ErtekelesSzazalek.HasValue ? $"{ertekeles.ErtekelesSzazalek}%" : !string.IsNullOrEmpty(ertekeles.ErtekelesSzoveg) ? ertekeles.ErtekelesSzoveg : ertekeles.ErtekelesOsztalyzatNev,
ErtekelesOsztalyzatId = ertekeles.ErtekelesOsztalyzatId,
ErtekelesOsztalyzatNev = !string.IsNullOrEmpty(ertekeles.ErtekelesOsztalyzatNev) ? ertekeles.ErtekelesOsztalyzatNev : null,
ErtekelesSzoveg = ertekeles.ErtekelesSzovegFormazott ?? ertekeles.ErtekelesSzoveg,
ErtekelesSzazalek = ertekeles.ErtekelesSzazalek,
ErtekelesFajtaId = ertekeles.ErtekelesSzazalek.HasValue ? (int)TanuloErtekelesFajtaEnum.Szazalekos : !string.IsNullOrEmpty(ertekeles.ErtekelesSzoveg) ? (int)TanuloErtekelesFajtaEnum.Szoveges : (int)TanuloErtekelesFajtaEnum.Osztalyzat,
ErtekelesFajtaNev = ertekeles.ErtekelesSzazalek.HasValue ? TanuloErtekelesFajtaEnum.Szazalekos.ToDisplayName() : !string.IsNullOrEmpty(ertekeles.ErtekelesSzoveg) ? TanuloErtekelesFajtaEnum.Szoveges.ToDisplayName() : TanuloErtekelesFajtaEnum.Osztalyzat.ToDisplayName(),
ErtekelesModId = ertekeles.ErtekelesModId,
ErtekelesModNev = ertekeles.ErtekelesModNev,
ErtekelesTipusId = ertekeles.ErtekelesTipusId,
ErtekelesTipusNev = ertekeles.ErtekelesTipusNev,
ErtekelesTema = ertekeles.ErtekelesTema,
ErtekelesDatum = ertekeles.ErtekelesDatum,
ErtekelesSuly = ertekeles.ErtekelesSuly,
ErtekelesRogzitesDatum = ertekeles.ErtekelesRogzitesDatum,
TanarUid = ertekeles.TanarUid,
OsztalyCsoportId = ertekeles.OsztalyCsoportId,
FeladatEllatasiHelyId = ertekeles.FeladatEllatasiHelyId,
FeladatEllatasiHelyNev = ertekeles.MukodesiHelyNev + " - " + ertekeles.OktatasiNevelesiFeladatTipusId.GetItemNameFromCache(dcp.TanevId, dcp.IntezmenyAzonosito),
Naplozart = naplozart || ertekeles.ErtekelesDatum <= naplozarasDatum
});
}
internal static IEnumerable<BejelentettSzamonkeresekResponse> GetBejelentettSzamonkeresek(DefaultConnectionParameters dcp, BejelentettSzamonkeresekRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var response = new HashSet<BejelentettSzamonkeresekResponse>();
var szamonkeresek = dcp.DalHandler.SzamonkeresElorejelzes().GetSzamonkeresElorejelzesDetailDataSet(
dcp.IntezmenyId,
dcp.TanevId,
new SzamonkeresElorejelzesSearchPco
{
OraGroupId = 0,
OsztalyCsoportId = request.OsztalyCsoportId,
Datum = request.Datum
}, true).ToDaoList<BejelentettSzamonkeresekResponseDao>();
foreach (var szamonkeres in szamonkeresek)
{
var bejelentettSzamonkeres = new BejelentettSzamonkeresekResponse
{
Id = szamonkeres.Id,
Tema = szamonkeres.Tema,
ErtekelesMod = szamonkeres.ErtekelesMod,
OraSzam = szamonkeres.OraSzam,
TantargyId = szamonkeres.TantargyId,
TantargyNev = szamonkeres.TantargyNev,
TanarUid = szamonkeres.TanarUid,
TanarNev = szamonkeres.TanarNev
};
response.Add(bejelentettSzamonkeres);
}
return response;
}
}
}

View file

@ -0,0 +1,26 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Tanar;
namespace Kreta.Naplo.BusinessLogic.V3.Tanar
{
public class TanarFacade : NaploFacade
{
public TanarFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public ProfilResponse GetProfil()
=> RunSubquery(() => TanarSubqueries.GetProfil(DefaultConnectionParameters));
public BeallitasokResponse GetBeallitasok()
=> RunSubquery(() => TanarSubqueries.GetBeallitasok(DefaultConnectionParameters));
public void PostBeallitasok(BeallitasokRequest request)
=> RunSubquery(() => TanarSubqueries.PostBeallitasok(DefaultConnectionParameters, request));
public IEnumerable<TantargyFelosztasResponse> GetTantargyFelosztas()
=> RunSubquery(() => TanarSubqueries.GetTantargyFelosztas(DefaultConnectionParameters));
}
}

View file

@ -0,0 +1,67 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.HelperClasses;
using Kreta.BusinessLogic.Helpers;
using Kreta.BusinessLogic.Helpers.SystemSettings;
using Kreta.Core.ConnectionType;
using Kreta.Enums;
using Kreta.Framework.Util;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Tanar;
namespace Kreta.Naplo.BusinessLogic.V3.Tanar
{
internal static class TanarSubqueries
{
internal static ProfilResponse GetProfil(DefaultConnectionParameters dcp)
{
var dataRow = new TanarHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetProfil(dcp.UserIdpUniqueId);
return new ProfilResponse
{
Uid = dcp.UserIdpUniqueId,
Nev = SDAConvert.ToString(dataRow["Nev"]),
IntezmenyNev = SDAConvert.ToString(dataRow["IntezmenyNev"]),
FeladatEllatasiHelyId = SDAConvert.ToInt32(dataRow["FeladatEllatasiHelyId"]),
FeladatEllatasiHelyNev = SDAConvert.ToString(dataRow["MukodesiHelyNev"]) + " - " + SDAConvert.ToInt32(dataRow["OktatasiNevelesiFeladatTipusId"]).GetItemNameFromCache(dcp.TanevId, dcp.IntezmenyAzonosito),
PublikusEmailCim = SDAConvert.ToString(dataRow["PublikusEmailCim"]),
PublikusTelefonszam = SDAConvert.ToString(dataRow["PublikusTelefonszam"]),
MunkahelyiEmailCim = SDAConvert.ToString(dataRow["MunkahelyiEmailCim"]),
MunkahelyiTelefonszam = SDAConvert.ToString(dataRow["MunkahelyiTelefonszam"])
};
}
internal static BeallitasokResponse GetBeallitasok(DefaultConnectionParameters dcp)
{
var systemSettingsHelper = new SystemSettingsHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId));
return new BeallitasokResponse
{
ElozoOranHianyzoAjanlasa = new FelhasznaloHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).GetProfilTipus(dcp.FelhasznaloId, "HianyzokAutoKitoltes"),
NapiSzamonkeresLimit = systemSettingsHelper.GetSystemSettingValue<int>(RendszerBeallitasTipusEnum.Napi_Szamonkeresi_Limit),
LimitaltSzamonkeresekTipusai = systemSettingsHelper.GetSystemSettingValue<List<int>>(RendszerBeallitasTipusEnum.Ertekeles_Modok_Beallitasa_Napi_Limithez)
};
}
internal static void PostBeallitasok(DefaultConnectionParameters dcp, BeallitasokRequest request)
{
new FelhasznaloHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId)).SetProfilTipus(dcp.FelhasznaloId, "HianyzokAutoKitoltes", request.ElozoOranHianyzoAjanlasa);
}
internal static IEnumerable<TantargyFelosztasResponse> GetTantargyFelosztas(DefaultConnectionParameters dcp)
{
return new TantargyFelosztasHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
.GetTantargyFelosztasCoList(new TantargyFelosztasKeresesCo { Tanar = dcp.FelhasznaloId })
.Select(x => new TantargyFelosztasResponse
{
OsztalyCsoportId = x.OsztalyCsoportId,
OsztalyCsoportNev = x.OsztalyCsoportNev,
TantargyId = x.TantargyId,
TantargyNev = x.TantargyNev,
FeladatellatasiHelyId = x.FeladatEllatasihelyId,
FeladatellatasiHely = x.MukodesiHelyNev + " - " + x.OktatasiNevelesiFeladatTipusId.GetItemNameFromCache(dcp.TanevId, dcp.IntezmenyAzonosito)
});
}
}
}

View file

@ -0,0 +1,17 @@
using System.Collections.Generic;
using Kreta.Naplo.BusinessLogic.V3.Naplo;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Tanmenet;
namespace Kreta.Naplo.BusinessLogic.V3.Tanmenet
{
public class TanmenetFacade : NaploFacade
{
public TanmenetFacade(MobileUser mobileUser) : base(mobileUser)
{
}
public IEnumerable<TanmenetItemListResponse> ListTanmenet(TanmenetRequest request)
=> RunSubquery(() => TanmenetSubqueries.ListTanmenet(DefaultConnectionParameters, request));
}
}

View file

@ -0,0 +1,31 @@
using System.Collections.Generic;
using System.Linq;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.Naplo.BusinessLogic.V3.Logic;
using Kreta.Naplo.Dao.V3.Tanmenet;
using Kreta.Naplo.Domain.V3.Common;
using Kreta.Naplo.Domain.V3.Tanmenet;
namespace Kreta.Naplo.BusinessLogic.V3.Tanmenet
{
internal static class TanmenetSubqueries
{
public static IEnumerable<TanmenetItemListResponse> ListTanmenet(DefaultConnectionParameters dcp, TanmenetRequest request)
{
var tanar = new HelyettesitesLogic.Tanar(dcp.FelhasznaloId, dcp.TanevId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, null);
if (request.TanarUid != dcp.UserIdpUniqueId && !tanar.IsHelyettesito(request.OsztalyCsoportId, request.TantargyId))
{
throw new BlException("Nincs jogosultsága, csak a saját vagy helyettesítési tanmenet kérdezhető le!", BlExceptionType.NincsJogosultsag);
}
var response = new List<TanmenetListResponse>();
return dcp.DalHandler.Tanmenet().GetTanmenetek(request.TantargyId, request.OsztalyCsoportId, userIdpUniqueId: request.TanarUid)
.ToDaoList<TanmenetResponseDao>()
.Select(tanmenet => new TanmenetItemListResponse { Id = tanmenet.Id, EvesOraszam = tanmenet.EvesOraszam, Tema = tanmenet.Tema });
}
}
}