init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue