This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,429 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Helpers;
using Kreta.Enums;
using Kreta.Resources;
using Kreta.Web.Areas.OsztalyCsoport.ModelInterface;
using Kreta.Web.Areas.OsztalyCsoport.Models;
using Kreta.Web.Helpers;
using Kreta.Web.Security;
namespace Kreta.Web.Areas.OsztalyCsoport.Logic
{
public class TanuloBesorolasLogic
{
public static TanuloSorolasModel GenerateTanuloSorolasModel(DataSet ds)
{
List<DateTime> belepesDatumList = new List<DateTime>();
List<TanuloSorolasItemModel> lista = new List<TanuloSorolasItemModel>();
List<TanuloSorolasDateModel> datumLista = new List<TanuloSorolasDateModel>();
foreach (DataRow row in ds.Tables[0].Rows)
{
DateTime tanuloBelepesDatum = row.Field<DateTime>("BelepesDatum");
belepesDatumList.Add(tanuloBelepesDatum);
}
if (belepesDatumList.Count > 0)
{
DateTime? legelsoBelepesDatuma = belepesDatumList.OrderBy(x => x).FirstOrDefault();
TimeSpan ts = DateTime.Now - legelsoBelepesDatuma.Value;
if (ts.Days < 6)
{
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma.Value, ColNumber = 5 });
datumLista.Add(new TanuloSorolasDateModel() { Date = DateTime.Now, ColNumber = 1 });
}
else
{
int day = ts.Days / 6;
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma.Value, ColNumber = 1 });
for (int i = 1; i < 5; i++)
{
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma.Value.AddDays(day * i), ColNumber = 1 });
}
datumLista.Add(new TanuloSorolasDateModel() { Date = DateTime.Now, ColNumber = 1 });
}
foreach (DataRow row in ds.Tables[0].Rows)
{
int tanuloId = row.Field<int>("TanuloId");
string tanuloNev = row.Field<string>("TanuloNev");
DateTime tanuloBelepesDatum = row.Field<DateTime>("BelepesDatum");
DateTime? tanuloKilepesDatum = row.Field<DateTime?>("KilepesDatum");
TanuloSorolasItemModel aktualisTanulo = lista.FirstOrDefault(i => i.Id == tanuloId);
if (aktualisTanulo != null)
{
aktualisTanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = aktualisTanulo.Intervallumok.Last().EndDate,
EndDate = tanuloBelepesDatum,
WidthPercent = 0,
Blank = true
});
aktualisTanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = tanuloBelepesDatum,
EndDate = tanuloKilepesDatum,
WidthPercent = 0,
Blank = false
});
}
else
{
lista.Add(new TanuloSorolasItemModel()
{
Id = tanuloId,
Nev = tanuloNev,
Intervallumok = new List<TanuloSorolasDivModel>
{
// Az első (üres) div tulajdonságai
new TanuloSorolasDivModel
{
StartDate = legelsoBelepesDatuma,
EndDate = tanuloBelepesDatum,
WidthPercent = 0,
Blank = true
},
// Az adattal rendelkező div tulajdonságai
new TanuloSorolasDivModel
{
StartDate = tanuloBelepesDatum,
EndDate = tanuloKilepesDatum,
WidthPercent = 0,
Blank = false
}
}
});
}
}
foreach (TanuloSorolasItemModel tanulo in lista)
{
// Az utolsó (üres) div tulajdonságai
tanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = tanulo.Intervallumok.Last().EndDate,
EndDate = DateTime.Now,
WidthPercent = 0,
Blank = true
});
foreach (TanuloSorolasDivModel div in tanulo.Intervallumok)
{
if (div.StartDate.HasValue && div.EndDate.HasValue)
{
TimeSpan difference = div.EndDate.Value - div.StartDate.Value;
div.WidthPercent = (int)(((double)difference.Days / (double)ts.Days) * 100);
}
if (div.StartDate.HasValue && div.EndDate == null)
{
div.WidthPercent = 100 - tanulo.Intervallumok.Sum(i => i.WidthPercent);
}
}
}
}
return new TanuloSorolasModel { Lista = lista, DatumLista = datumLista };
}
public static TanuloSorolasModel GenerateTanuloSorolasModelCsoportOsztaly(DataSet ds, bool isCsoportView)
{
List<DateTime> belepesDatumList = new List<DateTime>();
List<TanuloSorolasItemModel> lista = new List<TanuloSorolasItemModel>();
List<TanuloSorolasDateModel> datumLista = new List<TanuloSorolasDateModel>();
foreach (DataRow row in ds.Tables[0].Rows)
{
DateTime tanuloBelepesDatum = row.Field<DateTime>("BelepesDatum");
belepesDatumList.Add(tanuloBelepesDatum);
}
if (belepesDatumList.Count > 0)
{
DateTime legelsoBelepesDatuma = belepesDatumList.Min();
DateTime utolsoBelepesDatuma = belepesDatumList.Max();
DateTime vegertek = utolsoBelepesDatuma > DateTime.Now ? utolsoBelepesDatuma.AddDays(1) : DateTime.Now;
TimeSpan ts = vegertek - legelsoBelepesDatuma;
if (ts.Days < 3)
{
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma, ColNumber = 5 });
datumLista.Add(new TanuloSorolasDateModel() { Date = vegertek, ColNumber = 1 });
}
else
{
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma, ColNumber = 2 });
datumLista.Add(new TanuloSorolasDateModel() { Date = legelsoBelepesDatuma.AddDays(ts.Days / 2), ColNumber = 2 });
datumLista.Add(new TanuloSorolasDateModel() { Date = vegertek, ColNumber = 2 });
}
foreach (DataRow row in ds.Tables[0].Rows)
{
int tanuloId = row.Field<int>("TanuloId");
string tanuloNev = row.Field<string>("TanuloNev");
DateTime tanuloBelepesDatum = row.Field<DateTime>("BelepesDatum");
DateTime? tanuloKilepesDatum = row.Field<DateTime?>("KilepesDatum");
var tanuloOsztalyai = row.Field<string>("TanuloOsztalyai")?.TrimStart();
var isDualisCsoportbanTanuloKepzohelyEsAdoszamNelkul = row.Field<int?>("CsoportSzervezetId").HasValue
&& string.IsNullOrEmpty(row.Field<string>("DualisKepzohelyNeve"))
&& string.IsNullOrEmpty(row.Field<string>("DualisKepzohelyAdoszama"));
TanuloSorolasItemModel aktualisTanulo = lista.FirstOrDefault(i => i.Id == tanuloId);
if (aktualisTanulo != null)
{
aktualisTanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = aktualisTanulo.Intervallumok.Last().EndDate,
EndDate = tanuloBelepesDatum,
WidthPercent = 0,
Blank = true
});
aktualisTanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = tanuloBelepesDatum,
EndDate = tanuloKilepesDatum,
WidthPercent = 0,
Blank = false
});
}
else
{
var tanuloSorolasNev = tanuloNev + (isCsoportView ? $" ({tanuloOsztalyai})" : string.Empty);
lista.Add(new TanuloSorolasItemModel()
{
Id = tanuloId,
Nev = tanuloSorolasNev,
IsDualisCsoportbanTanuloKepzohelyEsAdoszamNelkul = isDualisCsoportbanTanuloKepzohelyEsAdoszamNelkul,
Intervallumok = new List<TanuloSorolasDivModel>
{
// Az első (üres) div tulajdonságai
new TanuloSorolasDivModel
{
StartDate = legelsoBelepesDatuma,
EndDate = tanuloBelepesDatum,
WidthPercent = 0,
Blank = true
},
// Az adattal rendelkező div tulajdonságai
new TanuloSorolasDivModel
{
StartDate = tanuloBelepesDatum,
EndDate = tanuloKilepesDatum,
WidthPercent = 0,
Blank = false
}
}
});
}
}
foreach (TanuloSorolasItemModel tanulo in lista)
{
// Az utolsó (üres) div tulajdonságai
tanulo.Intervallumok.Add(new TanuloSorolasDivModel
{
StartDate = tanulo.Intervallumok.Last().EndDate,
EndDate = vegertek,
WidthPercent = 0,
Blank = true
});
foreach (TanuloSorolasDivModel div in tanulo.Intervallumok)
{
if (div.StartDate.HasValue && div.EndDate.HasValue)
{
TimeSpan difference = (div.EndDate.Value > vegertek ? vegertek : div.EndDate.Value) - div.StartDate.Value;
if (difference.Ticks < 0)
{
difference = TimeSpan.Zero;
}
div.WidthPercent = (int)Math.Round((double)difference.Days / (double)ts.Days * 100);
}
if (div.StartDate.HasValue && div.EndDate == null)
{
div.WidthPercent = 100 - tanulo.Intervallumok.Sum(i => i.WidthPercent);
}
}
}
}
return new TanuloSorolasModel { Lista = lista, DatumLista = datumLista };
}
public static System.Web.Http.ModelBinding.ModelStateDictionary CustomValidation(System.Web.Http.ModelBinding.ModelStateDictionary ms, IBesorolasModValidationModel model, bool isOsztaly)
{
const string AlapadatModel = nameof(AlapadatModel);
if (model.BelepesDatum.HasValue && model.KilepesDatum.HasValue && model.BelepesDatum > model.KilepesDatum)
{
ms.AddModelError($"{AlapadatModel}.{nameof(model.KilepesDatum)}", OsztalyCsoportResource.KisorolasDatum);
}
if (model.TanuloCsoportId.HasValue)
{
var tHelper = new TanuloHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType());
var tanuloCsoportCo = tHelper.GetTanuloCsoportById(model.TanuloCsoportId.Value);
var osztalyCsoportbaSorolasHelper = new OsztalyCsoportbaSorolasHelper(ConnectionTypeExtensions.GetSessionConnectionType(), ClaimData.IsSzakkepzoIntezmeny, ClaimData.IsSelectedTanev21_22OrLater, ClaimData.AktivTanevID, ClaimData.KovTanevID);
DateTime? kilepesDatumValidalashoz = model.KilepesDatum;
if (tanuloCsoportCo.KilepDatum.HasValue && !model.KilepesDatum.HasValue)
{
var tanevCo = new TanevHelper(ConnectionTypeExtensions.GetActiveSessionConnectionType()).GetTanevInfo();
kilepesDatumValidalashoz = tanevCo.UtolsoNap;
}
if (model.BelepesDatum != tanuloCsoportCo.BelepDatum)
{
if (isOsztaly)
{
if (!osztalyCsoportbaSorolasHelper.CheckOsztalyBesorolasKezdetModositas(tanuloCsoportCo.ID.Value, model.BelepesDatum.Value, out var errorMessages))
{
errorMessages.ForEach(e => ms.AddModelError($"{AlapadatModel}.{nameof(model.BelepesDatum)}", e));
}
}
else
{
if (!osztalyCsoportbaSorolasHelper.CheckCsoportBesorolasKezdetModositas(tanuloCsoportCo.ID.Value, model.BelepesDatum.Value, out var errorMessages))
{
errorMessages.ForEach(e => ms.AddModelError($"{AlapadatModel}.{nameof(model.BelepesDatum)}", e));
}
}
}
if (kilepesDatumValidalashoz != tanuloCsoportCo.KilepDatum)
{
if (isOsztaly)
{
if (!osztalyCsoportbaSorolasHelper.CheckOsztalyBesorolasVegeModositas(tanuloCsoportCo.ID.Value, kilepesDatumValidalashoz.Value, out var errorMessages))
{
errorMessages.ForEach(e => ms.AddModelError($"{AlapadatModel}.{nameof(model.KilepesDatum)}", e));
}
}
else
{
if (!osztalyCsoportbaSorolasHelper.CheckCsoportBesorolasVegeModositas(tanuloCsoportCo.ID.Value, kilepesDatumValidalashoz.Value, out var errorMessages))
{
errorMessages.ForEach(e => ms.AddModelError($"{AlapadatModel}.{nameof(model.KilepesDatum)}", e));
}
}
}
}
return ms;
}
public static bool TobbesModBelepesDatumValidationIsOk(System.Web.Http.ModelBinding.ModelStateDictionary ms, IBesorolasTobbesModValidationModel model)
{
return !model.BelepesDatum.HasValue || !model.KilepesDatumHelperForValidation.HasValue || model.BelepesDatum <= model.KilepesDatumHelperForValidation;
}
public static void ValidateJegyzekAdatok(BesorolasModAlapadatBaseModel model, System.Web.Http.ModelBinding.ModelStateDictionary modelState)
{
const string AlapadatModel = nameof(AlapadatModel);
if ((model.IsNKTSzakkepzeses || model.IsSzakkepzeses) && model.TanuloId.HasValue && ClaimData.IsSelectedTanev21_22OrLater)
{
var isUjSzktBlokk =
model.AgazatUjSzktTipusId.HasValue && model.AgazatUjSzktTipusId != (int)AgazatUjSzktTipusEnum.na ||
model.SzakmaTipusId.HasValue && model.SzakmaTipusId != (int)SzakmaTipusEnum.na ||
model.SzakmairanyTipusId.HasValue && model.SzakmairanyTipusId != (int)SzakmairanyTipusEnum.na ? 1 : 0;
var isNktBlokk =
model.TanulmanyiTeruletNktTipusId.HasValue && model.TanulmanyiTeruletNktTipusId != (int)TanulmanyiTeruletNktTipusEnum.na ||
model.SzakkepesitesNktTipusId.HasValue && model.SzakkepesitesNktTipusId != (int)SzakkepesitesNktTipusEnum.na ||
model.SzakiranyNktTipusId.HasValue && model.SzakiranyNktTipusId != (int)SzakiranyNktTipusEnum.na ? 1 : 0;
var isRegiSzktBlokk =
model.SzakmacsoportId.HasValue && model.SzakmacsoportId != (int)SzakmacsoportTipusEnum.Na ||
model.AgazatId.HasValue && model.AgazatId != (int)AgazatTipusEnum.Na ||
model.SzakkepesitesId.HasValue && model.SzakkepesitesId != (int)SzakkepesitesTipusEnum.Na ||
model.ReszSzakkepesitesId.HasValue && model.ReszSzakkepesitesId != (int)ReszszakkepesitesTipusEnum.Na ? 1 : 0;
var isUjSzktReszszakmakBlokk = model.AgazatReszSzakmaTipusId != (int)AgazatReszSzakmaTipusEnum.na
|| model.ReszSzakmaTipusId != (int)ReszSzakmaTipusEnum.na ||
model.SzakmaReszSzakmaTipusId != (int)SzakmaReszSzakmaTipusEnum.na ? 1 : 0;
if ((isUjSzktBlokk + isNktBlokk + isRegiSzktBlokk + isUjSzktReszszakmakBlokk) > 1)
{
if (!model.IsUjSzktBlokkAlkalmaz
&& !model.IsNktBlokkAlkalmaz
&& !model.IsRegiSzktBlokkAlkalmaz
&& !model.IsUjSzktReszSzakmakBlokkAlkalmaz)
{
if (isUjSzktBlokk == 1)
{
modelState.AddModelError($"{nameof(AlapadatModel)}.{nameof(model.IsUjSzktBlokkAlkalmaz)}", ErrorResource.JegyzekAdatok1BlokkEngedelyezett);
}
else if (isNktBlokk == 1)
{
modelState.AddModelError($"{nameof(AlapadatModel)}.{nameof(model.IsNktBlokkAlkalmaz)}", ErrorResource.JegyzekAdatok1BlokkEngedelyezett);
}
else if (isRegiSzktBlokk == 1)
{
modelState.AddModelError($"{nameof(AlapadatModel)}.{nameof(model.IsRegiSzktBlokkAlkalmaz)}", ErrorResource.JegyzekAdatok1BlokkEngedelyezett);
}
else if (isUjSzktReszszakmakBlokk == 1)
{
modelState.AddModelError($"{nameof(AlapadatModel)}.{nameof(model.IsUjSzktReszSzakmakBlokkAlkalmaz)}", ErrorResource.JegyzekAdatok1BlokkEngedelyezett);
}
}
else if (model.IsUjSzktBlokkAlkalmaz)
{
SetNktBlokkNa(model);
SetRegiSzktBlokkNa(model);
SetUjSzktReszszakmakBlokkNa(model);
}
else if (model.IsNktBlokkAlkalmaz)
{
SetUjSzktBlokkNa(model);
SetRegiSzktBlokkNa(model);
SetUjSzktReszszakmakBlokkNa(model);
}
else if (model.IsRegiSzktBlokkAlkalmaz)
{
SetNktBlokkNa(model);
SetUjSzktBlokkNa(model);
SetUjSzktReszszakmakBlokkNa(model);
}
else if (model.IsUjSzktReszSzakmakBlokkAlkalmaz)
{
SetNktBlokkNa(model);
SetRegiSzktBlokkNa(model);
SetUjSzktBlokkNa(model);
}
}
}
}
private static void SetUjSzktBlokkNa(BesorolasModAlapadatBaseModel tanuloTanugyAdatok)
{
tanuloTanugyAdatok.AgazatUjSzktTipusId = (int)AgazatUjSzktTipusEnum.na;
tanuloTanugyAdatok.SzakmaTipusId = (int)SzakmaTipusEnum.na;
tanuloTanugyAdatok.SzakmairanyTipusId = (int)SzakmairanyTipusEnum.na;
}
private static void SetNktBlokkNa(BesorolasModAlapadatBaseModel tanuloTanugyAdatok)
{
tanuloTanugyAdatok.TanulmanyiTeruletNktTipusId = (int)TanulmanyiTeruletNktTipusEnum.na;
tanuloTanugyAdatok.SzakkepesitesNktTipusId = (int)SzakkepesitesNktTipusEnum.na;
tanuloTanugyAdatok.SzakiranyNktTipusId = (int)SzakiranyNktTipusEnum.na;
}
private static void SetRegiSzktBlokkNa(BesorolasModAlapadatBaseModel tanuloTanugyAdatok)
{
tanuloTanugyAdatok.SzakmacsoportId = (int)SzakmacsoportTipusEnum.Na;
tanuloTanugyAdatok.AgazatId = (int)AgazatTipusEnum.Na;
tanuloTanugyAdatok.SzakkepesitesId = (int)SzakkepesitesTipusEnum.Na;
tanuloTanugyAdatok.ReszSzakkepesitesId = (int)ReszszakkepesitesTipusEnum.Na;
}
private static void SetUjSzktReszszakmakBlokkNa(BesorolasModAlapadatBaseModel tanuloTanugyAdatok)
{
tanuloTanugyAdatok.SzakmaReszSzakmaTipusId = (int)SzakmaReszSzakmaTipusEnum.na;
tanuloTanugyAdatok.ReszSzakmaTipusId = (int)ReszSzakmaTipusEnum.na;
tanuloTanugyAdatok.AgazatReszSzakmaTipusId = (int)AgazatReszSzakmaTipusEnum.na;
}
}
}