init
This commit is contained in:
+18
@@ -0,0 +1,18 @@
|
||||
using System.Collections.Generic;
|
||||
using Kreta.Ellenorzo.BL.VN.Ellenorzo;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.OsztalyAtlag;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.OsztalyAtlag
|
||||
{
|
||||
public class OsztalyAtlagFacade : EllenorzoFacade
|
||||
{
|
||||
public OsztalyAtlagFacade(MobileUser mobileUser) : base(mobileUser)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public HashSet<OsztalyAtlagListResponse> ListAktualisTanuloOsztalyAtlag(OsztalyAtlagListRequest request)
|
||||
=> RunSubquery(() => OsztalyAtlagSubqueries.ListAktualisTanuloOsztalyAtlag(DefaultConnectionParameters, request));
|
||||
}
|
||||
}
|
||||
+105
@@ -0,0 +1,105 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.TantargyiAtlag;
|
||||
using Kreta.Ellenorzo.BL.VN.Felhasznalo.Tanulo;
|
||||
using Kreta.Ellenorzo.BL.VN.Logic;
|
||||
using Kreta.Ellenorzo.BL.VN.OsztalyCsoport;
|
||||
using Kreta.Ellenorzo.BL.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.OsztalyAtlag;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.TantargyiAtlag;
|
||||
using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport;
|
||||
using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport.Osztaly;
|
||||
using Kreta.Ellenorzo.Domain.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Enums.VN;
|
||||
using Kreta.Enums;
|
||||
using Kreta.KretaServer.SystemSettings;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.OsztalyAtlag
|
||||
{
|
||||
internal static class OsztalyAtlagSubqueries
|
||||
{
|
||||
internal static HashSet<OsztalyAtlagListResponse> ListAktualisTanuloOsztalyAtlag(DefaultConnectionParameters dcp, OsztalyAtlagListRequest request)
|
||||
{
|
||||
var result = new HashSet<OsztalyAtlagListResponse>(new OsztalyAtlagListResponse());
|
||||
|
||||
var isOsztalyAtlagMegjelenik = SystemSettingsManager.GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Osztalyatlag_megjelenitese_az_ellenorzo_feluleten, dcp.IntezmenyAzonosito, dcp.TanevId);
|
||||
|
||||
if (!isOsztalyAtlagMegjelenik)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var osztalyCsoportok = OsztalyCsoportSubqueries
|
||||
.ListOsztalyCsoport(dcp, new OsztalyCsoportListRequest
|
||||
{
|
||||
TanuloIds = new List<int> { dcp.TanuloId },
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatUid.Id
|
||||
});
|
||||
|
||||
var aktivOsztalyok = osztalyCsoportok.Where(ocs => ocs.OsztalyCsoportTipus == OsztalyCsoportTipus.Osztaly);
|
||||
|
||||
if (!aktivOsztalyok.Any())
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var osztalyokTanuloi = TanuloSubqueries.ListOsztalyokAktivTanuloIds(dcp, new OsztalyTanuloiListRequest { OsztalyIds = aktivOsztalyok.Select(o => o.Uid.Id).ToList() });
|
||||
|
||||
if (osztalyokTanuloi.Count < 1)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var tanuloAktualisanTanultTantargyai = TantargySubqueries.ListTanuloAktualisanTanultTantargy(dcp, new TanuloAktualisanTanultTantargyListRequest()
|
||||
{
|
||||
TanuloId = dcp.TanuloId,
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatUid.Id,
|
||||
TantargyUids = request.TantargyUids,
|
||||
OsztalyCsoportok = osztalyCsoportok
|
||||
});
|
||||
|
||||
if (tanuloAktualisanTanultTantargyai.Count < 1)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
var tantargyiAtlagokByTanulo = TantargyiAtlagSubqueries.GetTantargyiAtlagByTanulo(dcp,
|
||||
new TantargyiAtlagRequest()
|
||||
{
|
||||
TanuloIds = osztalyokTanuloi,
|
||||
Tantargyak = tanuloAktualisanTanultTantargyai,
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatUid.Id
|
||||
});
|
||||
|
||||
foreach (var tantargy in tanuloAktualisanTanultTantargyai)
|
||||
{
|
||||
tantargyiAtlagokByTanulo.TryGetValue((dcp.TanuloId, tantargy.Uid.Id), out var tanuloAtlagByTantargy);
|
||||
var atlagokByTantargy = tantargyiAtlagokByTanulo.Where(x => x.Key.TantargyId == tantargy.Uid.Id && x.Value.HasValue).Select(x => x.Value.Value).ToList();
|
||||
var osztalyCsoportAtlagByTantargy = atlagokByTantargy.Count > 0 ? AtlagLogic.GetSimpleAtlag(atlagokByTantargy) : (decimal?)null;
|
||||
|
||||
if ((request.IsAtlagNeeded && (tanuloAtlagByTantargy.HasValue || osztalyCsoportAtlagByTantargy.HasValue)) ||
|
||||
!request.IsAtlagNeeded ||
|
||||
tantargy == TantargyLogic.MagatartasTantargy ||
|
||||
tantargy == TantargyLogic.SzorgalomTantargy)
|
||||
{
|
||||
if (!result.Add(new OsztalyAtlagListResponse
|
||||
{
|
||||
OsztalyCsoportAtlag = osztalyCsoportAtlagByTantargy,
|
||||
TanuloAtlag = tanuloAtlagByTantargy,
|
||||
OsztalyCsoportAtlagtolValoElteres = (tanuloAtlagByTantargy ?? 0) - (osztalyCsoportAtlagByTantargy ?? 0),
|
||||
Tantargy = tantargy,
|
||||
Uid = tantargy.Uid.UidRaw
|
||||
}))
|
||||
{
|
||||
throw new BlException(BlExceptionType.DuplikaltKulcs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user