init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -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));
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
using System.Collections.Generic;
|
||||
using Kreta.Core.FeatureToggle;
|
||||
using Kreta.Ellenorzo.BL.VN.Ellenorzo;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.TantargyiAtlag;
|
||||
using Kreta.Ellenorzo.Enums.VN;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.TantargyiAtlag
|
||||
{
|
||||
public class TantargyiAtlagFacade : EllenorzoFacade
|
||||
{
|
||||
private readonly IFeatureContext _featureContext;
|
||||
|
||||
public TantargyiAtlagFacade(MobileUser mobileUser, IFeatureContext featureContext) : base(mobileUser)
|
||||
{
|
||||
_featureContext = featureContext;
|
||||
}
|
||||
|
||||
public List<TantargyiAtlagListResponse> ListAktualisTanuloTantargyiAtlag(TantargyiAtlagListRequest request)
|
||||
=> RunSubquery(() => TantargyiAtlagSubqueries.ListTanuloTantargyiAtlag(DefaultConnectionParameters,
|
||||
new TantargyiAtlagListRequest
|
||||
{
|
||||
OktatasiNevelesiFeladatUid = request.OktatasiNevelesiFeladatUid,
|
||||
IsAtlagAlakulasaIncluded = request.IsAtlagAlakulasaIncluded,
|
||||
TanuloId = DefaultConnectionParameters.TanuloId,
|
||||
ErtekelesekTipus = ErtekelesekTipusEnum.NemBizonyitvanyErtekelesTipus,
|
||||
TantargyUid = request.TantargyUid,
|
||||
IsMobileApiCacheEnabled = _featureContext.IsEnabled(Core.Constants.FeatureName.MobileEllenorzoApiCache)
|
||||
}));
|
||||
}
|
||||
}
|
|
@ -0,0 +1,139 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Caching;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Core.Logic;
|
||||
using Kreta.DataAccessManual.Util;
|
||||
using Kreta.Ellenorzo.BL.VN.Helpers;
|
||||
using Kreta.Ellenorzo.BL.VN.Logic;
|
||||
using Kreta.Ellenorzo.BL.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Dao.VN.Ertekeles.Atlag;
|
||||
using Kreta.Ellenorzo.Domain.VN;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles.Atlag.TantargyiAtlag;
|
||||
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Tanulo;
|
||||
using Kreta.Ellenorzo.Domain.VN.Indexers;
|
||||
using Kreta.Ellenorzo.Domain.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles.Atlag.TantargyiAtlag
|
||||
{
|
||||
internal static class TantargyiAtlagSubqueries
|
||||
{
|
||||
internal static List<TantargyiAtlagListResponse> ListTanuloTantargyiAtlag(DefaultConnectionParameters dcp, TantargyiAtlagListRequest request)
|
||||
{
|
||||
var response = new List<TantargyiAtlagListResponse>();
|
||||
|
||||
var tantargyiAtlagCache = KretaServer.KretaServer.Instance.CacheManager.AquireCacheMobile<TantargyiAtlagCache>();
|
||||
var cacheEnabledAndNotNull = request.IsMobileApiCacheEnabled && tantargyiAtlagCache != null;
|
||||
var kesleltetesBeallitva = new TanuloErtekelesHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler)).GetKesleltetettMegjelenitesOraszam() > 0;
|
||||
|
||||
var tanuloAktualisanTanultTargyai = TantargySubqueries.ListTanuloAktualisanTanultTantargy(dcp, new TanuloAktualisanTanultTantargyListRequest
|
||||
{
|
||||
TanuloId = request.TanuloId,
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatUid?.Id,
|
||||
TantargyUids = request.TantargyUid != null ? new List<TantargyUid> { request.TantargyUid } : null
|
||||
});
|
||||
|
||||
if (cacheEnabledAndNotNull && !kesleltetesBeallitva)
|
||||
{
|
||||
foreach (var tantargy in tanuloAktualisanTanultTargyai)
|
||||
{
|
||||
var tantargyiAtlagFromCache = tantargyiAtlagCache.GetTantargyiAtlag(request.TanuloId, dcp.IntezmenyAzonosito, tantargy.Uid.UidRaw, request.OktatasiNevelesiFeladatUid?.Id);
|
||||
|
||||
if (tantargyiAtlagFromCache != null)
|
||||
{
|
||||
if (tantargyiAtlagFromCache.Tantargy != tantargy)
|
||||
{
|
||||
tantargyiAtlagFromCache.Tantargy = tantargy;
|
||||
tantargyiAtlagCache.AddOrUpdateTantargyiAtlag(request.TanuloId, dcp.IntezmenyAzonosito, tantargy.Uid.UidRaw, request.OktatasiNevelesiFeladatUid?.Id, tantargyiAtlagFromCache);
|
||||
}
|
||||
|
||||
response.Add(tantargyiAtlagFromCache);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var tantargyakNotInCache = tanuloAktualisanTanultTargyai.Except(response.Select(t => t.Tantargy), new TantargyResponse()).ToHashSet(new TantargyResponse());
|
||||
if (tantargyakNotInCache.Any())
|
||||
{
|
||||
foreach (var tanuloTantargyiAtlaggal in GetTantargyiAtlagByTanuloDictionary(dcp, new TantargyiAtlagRequest
|
||||
{
|
||||
TanuloIds = new List<int> { request.TanuloId },
|
||||
Tantargyak = tantargyakNotInCache,
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatUid?.Id,
|
||||
ErtekelesekTipus = request.ErtekelesekTipus
|
||||
}).Where(x => x.Value.Ertekelesek.Count > 0 || x.Key.Tantargy.TantargyInTtf).ToDictionary(p => p.Key, p => p.Value))
|
||||
{
|
||||
_ = tanuloAktualisanTanultTargyai.TryGetValue(new TantargyResponse(tanuloTantargyiAtlaggal.Key.Tantargy.Uid), out var foundTantargy);
|
||||
|
||||
if (foundTantargy == null)
|
||||
{
|
||||
throw new BlException(BlExceptionType.NemLetezoEntitas);
|
||||
}
|
||||
|
||||
var (sulyozottOsztalyzatOsszege, sulyozottOsztalyzatSzama, sulyozottAtlag) = AtlagLogic.GetAtlagTuple(tanuloTantargyiAtlaggal.Value.Ertekelesek);
|
||||
|
||||
var tantargyiAtlag = new TantargyiAtlagListResponse
|
||||
{
|
||||
Tanulo = new TanuloSimplifiedResponse { Uid = new TanuloUid(tanuloTantargyiAtlaggal.Key.TanuloId) },
|
||||
Tantargy = new TantargyResponse(tanuloTantargyiAtlaggal.Key.Tantargy.Uid, foundTantargy.Nev, foundTantargy.Kategoria, foundTantargy.SortIndex),
|
||||
Atlag = sulyozottAtlag,
|
||||
SulyozottOsztalyzatOsszege = sulyozottOsztalyzatOsszege,
|
||||
SulyozottOsztalyzatSzama = sulyozottOsztalyzatSzama,
|
||||
SortIndex = foundTantargy.SortIndex,
|
||||
AtlagAlakulasaIdoFuggvenyeben = request.IsAtlagAlakulasaIncluded ? ErtekelesLogic.GetAtlagAlakulasaIdoFuggvenyeben(tanuloTantargyiAtlaggal.Value) : null
|
||||
};
|
||||
|
||||
response.Add(tantargyiAtlag);
|
||||
|
||||
if (cacheEnabledAndNotNull)
|
||||
{
|
||||
tantargyiAtlagCache.AddOrUpdateTantargyiAtlag(request.TanuloId, dcp.IntezmenyAzonosito, tantargyiAtlag.Tantargy.Uid.UidRaw, request.OktatasiNevelesiFeladatUid?.Id, tantargyiAtlag);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
internal static Dictionary<(int TanuloId, int TantargyId), decimal?> GetTantargyiAtlagByTanulo(DefaultConnectionParameters dcp, TantargyiAtlagRequest request)
|
||||
{
|
||||
return new TanuloErtekelesHelper(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId))
|
||||
.GetTantargyiAtlagListDataSet(request.Tantargyak.Select(t => t.Uid.Id).ToList(), request.TanuloIds, request.OktatasiNevelesiFeladatId)
|
||||
.ToDaoList<TantargyiAtlagResponseDao>()
|
||||
.ToDictionary(tantargyiAtlag => (tantargyiAtlag.TanuloId, tantargyiAtlag.TantargyId), tantargyiAtlag => tantargyiAtlag.SulyozottAtlag);
|
||||
}
|
||||
|
||||
internal static Dictionary<(int TanuloId, TantargyResponse Tantargy), TantargyiAtlagResponse> GetTantargyiAtlagByTanuloDictionary(DefaultConnectionParameters dcp, TantargyiAtlagRequest request)
|
||||
{
|
||||
var ertekelesek = ErtekelesSubqueries.ListErtekeles(dcp, new ErtekelesListRequest
|
||||
{
|
||||
TanuloIds = request.TanuloIds,
|
||||
TantargyUids = new UidsCollection<TantargyUid>(string.Join(Constant.UidDelimiter.ToString(), request.Tantargyak.Select(t => t.Uid.UidRaw)), s_uidConverter),
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatId,
|
||||
ErtekelesekTipus = request.ErtekelesekTipus
|
||||
});
|
||||
|
||||
var tanulokEsTantargyakSzorzat =
|
||||
(from tanulo in request.TanuloIds
|
||||
from tantargy in request.Tantargyak
|
||||
select (tanuloAndTargy: (tanulo, tantargy), tantargyiAtlag: new TantargyiAtlagResponse())).ToDictionary(x => x.tanuloAndTargy, x => x.tantargyiAtlag
|
||||
, new LambdaComparer<(int TanuloId, TantargyResponse Tantargy)>((x, y) => x.TanuloId == y.TanuloId && x.Tantargy.Uid.Equals(y.Tantargy.Uid)));
|
||||
|
||||
foreach (var ertekeles in ertekelesek)
|
||||
{
|
||||
tanulokEsTantargyakSzorzat[(ertekeles.Tanulo.Uid.Id, ertekeles.Tantargy)].Add(ertekeles);
|
||||
}
|
||||
|
||||
return tanulokEsTantargyakSzorzat;
|
||||
}
|
||||
|
||||
private static readonly Converter<string[], TantargyUid> s_uidConverter = uidRaw => new TantargyUid(uidRaw[0]);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,30 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.Ellenorzo.BL.VN.Ellenorzo;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles;
|
||||
using Kreta.Ellenorzo.Enums.VN;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles
|
||||
{
|
||||
public class ErtekelesFacade : EllenorzoFacade
|
||||
{
|
||||
public ErtekelesFacade(MobileUser mobileUser) : base(mobileUser)
|
||||
{
|
||||
}
|
||||
|
||||
public ErtekelesListResponse GetErtekeles(string uid)
|
||||
=> ListTanuloErtekeles(new ErtekelesListRequest(uid, null)
|
||||
{
|
||||
IsCallerGetOnlyOneItem = true
|
||||
}).First();
|
||||
|
||||
public HashSet<ErtekelesListResponse> ListTanuloErtekeles(ErtekelesListRequest request, ErtekelesekTipusEnum ertekelesekTipusEnum = ErtekelesekTipusEnum.MindenErtekelesTipus)
|
||||
=> RunSubquery(() =>
|
||||
{
|
||||
request.TanuloIds = new List<int> { DefaultConnectionParameters.TanuloId };
|
||||
request.ErtekelesekTipus = ertekelesekTipusEnum;
|
||||
return ErtekelesSubqueries.ListErtekeles(DefaultConnectionParameters, request);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,264 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Logic.TanuloErtekeles;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.Core.Logic;
|
||||
using Kreta.DataAccessManual.Util;
|
||||
using Kreta.Ellenorzo.BL.VN.Logic;
|
||||
using Kreta.Ellenorzo.BL.VN.OsztalyCsoport;
|
||||
using Kreta.Ellenorzo.Dao.VN.Ertekeles;
|
||||
using Kreta.Ellenorzo.Domain.VN.Adatszotar;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Ertekeles;
|
||||
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Alkalmazott.Tanar;
|
||||
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Tanulo;
|
||||
using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport;
|
||||
using Kreta.Ellenorzo.Domain.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using ErtekelesErtekFajta = Kreta.Ellenorzo.Enums.VN.ErtekelesErtekFajta;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Ertekeles
|
||||
{
|
||||
internal static class ErtekelesSubqueries
|
||||
{
|
||||
////TODO DevKornél: Refaktorálni!
|
||||
internal static HashSet<ErtekelesListResponse> ListErtekeles(DefaultConnectionParameters dcp, ErtekelesListRequest request)
|
||||
{
|
||||
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
|
||||
|
||||
var response = new HashSet<ErtekelesListResponse>(new ErtekelesListResponse());
|
||||
|
||||
if (request.TanuloIds?.Count < 1 || request.TantargyUids?.Count() < 1)
|
||||
{
|
||||
return response;
|
||||
}
|
||||
|
||||
var helper = new TanuloErtekelesHelper(new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler));
|
||||
|
||||
var tanuloErtekelesei = helper.GetTanuloErtekelesListDataSet(new TanuloErtekelesListCo
|
||||
{
|
||||
Id = request.Uid?.Id,
|
||||
TanevId = dcp.TanevId,
|
||||
TanuloIds = request.TanuloIds,
|
||||
DatumTol = request.DatumTol,
|
||||
DatumIg = request.DatumIg,
|
||||
OktatasiNevelesiFeladatId = request.OktatasiNevelesiFeladatId,
|
||||
TantargyUids = request.TantargyUids?.Select(t => t.UidRaw).ToList(),
|
||||
ErtekelesekTipus = request.ErtekelesekTipus
|
||||
}).Tables[0];
|
||||
|
||||
if (tanuloErtekelesei.Rows.Count > 0)
|
||||
{
|
||||
var osztalyCsoportok = OsztalyCsoportSubqueries.ListOsztalyCsoport(dcp, new OsztalyCsoportListRequest { TanuloIds = request.TanuloIds }).ToList();
|
||||
|
||||
List<(int tanuloId, int feladatKategoriaId, int? evfolyamTipusId)> tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList =
|
||||
osztalyCsoportok.Select(x => (x.TanuloUid.Id, x.OktatasNevelesiKategoria.Uid.Id, x.OktatasNevelesiKategoria == OktNevelesiKategoriaEnum.AlapfokuMuveszetoktatas ? null : x?.EvfolyamTipus.Uid.Id))
|
||||
.Distinct().ToList();
|
||||
|
||||
helper.RemoveMasEvfolyamTanuloErtekelesek(tanuloErtekelesei, tanuloIdAndFeladatKategoriaIdAndEvfolyamTipusIdList);
|
||||
helper.RemoveTanuloJogosultsagMiattiErtekelesek(request.TanuloIds, tanuloErtekelesei);
|
||||
}
|
||||
|
||||
List<int> egyszerAdhatoErtekelesTipusIdList = EnumExtensions.GetErtekelesTipusDictionaryItems(dcp.TanevId, true).Select(x => x.Id).ToList();
|
||||
foreach (var ertekeles in tanuloErtekelesei.ToDaoList<ErtekelesResponseDao>())
|
||||
{
|
||||
var kozos = new ErtekelesListResponse
|
||||
{
|
||||
Uid = new ErtekelesUid(ertekeles.Id, ErtekelesJelleg.Ertekeles),
|
||||
Datum = ertekeles.Datum,
|
||||
Tipus = new Adatszotar<ErtekelesTipusEnum>(ertekeles.TipusId, ertekeles.TipusNeve),
|
||||
KeszitesDatum = ertekeles.RogzitesDatum,
|
||||
SzovegesErtekelesRovidNev = ertekeles.SzovegesErtekelesRovidNev,
|
||||
ErtekeloTanar = new TanarSimplifiedResponse
|
||||
{
|
||||
Uid = new TanarUid(ertekeles.ErtekeloId),
|
||||
Nev = ertekeles.ErtekeloNyomtatasiNev
|
||||
},
|
||||
OsztalyCsoport = new OsztalyCsoportSimplifiedResponse
|
||||
{
|
||||
Uid = new OsztalyCsoportUid(ertekeles.OsztalyCsoportId)
|
||||
},
|
||||
Tanulo = new TanuloSimplifiedResponse { Uid = new TanuloUid(ertekeles.TanuloId) }
|
||||
};
|
||||
|
||||
if (ertekeles.IsMagatartasSzorgalom)
|
||||
{
|
||||
if (request.TantargyUids == null || request.TantargyUids.Contains(new TantargyUid("Magatartas"), new TantargyUid()))
|
||||
{
|
||||
FillUpMagatartas(response, kozos, ertekeles, egyszerAdhatoErtekelesTipusIdList);
|
||||
}
|
||||
if (request.TantargyUids == null || request.TantargyUids.Contains(new TantargyUid("Szorgalom"), new TantargyUid()))
|
||||
{
|
||||
FillUpSzorgalom(response, kozos, ertekeles, egyszerAdhatoErtekelesTipusIdList);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FillUpErtekeles(response, kozos, ertekeles, egyszerAdhatoErtekelesTipusIdList);
|
||||
}
|
||||
}
|
||||
|
||||
var orderedTantargyHashSet = response.Select(x => x.Tantargy).Distinct(new TantargyResponse()).ToHashSet();
|
||||
TantargyLogic.OrderTantargyList(orderedTantargyHashSet, dcp.TanevId);
|
||||
|
||||
foreach (var ertekeles in response)
|
||||
{
|
||||
var index = orderedTantargyHashSet.Single(x => x.Uid.UidRaw == ertekeles.Tantargy.Uid.UidRaw).SortIndex;
|
||||
ertekeles.SortIndex = index;
|
||||
ertekeles.Tantargy.SortIndex = index;
|
||||
}
|
||||
|
||||
IEnumerable<ErtekelesListResponse> filteredResponse = response.Where(x => request.Uid?.Jelleg == null || x.Uid.Jelleg == request.Uid.Jelleg);
|
||||
|
||||
return RequestFilterLogic.CreateUidFilteredListResponse<HashSet<ErtekelesListResponse>, ErtekelesListRequest, ErtekelesUid>(filteredResponse.OrderBy(x => x.SortIndex).ToHashSet(), request);
|
||||
|
||||
void FillUpErtekeles(HashSet<ErtekelesListResponse> listResponse, ErtekelesListResponse kozos, ErtekelesResponseDao ertekeles, List<int> egyszerAdhatoErtekelesTipusIds)
|
||||
{
|
||||
kozos.Mod = kozos.Tipus.Uid.Id == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles ?
|
||||
new Adatszotar<ErtekelesModEnum>(ertekeles.ErtekelesModId ?? 0, ertekeles.ErtekelesModNeve)
|
||||
: null;
|
||||
|
||||
kozos.Tema = string.IsNullOrWhiteSpace(ertekeles.ErtekelesTema) ? null
|
||||
: ertekeles.ErtekelesTema;
|
||||
|
||||
kozos.Tantargy = new TantargyResponse(
|
||||
ertekeles.TantargyId.Value,
|
||||
ertekeles.TantargyNev,
|
||||
ertekeles.SorSzam,
|
||||
new Adatszotar<TargyKategoriaTipusEnum>(ertekeles.TantargyKategoriaId.Value, ertekeles.TantargyKategoriaNeve))
|
||||
{
|
||||
IsFotargy = ertekeles.IsFotargy.Value,
|
||||
FotargyNev = ertekeles.FotargyNev,
|
||||
FotargyKategoriaId = ertekeles.FotargyTantargyKategoriaId
|
||||
};
|
||||
|
||||
var ertekelesOsztalyzatText = ertekeles.ErtekelesOsztalyzatNeve;
|
||||
var ertekelesSzovegText = ertekeles.ErtekelesSzovegFormazott ?? ertekeles.ErtekelesSzoveg;
|
||||
var ertekelesSzazalek = ertekeles.ErtekelesSzazalekErteke;
|
||||
var ertekelesOsztalyzatValue = TanuloErtekelesLogicBase.GetOsztalyzatTextShort(ertekeles.ErtekelesOsztalyzatId, egyszerAdhatoErtekelesTipusIds, true);
|
||||
|
||||
kozos.ErtekFajta = !string.IsNullOrWhiteSpace(ertekelesOsztalyzatText) ? ErtekelesErtekFajta.Osztalyzat
|
||||
: !string.IsNullOrWhiteSpace(ertekelesSzovegText) ? ErtekelesErtekFajta.Szoveges
|
||||
: ertekelesSzazalek != null ? ErtekelesErtekFajta.Szazalekos
|
||||
: ErtekelesErtekFajta.None;
|
||||
|
||||
kozos.SulySzazalekErteke = kozos.ErtekFajta == ErtekelesErtekFajta.Osztalyzat ? ertekeles.ErtekelesSuly.HasValue ? ertekeles.ErtekelesSuly.Value : (int?)100
|
||||
: null;
|
||||
|
||||
kozos.SzovegesErtek = kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Osztalyzat ? ertekelesOsztalyzatText
|
||||
: kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Szoveges ? ertekelesSzovegText
|
||||
: kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Szazalekos ? ertekelesSzazalek + "%"
|
||||
: null;
|
||||
|
||||
kozos.SzamErtek = kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Osztalyzat ? Convert.ToInt32(ertekelesOsztalyzatValue)
|
||||
: kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Szoveges ? null
|
||||
: kozos.ErtekFajta.Uid.Id == (int)ErtekelesErtekFajta.Szazalekos ? Convert.ToInt32(ertekelesSzazalek)
|
||||
: (int?)null;
|
||||
if (!listResponse.Add(kozos))
|
||||
{
|
||||
throw new BlException(BlExceptionType.DuplikaltKulcs);
|
||||
}
|
||||
}
|
||||
|
||||
void FillUpMagatartas(HashSet<ErtekelesListResponse> listResponse, ErtekelesListResponse kozos, ErtekelesResponseDao ertekeles, List<int> egyszerAdhatoErtekelesTipusIds)
|
||||
{
|
||||
var magatartasOsztalyzatText = ertekeles.MagatartasOsztalyzatSzovegesen;
|
||||
var magatartasSzovegText = ertekeles.MagatartasSzovegFormazott;
|
||||
var magatartasErtekText = ertekeles.MagatartasErtekSzovegesen;
|
||||
var magatartasOsztalyzatValue = TanuloErtekelesLogicBase.GetOsztalyzatTextShort(ertekeles.MagatartasOsztalyzatId, egyszerAdhatoErtekelesTipusIds, true);
|
||||
|
||||
int? magatartasFajta = !string.IsNullOrWhiteSpace(magatartasOsztalyzatText) ? (int)ErtekelesErtekFajta.Osztalyzat
|
||||
: !string.IsNullOrWhiteSpace(magatartasSzovegText) ? (int)ErtekelesErtekFajta.Szoveges
|
||||
: !string.IsNullOrWhiteSpace(magatartasErtekText) ? (int)ErtekelesErtekFajta.MagatartasErtek
|
||||
: (int?)null;
|
||||
|
||||
if (magatartasFajta.HasValue)
|
||||
{
|
||||
var magatartasErtekeles = new ErtekelesListResponse(kozos)
|
||||
{
|
||||
ErtekFajta = (ErtekelesErtekFajta)magatartasFajta,
|
||||
Uid = new ErtekelesUid(ertekeles.Id, ErtekelesJelleg.Magatartas),
|
||||
Tantargy = TantargyLogic.MagatartasTantargy
|
||||
};
|
||||
switch (magatartasFajta)
|
||||
{
|
||||
case (int)ErtekelesErtekFajta.Osztalyzat:
|
||||
magatartasErtekeles.SzovegesErtek = magatartasOsztalyzatText;
|
||||
magatartasErtekeles.SzamErtek = Convert.ToInt32(magatartasOsztalyzatValue);
|
||||
break;
|
||||
|
||||
case (int)ErtekelesErtekFajta.Szoveges:
|
||||
magatartasErtekeles.SzovegesErtek = magatartasSzovegText;
|
||||
break;
|
||||
|
||||
case (int)ErtekelesErtekFajta.MagatartasErtek:
|
||||
magatartasErtekeles.SzovegesErtek = magatartasErtekText;
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new BlException(BlExceptionType.ValtozoErtekeNemLehetNull);
|
||||
}
|
||||
|
||||
if (!listResponse.Add(magatartasErtekeles))
|
||||
{
|
||||
throw new BlException(BlExceptionType.DuplikaltKulcs);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FillUpSzorgalom(HashSet<ErtekelesListResponse> listResponse, ErtekelesListResponse kozos, ErtekelesResponseDao ertekeles, List<int> egyszerAdhatoErtekelesTipusIds)
|
||||
{
|
||||
var szorgalomOsztalyzatText = ertekeles.SzorgalomOsztalyzatSzovegesen;
|
||||
var szorgalomSzovegText = ertekeles.SzorgalomSzovegFormazott;
|
||||
var szorgalomErtekText = ertekeles.SzorgalomErtekSzoveges;
|
||||
var szorgalomOsztalyzatValue = TanuloErtekelesLogicBase.GetOsztalyzatTextShort(ertekeles.SzorgalomOsztalyzatId, egyszerAdhatoErtekelesTipusIds, true);
|
||||
|
||||
var szorgalomFajta = !string.IsNullOrWhiteSpace(szorgalomOsztalyzatText) ? (int)ErtekelesErtekFajta.Osztalyzat
|
||||
: !string.IsNullOrWhiteSpace(szorgalomSzovegText) ? (int)ErtekelesErtekFajta.Szoveges
|
||||
: !string.IsNullOrWhiteSpace(szorgalomErtekText) ? (int)ErtekelesErtekFajta.SzorgalomErtek
|
||||
: (int?)null;
|
||||
|
||||
if (szorgalomFajta.HasValue)
|
||||
{
|
||||
var szorgalomErtekeles = new ErtekelesListResponse(kozos)
|
||||
{
|
||||
ErtekFajta = (ErtekelesErtekFajta)szorgalomFajta,
|
||||
Uid = new ErtekelesUid(ertekeles.Id, ErtekelesJelleg.Szorgalom),
|
||||
Tantargy = TantargyLogic.SzorgalomTantargy
|
||||
};
|
||||
switch (szorgalomFajta)
|
||||
{
|
||||
case (int)ErtekelesErtekFajta.Osztalyzat:
|
||||
szorgalomErtekeles.SzovegesErtek = szorgalomOsztalyzatText;
|
||||
szorgalomErtekeles.SzamErtek = Convert.ToInt32(szorgalomOsztalyzatValue);
|
||||
break;
|
||||
|
||||
case (int)ErtekelesErtekFajta.Szoveges:
|
||||
szorgalomErtekeles.SzovegesErtek = szorgalomSzovegText;
|
||||
break;
|
||||
|
||||
case (int)ErtekelesErtekFajta.SzorgalomErtek:
|
||||
szorgalomErtekeles.SzovegesErtek = szorgalomErtekText;
|
||||
break;
|
||||
|
||||
default:
|
||||
throw new BlException(BlExceptionType.ValtozoErtekeNemLehetNull);
|
||||
}
|
||||
|
||||
if (!listResponse.Add(szorgalomErtekeles))
|
||||
{
|
||||
throw new BlException(BlExceptionType.DuplikaltKulcs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue