init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
|
@ -0,0 +1,266 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using Kreta.BusinessLogic.Classes;
|
||||
using Kreta.BusinessLogic.HelperClasses;
|
||||
using Kreta.BusinessLogic.Helpers;
|
||||
using Kreta.BusinessLogic.Helpers.SystemSettings;
|
||||
using Kreta.Core.ConnectionType;
|
||||
using Kreta.Core.Enum;
|
||||
using Kreta.Core.Exceptions;
|
||||
using Kreta.DataAccess.Interfaces;
|
||||
using Kreta.DataAccessManual.Util;
|
||||
using Kreta.Ellenorzo.BL.VN.Logic;
|
||||
using Kreta.Ellenorzo.BL.VN.Ora;
|
||||
using Kreta.Ellenorzo.Domain.VN.Adatszotar;
|
||||
using Kreta.Ellenorzo.Domain.VN.Common;
|
||||
using Kreta.Ellenorzo.Domain.VN.Csatolmany;
|
||||
using Kreta.Ellenorzo.Domain.VN.Felhasznalo.Alkalmazott.Tanar;
|
||||
using Kreta.Ellenorzo.Domain.VN.Orarend;
|
||||
using Kreta.Ellenorzo.Domain.VN.OsztalyCsoport;
|
||||
using Kreta.Ellenorzo.Domain.VN.Tantargy;
|
||||
using Kreta.Ellenorzo.Domain.VN.Terem;
|
||||
using Kreta.Ellenorzo.Domain.VN.UniqueIdentifier;
|
||||
using Kreta.Enums;
|
||||
using Kreta.Enums.ManualEnums;
|
||||
using Kreta.Web.Logging.Abstractions;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Kreta.Ellenorzo.BL.VN.Orarend
|
||||
{
|
||||
internal static class OrarendSubqueries
|
||||
{
|
||||
internal static HashSet<OrarendElemListResponse> ListOrarend(DefaultConnectionParameters dcp, ITraceLogger logger, OrarendElemListRequest request)
|
||||
{
|
||||
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
|
||||
return ListOrarendElemek(dcp, logger, request.DatumTol, request.DatumIg);
|
||||
}
|
||||
|
||||
internal static OrarendElemListResponse GetOrarendElem(DefaultConnectionParameters dcp, ITraceLogger logger, OrarendElemGetRequest request)
|
||||
{
|
||||
new ValidatorLogic(request).ThrowExceptionIfModelIsNotvalid();
|
||||
|
||||
return ListOrarendElemek(dcp, logger, request.OrarendElemUid.Datum, request.OrarendElemUid.Datum, request.OrarendElemUid.Id, request.OrarendElemUid.Tipus).FirstOrDefault() ??
|
||||
throw new BlException(BlExceptionType.NemLetezoEntitas);
|
||||
}
|
||||
|
||||
private static HashSet<OrarendElemListResponse> ListOrarendElemek(DefaultConnectionParameters dcp, ITraceLogger logger, DateTime datumTol, DateTime datumIg, int? orarendElemId = null, CalendarOraTypeEnum? orarendElemTipus = null)
|
||||
{
|
||||
var response = new HashSet<OrarendElemListResponse>(new OrarendElemListResponse());
|
||||
|
||||
var orarend = dcp.DalHandler.OrarendiOra().GetOrarendForMobile(
|
||||
dcp.IntezmenyId,
|
||||
dcp.TanevId,
|
||||
datumTol,
|
||||
datumIg.AddDays(1), /// HACK @DevKornél: DatumIg+1 nap, hogy a filter zárt intervallumot határozzon meg
|
||||
null,
|
||||
null,
|
||||
dcp.TanuloId,
|
||||
false,
|
||||
OrarendTipusEnum.Minden,
|
||||
null,
|
||||
null,
|
||||
false,
|
||||
null);
|
||||
|
||||
/// KRETA2-3484 miatt
|
||||
//var torolhetoSorok = orarend.Tables[0].AsEnumerable().Where(r => r.Field<bool>("Ures_BOOL")).ToList();
|
||||
|
||||
//foreach (var torolhetoSor in torolhetoSorok)
|
||||
//{
|
||||
// orarend.Tables[0].Rows.Remove(torolhetoSor);
|
||||
//}
|
||||
var connection = new DalHandlerConnectionType(new MobileConnectionType(dcp.FelhasznaloId, dcp.IntezmenyId, dcp.IntezmenyAzonosito, dcp.TanevId), dcp.DalHandler);
|
||||
var feladatok = new DktFeladatHelper(connection).GetFeladatokByDateRange(datumTol, datumIg, true);
|
||||
|
||||
IEnumerable<OrarendCO.ExtendedEvent> tanuloOraLista = new OrarendHelper(connection).GetTanuloOrarendDataForMobile(
|
||||
orarend,
|
||||
datumTol,
|
||||
datumIg,
|
||||
dcp.TanuloId,
|
||||
haziFeladatok: feladatok.Where(f => f.FeladatTipusId == (int)FeladatTipusEnum.HaziFeladat));
|
||||
|
||||
if (orarendElemId.HasValue && orarendElemTipus.HasValue)
|
||||
{
|
||||
tanuloOraLista = tanuloOraLista.Where(x => x.id == orarendElemId && x.oraType == orarendElemTipus && x.datum == datumTol);
|
||||
}
|
||||
|
||||
var tanuloOraListaTanevRendjeEsemenyekNelkul = tanuloOraLista.Where(x => !x.allDay); ///tanévrendje események skip
|
||||
var isTanoraTemaAzEllenorzobenLathato = new SystemSettingsHelper(connection).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.Tanora_Tema_Az_Ellenorzoben);
|
||||
|
||||
FillUpTanuloOrai();
|
||||
FillUpTanevRendjeEsemenyek();
|
||||
|
||||
var feladatokTipusSzerint = GetFeladatokTipusSzerint(feladatok);
|
||||
|
||||
foreach (var tanuloOraja in response.Where(o => !o.IsTanevRendjeEsemeny))
|
||||
{
|
||||
if (feladatokTipusSzerint[FeladatTipusEnum.HaziFeladat].Any() && tanuloOraja.HasHaziFeladat)
|
||||
{
|
||||
var haziFeladat = feladatokTipusSzerint[FeladatTipusEnum.HaziFeladat].Where(x =>
|
||||
x.TantargyId == tanuloOraja.Tantargy.Uid.Id &&
|
||||
x.OsztalyCsoportId == tanuloOraja.OsztalyCsoport.Uid.Id &&
|
||||
x.Datum == tanuloOraja.Uid.Datum &&
|
||||
((x.Oraszam.HasValue && tanuloOraja.Oraszam.HasValue && x.Oraszam.Value == tanuloOraja.Oraszam.Value) || (x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == tanuloOraja.KezdetIdopont.TimeOfDay)))
|
||||
.Select(y => y.ID).FirstOrDefault();
|
||||
tanuloOraja.HaziFeladatUid = new HaziFeladatUid(haziFeladat);
|
||||
}
|
||||
if (feladatokTipusSzerint[FeladatTipusEnum.OraiFeladat].Any())
|
||||
{
|
||||
var oraiFeladatGuid = feladatokTipusSzerint[FeladatTipusEnum.OraiFeladat].Where(x =>
|
||||
x.TantargyId == tanuloOraja.Tantargy.Uid.Id &&
|
||||
x.OsztalyCsoportId == tanuloOraja.OsztalyCsoport.Uid.Id &&
|
||||
x.Datum == tanuloOraja.Uid.Datum &&
|
||||
((x.Oraszam.HasValue && tanuloOraja.Oraszam.HasValue && x.Oraszam.Value == tanuloOraja.Oraszam.Value) || (x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == tanuloOraja.KezdetIdopont.TimeOfDay)))
|
||||
.Select(y => y.GroupId).FirstOrDefault();
|
||||
if (oraiFeladatGuid.HasValue)
|
||||
{
|
||||
tanuloOraja.FeladatGroupUid = new OraiFeladatGroupUid(SDAConvert.ToGuid(oraiFeladatGuid));
|
||||
}
|
||||
}
|
||||
if (feladatokTipusSzerint[FeladatTipusEnum.NyelviFeladat].Any())
|
||||
{
|
||||
var nyelviFeladatGuid = feladatokTipusSzerint[FeladatTipusEnum.NyelviFeladat].Where(x =>
|
||||
x.TantargyId == tanuloOraja.Tantargy.Uid.Id &&
|
||||
x.OsztalyCsoportId == tanuloOraja.OsztalyCsoport.Uid.Id &&
|
||||
x.Datum == tanuloOraja.Uid.Datum &&
|
||||
((x.Oraszam.HasValue && tanuloOraja.Oraszam.HasValue && x.Oraszam.Value == tanuloOraja.Oraszam.Value) || (x.Idopont.HasValue && x.Idopont.Value.TimeOfDay == tanuloOraja.KezdetIdopont.TimeOfDay)))
|
||||
.Select(y => y.GroupId).FirstOrDefault();
|
||||
if (nyelviFeladatGuid.HasValue)
|
||||
{
|
||||
tanuloOraja.NyelviFeladatGroupUid = new NyelviFeladatGroupUid(SDAConvert.ToGuid(nyelviFeladatGuid));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return response;
|
||||
|
||||
void FillUpTanuloOrai()
|
||||
{
|
||||
var helper = new TanoraHelper(connection);
|
||||
var oraFiles = CsatolmanySubqueries.ListCsatolmanyok(dcp, new CsatolmanyListRequest
|
||||
{
|
||||
DatumTol = datumTol,
|
||||
DatumIg = datumIg,
|
||||
OrarendElemUids = tanuloOraListaTanevRendjeEsemenyekNelkul.Select(o => new OrarendElemUid(o.id, o.oraType, o.datum.Value)
|
||||
{
|
||||
OrarendiOraId = o.OrarendiOraId ?? 0,
|
||||
OrarendiOraGroupId = o.OrarendiOraGroupId ?? 0
|
||||
})
|
||||
});
|
||||
|
||||
var helyettesitesLathatosagaAzEllenorzoben = new SystemSettingsHelper(connection).GetSystemSettingValue<bool>(RendszerBeallitasTipusEnum.helyettesites_lathatosaga_az_ellenorzoben);
|
||||
|
||||
var orakAdatai = orarend.Tables[0].Rows.Cast<DataRow>().Select(row => new
|
||||
{
|
||||
TantargyId = SDAConvert.ToInt32(row["TantargyId"], -1),
|
||||
OsztalyCsoportId = SDAConvert.ToInt32(row["OsztCsopId"]),
|
||||
TanarId = SDAConvert.ToInt32(row["TanarID"]),
|
||||
OraKezdete = Convert.ToDateTime(row["OraKezdete"])
|
||||
});
|
||||
var elozoOrakAdatai = new OrarendiOraHelper(connection).GetElozoOrakAdatai(JsonConvert.SerializeObject(orakAdatai));
|
||||
|
||||
foreach (var tanuloOraja in tanuloOraListaTanevRendjeEsemenyekNelkul)
|
||||
{
|
||||
var responseItem = new OrarendElemListResponse
|
||||
{
|
||||
Uid = new OrarendElemUid(tanuloOraja.id, tanuloOraja.oraType, tanuloOraja.datum.Value),
|
||||
OrarendiOraUid = new OrarendElemUid(tanuloOraja.OrarendiOraId ?? tanuloOraja.OrarendiOraGroupId ?? 0, CalendarOraTypeEnum.OrarendiOra, tanuloOraja.datum.Value),
|
||||
Oraszam = tanuloOraja.hanyadikora,
|
||||
KezdetIdopont = tanuloOraja.start.Value,
|
||||
VegIdopont = tanuloOraja.end.Value,
|
||||
Tema = isTanoraTemaAzEllenorzobenLathato && !string.IsNullOrWhiteSpace(tanuloOraja.Tema) ? tanuloOraja.Tema : null,
|
||||
TanuloJelenlet = tanuloOraja.TanuloJelenlet != 0 ? (int?)tanuloOraja.TanuloJelenlet : null,
|
||||
Allapot = (int)tanuloOraja.OraAllapota,
|
||||
IsTanevRendjeEsemeny = tanuloOraja.allDay
|
||||
};
|
||||
|
||||
responseItem.BejelentettSzamonkeresUid = tanuloOraja.hasBejelentettSzamonkeres ? new BejelentettSzamonkeresUid(tanuloOraja.BejelentettSzamonkeresIdList[0]) : null;
|
||||
responseItem.Tantargy = new TantargyResponse(
|
||||
tanuloOraja.TantargyId,
|
||||
tanuloOraja.TantargyTeljesNev, /// Ha ki van töltve a tantárgy rövid neve, akkor az kerül bele, egyébként a teljes neve
|
||||
new Adatszotar<TargyKategoriaTipusEnum>(tanuloOraja.TantargyKategoriaId, tanuloOraja.TantargyKategoria));
|
||||
responseItem.OsztalyCsoport = new OsztalyCsoportResponse { Uid = new OsztalyCsoportUid(tanuloOraja.TanevRendOsztalyCsoportId), Nev = tanuloOraja.OsztalyCsoport };
|
||||
responseItem.Terem = new TeremSimplifiedResponse { Nev = tanuloOraja.Terem };
|
||||
responseItem.OratTartoTanar = new TanarSimplifiedResponse { Nev = tanuloOraja.TanarNev };
|
||||
responseItem.HelyettesTanar = new TanarSimplifiedResponse { Nev = string.IsNullOrWhiteSpace(tanuloOraja.HelyettesNev) || !helyettesitesLathatosagaAzEllenorzoben ? null : tanuloOraja.HelyettesNev };
|
||||
responseItem.HasHaziFeladat = tanuloOraja.hasHaziFeladat;
|
||||
responseItem.Csatolmanyok = oraFiles[responseItem.Uid];
|
||||
responseItem.IsDigitalisOra = tanuloOraja.IsDigitalisOra;
|
||||
responseItem.DigitalisEszkozTipus = tanuloOraja.DigitalisEszkozTipus;
|
||||
responseItem.DigitalisPlatformTipus = tanuloOraja.DigitalisPlatformTipus;
|
||||
responseItem.DigitalisTamogatoEszkozTipusList = tanuloOraja.DigitalisTamogatoEszkozTipusList;
|
||||
responseItem.Letrehozas = tanuloOraja.Letrehozas;
|
||||
responseItem.UtolsoModositas = tanuloOraja.UtolsoModositas;
|
||||
|
||||
if (tanuloOraja.isElmaradt)
|
||||
{
|
||||
responseItem.OraEvesSorszama = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
responseItem.OraEvesSorszama = tanuloOraja.EvesOraSorszam;
|
||||
if (tanuloOraja.OraAllapota == TanoraAllapotaEnum.Nem_naplozott)
|
||||
{
|
||||
responseItem.OraEvesSorszama = (int.TryParse(elozoOrakAdatai.FirstOrDefault(o => o.TantargyId == tanuloOraja.TantargyId && o.OsztalyCsoportId == tanuloOraja.TanevRendOsztalyCsoportId && o.TanarId == tanuloOraja.TanarId && o.OraKezdete == tanuloOraja.start.Value)?.ElozoOraEvesSorszama, out var oraszam) ? oraszam : default) + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (!response.Add(responseItem))
|
||||
{
|
||||
logger.Warn($"OrarendElemResponse: OrarendElem duplikált. {JsonConvert.SerializeObject(responseItem)}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FillUpTanevRendjeEsemenyek()
|
||||
{
|
||||
foreach (var tanuloOraja in tanuloOraLista.Where(x => x.allDay))
|
||||
{
|
||||
var responseItem = new OrarendElemListResponse
|
||||
{
|
||||
Uid = new OrarendElemUid(tanuloOraja.id, tanuloOraja.oraType, new DateTime(tanuloOraja.start.Value.Year, tanuloOraja.start.Value.Month, tanuloOraja.start.Value.Day)),
|
||||
KezdetIdopont = tanuloOraja.start.Value,
|
||||
VegIdopont = tanuloOraja.end.Value,
|
||||
TanuloJelenlet = tanuloOraja.TanuloJelenlet != 0 ? (int?)tanuloOraja.TanuloJelenlet : null,
|
||||
Allapot = (int)TanoraAllapotaEnum.TanevRendjeEsemeny,
|
||||
IsTanevRendjeEsemeny = tanuloOraja.allDay,
|
||||
TanevRendjeEsemenyNeve = tanuloOraja.title,
|
||||
Csatolmanyok = new List<CsatolmanySimplifiedResponse>()
|
||||
};
|
||||
|
||||
if (!response.Add(responseItem))
|
||||
{
|
||||
throw new BlException(BlExceptionType.DuplikaltKulcs);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Dictionary<FeladatTipusEnum, List<IDKT_Feladat>> GetFeladatokTipusSzerint(List<IDKT_Feladat> feladatok)
|
||||
{
|
||||
var feladatokTipusSzerint = new Dictionary<FeladatTipusEnum, List<IDKT_Feladat>> {
|
||||
{ FeladatTipusEnum.HaziFeladat, new List<IDKT_Feladat>() },
|
||||
{ FeladatTipusEnum.OraiFeladat, new List<IDKT_Feladat>() },
|
||||
{ FeladatTipusEnum.NyelviFeladat, new List<IDKT_Feladat>() }
|
||||
};
|
||||
foreach (var feladat in feladatok)
|
||||
{
|
||||
if (feladat.FeladatTipusId == (int)FeladatTipusEnum.HaziFeladat)
|
||||
{
|
||||
feladatokTipusSzerint[FeladatTipusEnum.HaziFeladat].Add(feladat);
|
||||
}
|
||||
else if (feladat.FeladatTipusId == (int)FeladatTipusEnum.OraiFeladat)
|
||||
{
|
||||
feladatokTipusSzerint[FeladatTipusEnum.OraiFeladat].Add(feladat);
|
||||
}
|
||||
else if (feladat.FeladatTipusId == (int)FeladatTipusEnum.NyelviFeladat)
|
||||
{
|
||||
feladatokTipusSzerint[FeladatTipusEnum.NyelviFeladat].Add(feladat);
|
||||
}
|
||||
}
|
||||
return feladatokTipusSzerint;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue