127 lines
7.3 KiB
C#
127 lines
7.3 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|