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 ListMulasztas(DefaultConnectionParameters dcp, MulasztasListRequest request) { new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid(); var response = new HashSet(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(); 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(tanuloMulasztas.TipusId, tanuloMulasztas.TipusNev), KesesPercben = tanuloMulasztas.KesesPercben.HasValue ? tanuloMulasztas.KesesPercben : null, KeszitesDatuma = tanuloMulasztas.KeszitesDatuma, IgazolasTipusa = tanuloMulasztas.IgazolasTipusId.HasValue ? new Adatszotar(tanuloMulasztas.IgazolasTipusId.Value, tanuloMulasztas.IgazolasTipusNev) : null, Tantargy = new TantargyResponse( tanuloMulasztas.TantargyId, tanuloMulasztas.TantargyNev, new Adatszotar(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, MulasztasListRequest, MulasztasUid>(response, request); } } }