Files
kreta/Kreta.WebApi/Ellenorzo/Kreta.Ellenorzo.BL/VN/Mulasztas/MulasztasSubqueries.cs
T
2024-03-13 00:33:46 +01:00

95 lines
4.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using Kreta.Core.Enum;
using Kreta.Core.Exceptions;
using Kreta.Core.Logic;
using Kreta.DataAccessManual.ParameterClasses;
using Kreta.Ellenorzo.BL.VN.Logic;
using Kreta.Ellenorzo.Dao.VN.Mulasztas;
using Kreta.Ellenorzo.Domain.VN.Adatszotar;
using Kreta.Ellenorzo.Domain.VN.Common;
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Alkalmazott.Tanar;
using Kreta.Ellenorzo.Domain.VN.Mulasztas;
using Kreta.Ellenorzo.Domain.VN.Ora.TanitasiOra;
using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport;
using Kreta.Ellenorzo.Domain.VN.Tantargy;
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
using Kreta.Ellenorzo.Enums.VN;
using Kreta.Enums;
namespace Kreta.Ellenorzo.BL.VN.Mulasztas
{
internal static class MulasztasSubqueries
{
internal static HashSet<MulasztasListResponse> ListMulasztas(DefaultConnectionParameters dcp, MulasztasListRequest request)
{
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
var response = new HashSet<MulasztasListResponse>(new MulasztasListResponse());
int[] validMulasztasTipusIdLista =
{
(int)MulasztasTipusEnum.keses,
(int)MulasztasTipusEnum.hianyzas
};
MulasztasKeresesePCO mulasztasKeresesePco = new MulasztasKeresesePCO
{
Tol = request.DatumTol,
Ig = request.DatumIg,
TanuloId = dcp.TanuloId,
TanevId = dcp.TanevId,
Id = request.Uid?.Id
};
var tanuloMulasztasai = dcp.DalHandler.MulasztasDal().GetHallgatoMulasztasaiDataSet(mulasztasKeresesePco).ToDaoList<MulasztasResponseDao>();
var tanuloValidMulasztasList =
tanuloMulasztasai.AsEnumerable().Where(mulasztas => Array.IndexOf(validMulasztasTipusIdLista, mulasztas.TipusId) > -1).ToList();
foreach (var tanuloMulasztas in tanuloValidMulasztasList)
{
var mulasztas = new MulasztasListResponse
{
Uid = new MulasztasUid(tanuloMulasztas.Id),
Tipus = new Adatszotar<MulasztasTipusEnum>(tanuloMulasztas.TipusId, tanuloMulasztas.TipusNev),
KesesPercben = tanuloMulasztas.KesesPercben.HasValue ? tanuloMulasztas.KesesPercben : null,
KeszitesDatuma = tanuloMulasztas.KeszitesDatuma,
IgazolasTipusa = tanuloMulasztas.IgazolasTipusId.HasValue ? new Adatszotar<IgazolasTipusEnum>(tanuloMulasztas.IgazolasTipusId.Value, tanuloMulasztas.IgazolasTipusNev) : null,
Tantargy = new TantargyResponse(
tanuloMulasztas.TantargyId,
tanuloMulasztas.TantargyNev,
new Adatszotar<TargyKategoriaTipusEnum>(tanuloMulasztas.TantargyKategoriaId, tanuloMulasztas.TantargyKategoriaNev)),
Mod = tanuloMulasztas.IsTanoraiCeluMulasztas ? MulasztasMod.Tanorai : MulasztasMod.TanoranKivuli,
Datum = tanuloMulasztas.Datum,
Ora = new TanitasiOraResponse
{
Oraszam = tanuloMulasztas.TanitasiOraOraszam.HasValue ? tanuloMulasztas.TanitasiOraOraszam : null,
KezdoDatum = tanuloMulasztas.TanitasiOraKezdoDatum,
VegDatum = tanuloMulasztas.TanitasiOraVegDatum
},
IgazolasAllapota =
tanuloMulasztas.Igazolt.HasValue ?
tanuloMulasztas.Igazolt.Value ? IgazolasAllapota.Igazolt : IgazolasAllapota.Igazolatlan
: IgazolasAllapota.Igazolando,
RogzitoTanar = !tanuloMulasztas.HelyettesitesTipusa.HasValue ?
new TanarSimplifiedResponse { Uid = new TanarUid(tanuloMulasztas.TanarId.Value), Nev = tanuloMulasztas.TanarNev } :
new TanarSimplifiedResponse { Uid = new TanarUid(tanuloMulasztas.HelyettesitoTanarId.Value), Nev = tanuloMulasztas.HelyettesitoTanarNev },
OsztalyCsoport = new OsztalyCsoportSimplifiedResponse
{
Uid = new OsztalyCsoportUid(tanuloMulasztas.OsztalyCsoportId)
}
};
if (!response.Add(mulasztas))
{
throw new BlException(BlExceptionType.DuplikaltKulcs);
}
}
return RequestFilterLogic.CreateUidFilteredListResponse<HashSet<MulasztasListResponse>, MulasztasListRequest, MulasztasUid>(response, request);
}
}
}