kreta/Kreta.BusinessLogic/HelperClasses/AmiTorzslapCOs/AmiTorzslapCo.cs
2024-03-13 00:33:46 +01:00

219 lines
15 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.BusinessLogic.Classes.AsposeHelpers;
using Kreta.Core;
using Kreta.Enums;
using Kreta.Resources;
namespace Kreta.BusinessLogic.HelperClasses.AmiTorzslapCOs
{
public class AmiTorzslapCo
{
public AmiTorzslapCo(DataSet ds, AsposeDocumentParameters parameters, int tanevId)
{
KozosAdatokCo = new KozosAdatokCo(ds.Tables["KozosAdatok"].Rows[0]);
TanuloTorzslapCoList = new List<AmiTanuloTorzslapCo>();
foreach (var row in ds.Tables["TanuloiAdatok"].AsEnumerable())
{
var tanuloCo = new AmiTanuloTorzslapCo(row)
{
TanevNeve = KozosAdatokCo.TanevNeve,
MuveszetiAgId = parameters.MuveszetiAgId,
MuveszetiAgNeve = parameters.MuveszetiAgId.GetDisplayName<MuveszetiAgEnum>(tanevId),
EvfolyamNeve = row.Field<string>("EvfolyamNeve").ReplaceMultipleSpacesAndTrim(),
MufajNeve = row.Field<string>("MufajNeve").ReplaceMultipleSpacesAndTrim(),
TanszakNeve = row.Field<string>("TanszakNeve").ReplaceMultipleSpacesAndTrim()
};
TanuloTorzslapCoList.Add(tanuloCo);
}
TanuloSniCoList = new List<TanuloSniCo>();
foreach (var row in ds.Tables["SNIAdatok"].AsEnumerable())
{
var tanuloCo = new TanuloSniCo()
{
Id = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
KiallitoSzakertoiBizottsagNeve = row.Field<string>("SNIKiallitoIntezmenyNeve").ReplaceMultipleSpacesAndTrim(),
KiallitoSzakertoiBizottsagCime = row.Field<string>("SNIKiallitoIntezmenyCime").ReplaceMultipleSpacesAndTrim(),
KiallitasDatuma = row.Field<DateTime?>("SNIKiallitasKelte"),
SzakvelemenySzama = row.Field<string>("SNIOkmanyszamok"),
FelulvizsgalatTaneve = row.Field<string>("SNIKontrolIdopont"),
};
TanuloSniCoList.Add(tanuloCo);
}
FoglalkozasiNaploAdatCoList = new List<FoglalkozasiNaploAdatCo>();
foreach (var row in ds.Tables["Naploszamok"].AsEnumerable())
{
var foglalkozasiNaploAdatCo = new FoglalkozasiNaploAdatCo()
{
TanuloId = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
IsOsztalyos = row.Field<int>("IsOsztalyos") == 1,
NaploSzam = row.Field<string>("Naploszam").ReplaceMultipleSpacesAndTrim(),
TanuloSzam = row.Field<int?>("Naplosorszam")?.ToString(),
};
FoglalkozasiNaploAdatCoList.Add(foglalkozasiNaploAdatCo);
}
TanuloFelmentesCoList = new List<TanuloFelmentesCo>();
foreach (var row in ds.Tables["Felmentesek"].AsEnumerable())
{
var tanuloCo = new TanuloFelmentesCo()
{
TanuloId = row.Field<int>("TanuloId"),
FelmentesOka = row.Field<string>("MentessegOka").ReplaceMultipleSpacesAndTrim(),
TantargyNeve = row.Field<string>("TantargyNevMentessegNelkul").ReplaceMultipleSpacesAndTrim(),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
};
TanuloFelmentesCoList.Add(tanuloCo);
}
TanuloFeljegyzesCoList = new List<TanuloFeljegyzesCo>();
foreach (var row in ds.Tables["Feljegyzesek"].AsEnumerable())
{
var tanuloCo = new TanuloFeljegyzesCo()
{
TanuloIdList = new List<int> { row.Field<int>("TanuloId") },
Tartalom = row.Field<string>("Bejegyzes").ReplaceMultipleSpacesAndTrim(),
EsemenyDatuma = row.Field<DateTime>("Datum"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
};
TanuloFeljegyzesCoList.Add(tanuloCo);
}
TanuloZaradekCoList = new List<ZaradekCo>();
foreach (var row in ds.Tables["Zaradekok"].AsEnumerable())
{
var tanuloCo = new ZaradekCo()
{
TanuloId = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
KeltezesHelye = row.Field<string>("KeltezesHelye").ReplaceMultipleSpacesAndTrim(),
KeltezesDatuma = DateTime.Parse(row.Field<string>("KeltezesDatuma")),
ZaradekSzovegList = new List<ZaradekNyelvCo> { new ZaradekNyelvCo { NyelvId = (int)AnyanyelvEnum.magyar, Szoveg = row.Field<string>("Bejegyzes").ReplaceMultipleSpacesAndTrim() } },
};
TanuloZaradekCoList.Add(tanuloCo);
}
TanuloAlapZaroVizsgaAdatokCoList = new List<AlapZaroVizsgaAdatokCo>();
foreach (var row in ds.Tables["AlapZarovizsa"].AsEnumerable())
{
var tanuloCo = new AlapZaroVizsgaAdatokCo()
{
TanuloId = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
Ertekeles = row.Field<string>("Ertekeles").ReplaceMultipleSpacesAndTrim(),
TipusId = row.Field<int>("TipusId"),
KeltezesHelye = KozosAdatokCo.SzekhelyVaros,
KeltezesDatuma = parameters.Kelt,
OMKod = KozosAdatokCo.OMKod,
Datum = row.Field<DateTime>("Datum"),
MufajNeve = row.Field<string>("MufajNeve").ReplaceMultipleSpacesAndTrim(),
TanszakNeve = row.Field<string>("TanszakNeve").ReplaceMultipleSpacesAndTrim(),
MuveszetiAgNeve = row.Field<string>("MuveszetiAgNeve").ReplaceMultipleSpacesAndTrim(),
TantargyNeve = row.Field<string>("TantargyNeve").ReplaceMultipleSpacesAndTrim(),
};
TanuloAlapZaroVizsgaAdatokCoList.Add(tanuloCo);
}
TanuloTantargyMulasztasCoList = new List<TanuloTantargyMulasztasCo>();
foreach (var row in ds.Tables["Mulasztasok"].AsEnumerable())
{
var muveszetiAgId = row.Field<int?>("MuveszetiAgId");
if ((muveszetiAgId != parameters.MuveszetiAgId) && (muveszetiAgId != null))
{
continue;
}
var tanuloCo = new TanuloTantargyMulasztasCo()
{
TanuloId = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
TantargyId = row.Field<int>("TantargyId"),
IsIgazolt = SDAConvert.ToBooleanFromTF(row.Field<string>("IsIgazolt")),
Darab = row.Field<int>("Darab"),
};
TanuloTantargyMulasztasCoList.Add(tanuloCo);
}
TanuloTantargyCoList = new List<ZenemuveszetiAgTantargyCo>();
foreach (var row in ds.Tables["Tantargyak"].AsEnumerable())
{
var muveszetiAgId = row.Field<int?>("MuveszetiAgId");
if ((muveszetiAgId != parameters.MuveszetiAgId) && (muveszetiAgId != null))
{
continue;
}
var isSzorgalom = SDAConvert.ToBooleanFromTF(row.Field<string>("IsSzorgalom"));
var tanuloCo = new ZenemuveszetiAgTantargyCo()
{
Id = row.Field<int>("TantargyId"),
TanuloId = row.Field<int>("TanuloId"),
TanuloCsoportId = row.Field<int>("TanuloCsoportId"),
EvfolyamNeve = row.Field<string>("EvfolyamNeve") ?? (isSzorgalom ? "" : EvfolyamTipusEnum.na.GetDisplayName(tanevId)),
IsFotargy = (row.Field<int?>("AmiFotargyId") ?? (int)AMIFotargyEnum.Mellektargy) == (int)AMIFotargyEnum.Fotargy,
IsSzorgalom = isSzorgalom,
IsSzoveges = SDAConvert.ToBooleanFromTF(row.Field<string>("IsSzoveges")),
KotelezosegId = row.Field<int?>("AmiTantargyKotelezosegId") ?? (int)AMITantargyKotelezosegEnum.SzabadonValaszthato,
Nev = row.Field<string>("TantargyNeve").ReplaceMultipleSpacesAndTrim(),
Osztalyzat = row.Field<string>("Ertekeles").ReplaceMultipleSpacesAndTrim(),
Jeloles = row.Field<string>("Jeloles").ReplaceMultipleSpacesAndTrim(),
Sorszam = row.Field<int>("Sorszam"),
TagozatNeve = (row.Field<string>("TagozatNeve") ?? (isSzorgalom ? "" : AMITagozatEnum.ATagozat.GetDisplayName(tanevId))).ReplaceMultipleSpacesAndTrim(),
MufajNeve = row.Field<string>("MufajNeve").ReplaceMultipleSpacesAndTrim(),
TanszakNeve = row.Field<string>("TanszakNeve").ReplaceMultipleSpacesAndTrim(),
ErtekelesSzoveg = row.Field<string>("ErtekelesSzoveg").ReplaceMultipleSpacesAndTrim(),
OsztalyzatValue = row.Field<int?>("ErtekelesValue"),
IsAtlagbaNemSzamitBe = SDAConvert.ToBooleanFromTF(row.Field<string>("IsAtlagbaNemSzamitBe")),
KapcsolodoFotargyId = row.Field<int?>("KapcsolodoFotargyId"),
MuveszetiAgId = muveszetiAgId,
};
tanuloCo.MulasztasIgazolt = isSzorgalom ? (int?)null : TanuloTantargyMulasztasCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId && x.TantargyId == tanuloCo.Id && x.IsIgazolt).Sum(x => x.Darab);
tanuloCo.MulasztasIgazolatlan = isSzorgalom ? (int?)null : TanuloTantargyMulasztasCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId && x.TantargyId == tanuloCo.Id && !x.IsIgazolt).Sum(x => x.Darab);
TanuloTantargyCoList.Add(tanuloCo);
}
foreach (var tanuloCo in TanuloTorzslapCoList)
{
tanuloCo.AlapVizsgaAdatokCos = TanuloAlapZaroVizsgaAdatokCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId && x.TipusId == (int)ErtekelesTipusEnum.muveszeti_alapvizsga).ToList();
tanuloCo.ZaroVizsgaAdatokCos = TanuloAlapZaroVizsgaAdatokCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId && x.TipusId == (int)ErtekelesTipusEnum.muveszeti_zarovizsga).ToList();
tanuloCo.TanuloSniAdatok = TanuloSniCoList.SingleOrDefault(x => x.Id == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId);
tanuloCo.FeljegyzesCos.AddRange(TanuloFeljegyzesCoList.Where(x => x.TanuloIdList.Contains(tanuloCo.TanuloId) && x.TanuloCsoportId == tanuloCo.TanuloCsoportId).ToList());
tanuloCo.FelmentesCos.AddRange(TanuloFelmentesCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId).ToList());
tanuloCo.FoglalkozasiNaploAdatCos.AddRange(FoglalkozasiNaploAdatCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId).ToList());
tanuloCo.ZaradekCos.AddRange(TanuloZaradekCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId).ToList());
tanuloCo.ZenemuveszetiAgTantargyCos.AddRange(TanuloTantargyCoList.Where(x => x.TanuloId == tanuloCo.TanuloId && x.TanuloCsoportId == tanuloCo.TanuloCsoportId));
var fotargyIds = tanuloCo.ZenemuveszetiAgTantargyCos.Where(y => y.IsFotargy && !y.IsSzorgalom).Select(y => y.Id);
// NOTE: főtárgyakhoz tartozó szorgalomnál beállítjuk az IsFotargy-at
tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => x.IsSzorgalom && x.KapcsolodoFotargyId.HasValue && fotargyIds.Contains(x.KapcsolodoFotargyId.Value)).ToList().ForEach(x => x.IsFotargy = true);
var szolfezsIds = tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => x.Nev.ToLower() == AmiTorzslapResource.Szolfezs.ToLower() && !x.IsSzorgalom).Distinct().Select(x => x.Id);
// NOTE: a szolfézs tárgyakhoz tartozó szorgalomnál beállítjuk a kötelezőséget ugyanarra, mint a szolfézs kötelezősége
tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => x.IsSzorgalom && x.KapcsolodoFotargyId.HasValue && szolfezsIds.Contains(x.KapcsolodoFotargyId.Value)).ToList().ForEach(x => { x.KotelezosegId = (tanuloCo.ZenemuveszetiAgTantargyCos.FirstOrDefault(y => y.Id == x.KapcsolodoFotargyId)?.KotelezosegId ?? (int)AMITantargyKotelezosegEnum.SzabadonValaszthato); });
var tobbiTargyIds = tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => !x.IsFotargy && x.Nev.ToLower() != AmiTorzslapResource.Szolfezs.ToLower() && !x.IsSzorgalom).Distinct().Select(x => x.Id);
// NOTE: a többi tárgyhoz tartozó szorgalomnál beállítjuk a kötelezőséget ugyanarra, mint a másik tárgy kötelezősége
tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => x.IsSzorgalom && x.KapcsolodoFotargyId.HasValue && tobbiTargyIds.Contains(x.KapcsolodoFotargyId.Value)).ToList().ForEach(x => { x.KotelezosegId = (tanuloCo.ZenemuveszetiAgTantargyCos.Where(y => y.Id == x.KapcsolodoFotargyId).OrderBy(y => y.KotelezosegId).FirstOrDefault()?.KotelezosegId ?? (int)AMITantargyKotelezosegEnum.SzabadonValaszthato); });
tanuloCo.MufajNeve = tanuloCo.MuveszetiAgId != (int)MuveszetiAgEnum.ZenemuveszetiAg ? string.Empty : tanuloCo.MufajNeve;
tanuloCo.EvfolyamNeve = tanuloCo.EvfolyamNeve == EvfolyamTipusEnum.na.GetDisplayName(tanevId) ? string.Empty : tanuloCo.EvfolyamNeve;
tanuloCo.TanszakNeve = tanuloCo.TanszakNeve == TanszakTipusEnum.na.GetDisplayName(tanevId) ? string.Empty : tanuloCo.TanszakNeve;
var atlagolandoErtekelesek = tanuloCo.ZenemuveszetiAgTantargyCos.Where(x => x.OsztalyzatValue.HasValue && !x.IsAtlagbaNemSzamitBe);
if (atlagolandoErtekelesek.Any())
{
tanuloCo.TanulmanyiAtlag = atlagolandoErtekelesek.Average(x => x.OsztalyzatValue.Value);
}
}
}
public KozosAdatokCo KozosAdatokCo { get; set; }
public List<AmiTanuloTorzslapCo> TanuloTorzslapCoList { get; set; }
public List<TanuloSniCo> TanuloSniCoList { get; set; }
public List<TanuloFelmentesCo> TanuloFelmentesCoList { get; set; }
public List<FoglalkozasiNaploAdatCo> FoglalkozasiNaploAdatCoList { get; set; }
public List<TanuloFeljegyzesCo> TanuloFeljegyzesCoList { get; set; }
public List<ZaradekCo> TanuloZaradekCoList { get; set; }
public List<AlapZaroVizsgaAdatokCo> TanuloAlapZaroVizsgaAdatokCoList { get; set; }
public List<ZenemuveszetiAgTantargyCo> TanuloTantargyCoList { get; set; }
public List<TanuloTantargyMulasztasCo> TanuloTantargyMulasztasCoList { get; set; }
}
}