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(); foreach (var row in ds.Tables["TanuloiAdatok"].AsEnumerable()) { var tanuloCo = new AmiTanuloTorzslapCo(row) { TanevNeve = KozosAdatokCo.TanevNeve, MuveszetiAgId = parameters.MuveszetiAgId, MuveszetiAgNeve = parameters.MuveszetiAgId.GetDisplayName(tanevId), EvfolyamNeve = row.Field("EvfolyamNeve").ReplaceMultipleSpacesAndTrim(), MufajNeve = row.Field("MufajNeve").ReplaceMultipleSpacesAndTrim(), TanszakNeve = row.Field("TanszakNeve").ReplaceMultipleSpacesAndTrim() }; TanuloTorzslapCoList.Add(tanuloCo); } TanuloSniCoList = new List(); foreach (var row in ds.Tables["SNIAdatok"].AsEnumerable()) { var tanuloCo = new TanuloSniCo() { Id = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), KiallitoSzakertoiBizottsagNeve = row.Field("SNIKiallitoIntezmenyNeve").ReplaceMultipleSpacesAndTrim(), KiallitoSzakertoiBizottsagCime = row.Field("SNIKiallitoIntezmenyCime").ReplaceMultipleSpacesAndTrim(), KiallitasDatuma = row.Field("SNIKiallitasKelte"), SzakvelemenySzama = row.Field("SNIOkmanyszamok"), FelulvizsgalatTaneve = row.Field("SNIKontrolIdopont"), }; TanuloSniCoList.Add(tanuloCo); } FoglalkozasiNaploAdatCoList = new List(); foreach (var row in ds.Tables["Naploszamok"].AsEnumerable()) { var foglalkozasiNaploAdatCo = new FoglalkozasiNaploAdatCo() { TanuloId = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), IsOsztalyos = row.Field("IsOsztalyos") == 1, NaploSzam = row.Field("Naploszam").ReplaceMultipleSpacesAndTrim(), TanuloSzam = row.Field("Naplosorszam")?.ToString(), }; FoglalkozasiNaploAdatCoList.Add(foglalkozasiNaploAdatCo); } TanuloFelmentesCoList = new List(); foreach (var row in ds.Tables["Felmentesek"].AsEnumerable()) { var tanuloCo = new TanuloFelmentesCo() { TanuloId = row.Field("TanuloId"), FelmentesOka = row.Field("MentessegOka").ReplaceMultipleSpacesAndTrim(), TantargyNeve = row.Field("TantargyNevMentessegNelkul").ReplaceMultipleSpacesAndTrim(), TanuloCsoportId = row.Field("TanuloCsoportId"), }; TanuloFelmentesCoList.Add(tanuloCo); } TanuloFeljegyzesCoList = new List(); foreach (var row in ds.Tables["Feljegyzesek"].AsEnumerable()) { var tanuloCo = new TanuloFeljegyzesCo() { TanuloIdList = new List { row.Field("TanuloId") }, Tartalom = row.Field("Bejegyzes").ReplaceMultipleSpacesAndTrim(), EsemenyDatuma = row.Field("Datum"), TanuloCsoportId = row.Field("TanuloCsoportId"), }; TanuloFeljegyzesCoList.Add(tanuloCo); } TanuloZaradekCoList = new List(); foreach (var row in ds.Tables["Zaradekok"].AsEnumerable()) { var tanuloCo = new ZaradekCo() { TanuloId = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), KeltezesHelye = row.Field("KeltezesHelye").ReplaceMultipleSpacesAndTrim(), KeltezesDatuma = DateTime.Parse(row.Field("KeltezesDatuma")), ZaradekSzovegList = new List { new ZaradekNyelvCo { NyelvId = (int)AnyanyelvEnum.magyar, Szoveg = row.Field("Bejegyzes").ReplaceMultipleSpacesAndTrim() } }, }; TanuloZaradekCoList.Add(tanuloCo); } TanuloAlapZaroVizsgaAdatokCoList = new List(); foreach (var row in ds.Tables["AlapZarovizsa"].AsEnumerable()) { var tanuloCo = new AlapZaroVizsgaAdatokCo() { TanuloId = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), Ertekeles = row.Field("Ertekeles").ReplaceMultipleSpacesAndTrim(), TipusId = row.Field("TipusId"), KeltezesHelye = KozosAdatokCo.SzekhelyVaros, KeltezesDatuma = parameters.Kelt, OMKod = KozosAdatokCo.OMKod, Datum = row.Field("Datum"), MufajNeve = row.Field("MufajNeve").ReplaceMultipleSpacesAndTrim(), TanszakNeve = row.Field("TanszakNeve").ReplaceMultipleSpacesAndTrim(), MuveszetiAgNeve = row.Field("MuveszetiAgNeve").ReplaceMultipleSpacesAndTrim(), TantargyNeve = row.Field("TantargyNeve").ReplaceMultipleSpacesAndTrim(), }; TanuloAlapZaroVizsgaAdatokCoList.Add(tanuloCo); } TanuloTantargyMulasztasCoList = new List(); foreach (var row in ds.Tables["Mulasztasok"].AsEnumerable()) { var muveszetiAgId = row.Field("MuveszetiAgId"); if ((muveszetiAgId != parameters.MuveszetiAgId) && (muveszetiAgId != null)) { continue; } var tanuloCo = new TanuloTantargyMulasztasCo() { TanuloId = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), TantargyId = row.Field("TantargyId"), IsIgazolt = SDAConvert.ToBooleanFromTF(row.Field("IsIgazolt")), Darab = row.Field("Darab"), }; TanuloTantargyMulasztasCoList.Add(tanuloCo); } TanuloTantargyCoList = new List(); foreach (var row in ds.Tables["Tantargyak"].AsEnumerable()) { var muveszetiAgId = row.Field("MuveszetiAgId"); if ((muveszetiAgId != parameters.MuveszetiAgId) && (muveszetiAgId != null)) { continue; } var isSzorgalom = SDAConvert.ToBooleanFromTF(row.Field("IsSzorgalom")); var tanuloCo = new ZenemuveszetiAgTantargyCo() { Id = row.Field("TantargyId"), TanuloId = row.Field("TanuloId"), TanuloCsoportId = row.Field("TanuloCsoportId"), EvfolyamNeve = row.Field("EvfolyamNeve") ?? (isSzorgalom ? "" : EvfolyamTipusEnum.na.GetDisplayName(tanevId)), IsFotargy = (row.Field("AmiFotargyId") ?? (int)AMIFotargyEnum.Mellektargy) == (int)AMIFotargyEnum.Fotargy, IsSzorgalom = isSzorgalom, IsSzoveges = SDAConvert.ToBooleanFromTF(row.Field("IsSzoveges")), KotelezosegId = row.Field("AmiTantargyKotelezosegId") ?? (int)AMITantargyKotelezosegEnum.SzabadonValaszthato, Nev = row.Field("TantargyNeve").ReplaceMultipleSpacesAndTrim(), Osztalyzat = row.Field("Ertekeles").ReplaceMultipleSpacesAndTrim(), Jeloles = row.Field("Jeloles").ReplaceMultipleSpacesAndTrim(), Sorszam = row.Field("Sorszam"), TagozatNeve = (row.Field("TagozatNeve") ?? (isSzorgalom ? "" : AMITagozatEnum.ATagozat.GetDisplayName(tanevId))).ReplaceMultipleSpacesAndTrim(), MufajNeve = row.Field("MufajNeve").ReplaceMultipleSpacesAndTrim(), TanszakNeve = row.Field("TanszakNeve").ReplaceMultipleSpacesAndTrim(), ErtekelesSzoveg = row.Field("ErtekelesSzoveg").ReplaceMultipleSpacesAndTrim(), OsztalyzatValue = row.Field("ErtekelesValue"), IsAtlagbaNemSzamitBe = SDAConvert.ToBooleanFromTF(row.Field("IsAtlagbaNemSzamitBe")), KapcsolodoFotargyId = row.Field("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 TanuloTorzslapCoList { get; set; } public List TanuloSniCoList { get; set; } public List TanuloFelmentesCoList { get; set; } public List FoglalkozasiNaploAdatCoList { get; set; } public List TanuloFeljegyzesCoList { get; set; } public List TanuloZaradekCoList { get; set; } public List TanuloAlapZaroVizsgaAdatokCoList { get; set; } public List TanuloTantargyCoList { get; set; } public List TanuloTantargyMulasztasCoList { get; set; } } }