using System; using System.Collections.Generic; using System.Data; using System.Linq; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.BusinessLogic.Utils; using Kreta.Core; using Kreta.Core.ConnectionType; using Kreta.DataAccess.Interfaces; using Kreta.DataAccessManual; using Kreta.DataAccessManual.Interfaces; using Kreta.Enums; using Kreta.Resources; namespace Kreta.BusinessLogic.Helpers { public class ErettsegiEredmenyekHelper : LogicBase { public ErettsegiEredmenyekHelper(IConnectionType connectionType) : base(connectionType) { } public DataSet GetErettsegiEredmenyekGrid(int osztalyId) { var erettsegiEredmenyek = Dal.CustomConnection.Run(ConnectionType, h => { var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekData(osztalyId); return result; }); var dt = erettsegiEredmenyek.Tables[0]; dt.Columns.Add("SzuletesiIdoFormatted"); List rows = dt.Rows.Cast().ToList(); foreach (var row in rows) { row["SzuletesiIdoFormatted"] = SDAConvert.ToDateTime(row["SzuletesiIdo"]).ToShortDateString(); } return erettsegiEredmenyek; } public DataSet GetErettsegiEredmenyekDetailGrid(int tanuloId) { DataSet erettsegiEredmenyekData = Dal.CustomConnection.Run(ConnectionType, h => { var result = h.ErettsegiEredmeny(GridParameters).GetErettsegiEredmenyekReszletekData(IntezmenyId, TanevId, tanuloId); return result; }); bool isVegzos; var helper = new FelhasznaloHelper(ConnectionType); isVegzos = helper.GetVegzosEvfolyamTanulojaByUserId(tanuloId); var dt = erettsegiEredmenyekData.Tables[0]; dt.Columns.Add("IsNew"); dt.Columns.Add("Szazalek"); dt.Columns.Add("Erdemjegy"); foreach (var row in dt.Rows.Cast().ToList()) { row["IsNew"] = false; } if (isVegzos) { List erettsegiTantargyMagyarNyelvEsIrodalomIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom}").ToList(); if (erettsegiTantargyMagyarNyelvEsIrodalomIdList.Count == 0) { var row = dt.NewRow(); row["ID"] = "tempMagyarNyelvEsIrodalomRowId"; row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.magyar_nyelv_es_irodalom; row["IsNew"] = true; dt.Rows.Add(row); } List erettsegiTantargyMatematikaIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.matematika}").ToList(); if (erettsegiTantargyMatematikaIdList.Count == 0) { var row = dt.NewRow(); row["ID"] = "tempMatematikaRowId"; row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.matematika; row["IsNew"] = true; dt.Rows.Add(row); } List erettsegiTantargyTortenelemIdList = erettsegiEredmenyekData.Tables[0].Select($"ErettsegiTantargyId = {(int)ErettsegiTantargyEnum.tortenelem}").ToList(); if (erettsegiTantargyTortenelemIdList.Count == 0) { var row = dt.NewRow(); row["ID"] = "tempTortenelemRowId"; row["ErettsegiTantargyId"] = (int)ErettsegiTantargyEnum.tortenelem; row["IsNew"] = true; dt.Rows.Add(row); } } foreach (var row in dt.Rows.Cast().ToList()) { int? osszMaxPontszam; var irasbeliPontszam = SDAConvert.ToNullableInt32(row["IrasbeliPontszam"]); if (SDAConvert.ToInt32(row["ErettsegiTantargyId"]) == (int)ErettsegiTantargyEnum.matematika && irasbeliPontszam.HasValue && irasbeliPontszam < 25) { osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]) + 50; } else { osszMaxPontszam = SDAConvert.ToNullableInt32(row["OsszMaxPontszam"]); } double? szazalek = null; string szazalekString; int? osszPontszam = SDAConvert.ToNullableInt32(row["OsszPontszam"]); string osszPontszamString; if (osszPontszam.HasValue && osszMaxPontszam.HasValue) { if (osszMaxPontszam < osszPontszam) { osszPontszamString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam; szazalekString = ErettsegiEredmenyekResource.MagasabbAzOsszPontszamMintAMaxOsszPontszam; } else { osszPontszamString = $"{osszPontszam}/{osszMaxPontszam}"; szazalek = Math.Floor((double)osszPontszam.Value / osszMaxPontszam.Value * 100); szazalekString = szazalek + "%"; } } else { osszPontszamString = osszMaxPontszam.HasValue ? $"-/{osszMaxPontszam}" : "-"; szazalekString = "-"; } row["Szazalek"] = szazalekString; row["OsszPontszam"] = osszPontszamString; var erettsegiSzintId = SDAConvert.ToNullableInt32(row["ErettsegiSzintId"]); string erdemjegyString; if (erettsegiSzintId.IsEntityId() && szazalek.HasValue) { //NOTE: Az IsEntityId vizsgálat miatt nem lehet null az erettsegiSzintId! if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.KozepSzint) { int erdemjegy; if (0 <= szazalek.Value && szazalek.Value <= 24) { erdemjegy = 1; } else if (25 <= szazalek.Value && szazalek.Value <= 39) { erdemjegy = 2; } else if (40 <= szazalek.Value && szazalek.Value <= 59) { erdemjegy = 3; } else if (60 <= szazalek.Value && szazalek.Value <= 79) { erdemjegy = 4; } else if (80 <= szazalek.Value && szazalek.Value <= 100) { erdemjegy = 5; } else { throw new Exception("Hibás százalék érték!"); } erdemjegyString = erdemjegy.ToString(); } else if (erettsegiSzintId.Value == (int)ErettsegiSzintEnum.EmeltSzint) { int erdemjegy; if (0 <= szazalek.Value && szazalek.Value <= 24) { erdemjegy = 1; } else if (25 <= szazalek.Value && szazalek.Value <= 32) { erdemjegy = 2; } else if (33 <= szazalek.Value && szazalek.Value <= 46) { erdemjegy = 3; } else if (47 <= szazalek.Value && szazalek.Value <= 59) { erdemjegy = 4; } else if (60 <= szazalek.Value && szazalek.Value <= 100) { erdemjegy = 5; } else { throw new Exception("Hibás százalék érték!"); } erdemjegyString = erdemjegy.ToString(); } else { erdemjegyString = "-"; } } else { erdemjegyString = "-"; } row["Erdemjegy"] = erdemjegyString; } return erettsegiEredmenyekData; } public void SaveErettsegiEredmenyList(List erettsegiEredmenyCoList) { foreach (var erettsegiEredmenyCo in erettsegiEredmenyCoList) { SaveOrUpdateErettsegiEredmeny(erettsegiEredmenyCo); } } public void SaveOrUpdateErettsegiEredmeny(ErettsegiEredmenyItemCo co) { Dal.CustomConnection.Run(ConnectionType, h => { IErettsegiEredmenyDal dal = h.ErettsegiEredmeny(); bool isNew = !co.Id.IsEntityId(); //NOTE: Az IsEntityId vizsgálat miatt nem lehet null az co.Id! IErettsegiEredmeny entity = isNew ? dal.Get() : dal.Get(co.Id.Value); entity.ErettsegiSzint = co.ErettsegiSzintId; entity.ErettsegiTantargy = co.ErettsegiTantargyId; entity.ErettsegiTipus = co.ErettsegiTipusId; entity.GyakorlatPontszam = co.GyakorlatiPontszam; entity.IntezmenyId = co.IntezmenyId; entity.IrasbeliPontszam = co.IrasbeliPontszam; entity.Megjegyzes = co.Megjegyzes; entity.OsszPontszam = co.OsszPontszam; entity.SzobeliPontszam = co.SzobeliPontszam; entity.TanevId = co.TanevId; entity.TanuloId = co.TanuloId; if (isNew) { dal.Insert(entity); } else { dal.FullUpdate(entity); } }); } public void DeleteErettsegiEredmeny(int id) { Dal.CustomConnection.Run(ConnectionType, h => h.ErettsegiEredmeny().DeleteErettsegiEredmeny(id)); } public IDictionary GetErettsegiTantargyakForComboBox(string baseText = null) { var result = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(); return dal.GetErettsegiTantargyakForComboBox(IntezmenyId, TanevId); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, sort: false); } public DataSet GetErettsegiTantargyakForValidate() { var result = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(); return dal.GetErettsegiTantargyakForValidate(IntezmenyId, TanevId); }); return result; } public IDictionary GetErettsegiSzintekForComboBox(string baseText = null) { var result = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(); return dal.GetErettsegiSzintekForComboBox(IntezmenyId, TanevId); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false); } public IDictionary GetErettsegiTipusokForComboBox(string baseText = null) { var result = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(); return dal.GetErettsegiTipusokForComboBox(IntezmenyId, TanevId); }); return LogicUtil.CreateDropdownContent(result, "ID", "Nev", baseText, false); } public IDictionary GetErettsegiMaxPontszamList() { DataSet ds = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(); return dal.GetErettsegiMaxPontszamList(IntezmenyId, TanevId); }); var row = ds.Tables[0].Rows[0]; var maxPontszamDictionary = new Dictionary { {"IrasbeliMaxPontszam", SDAConvert.ToInt32(row["IrasbeliMaxPontszam"])}, {"SzobeliMaxPontszam", SDAConvert.ToInt32(row["SzobeliMaxPontszam"])}, {"GyakorlatiMaxPontszam", SDAConvert.ToInt32(row["GyakorlatiMaxPontszam"])} }; return maxPontszamDictionary; } public ErettsegiEredmenyItemCo GetErettsegiEredmeny(int erettsegiEredmenyId) { var searchCo = new ErettsegiEredmenyekKeresoCO { Id = erettsegiEredmenyId }; return GetErettsegiEredmenyCoList(searchCo)[0]; } public List GetErettsegiEredmenyCoList(ErettsegiEredmenyekKeresoCO searchCo) { var coList = new List(); var ds = Dal.CustomConnection.Run(ConnectionType, h => { var dal = h.ErettsegiEredmeny(GridParameters); return dal.GetErettsegiEredmenyekData(IntezmenyId, TanevId, ErettsegiEredmenyekKeresoCO.ConvertCOToPCO(searchCo)); }); foreach (var row in ds.Tables[0].AsEnumerable()) { coList.Add(new ErettsegiEredmenyItemCo(row)); } return FilterErettsegiEredmenyCoList(coList, searchCo); } private List FilterErettsegiEredmenyCoList(List coList, ErettsegiEredmenyekKeresoCO searchCo) { if (searchCo == null) { return coList; } IEnumerable result = coList; if (!string.IsNullOrWhiteSpace(searchCo.Tanulo)) { result = result.Where(x => x.Tanulo.ToComparableString().Contains(searchCo.Tanulo.ToComparableString())); } if (searchCo.OsztalyId.IsEntityId()) { result = result.Where(x => x.OsztalyId == searchCo.OsztalyId); } if (!string.IsNullOrWhiteSpace(searchCo.OktatasiAzonosito)) { result = result.Where(x => x.OktatasiAzonosito.ToComparableString().Contains(searchCo.OktatasiAzonosito.ToComparableString())); } if (!string.IsNullOrWhiteSpace(searchCo.Tantargy)) { result = result.Where(x => x.Tantargy.ToComparableString().Contains(searchCo.Tantargy.ToComparableString())); } if (searchCo.SzintId.IsEntityId()) { result = result.Where(x => x.ErettsegiSzintId == searchCo.SzintId); } if (searchCo.TipusId.IsEntityId()) { result = result.Where(x => x.ErettsegiTipusId == searchCo.TipusId); } if (searchCo.SzobeliPontszam.HasValue) { result = result.Where(x => x.SzobeliPontszam == searchCo.SzobeliPontszam.Value); } if (searchCo.IrasbeliPontszam.HasValue) { result = result.Where(x => x.IrasbeliPontszam == searchCo.IrasbeliPontszam.Value); } if (searchCo.GyakorlatiPontszam.HasValue) { result = result.Where(x => x.GyakorlatiPontszam == searchCo.GyakorlatiPontszam.Value); } if (searchCo.OsszPontszam.HasValue) { result = result.Where(x => x.OsszPontszam == searchCo.OsszPontszam.Value); } if (!string.IsNullOrWhiteSpace(searchCo.Megjegyzes)) { result = result.Where(x => x.Megjegyzes.ToComparableString().Contains(searchCo.Megjegyzes.ToComparableString())); } return result.ToList(); } } }