using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Linq; using System.Text; using System.Web; using Kreta.BusinessLogic.Classes; using Kreta.BusinessLogic.HelperClasses; using Kreta.Core; using Kreta.Enums; using Kreta.Enums.ManualEnums; using Kreta.Framework; using Kreta.Framework.Caching; using Kreta.Framework.Util; using Kreta.KretaServer.Exceptions; using Kreta.Resources; using OfficeOpenXml; using static Kreta.Core.Constants; namespace Kreta.BusinessLogic.Logic.TanuloErtekeles { public class TanuloErtekelesLogicWeb : TanuloErtekelesLogicBase { public static DataSet GetTanuloErtekelesDataSetByTantargyForGrid(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo) { List osztalyzatTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.OsztalyzatTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId).OrderBy(x => x.Value).ToList(); var tanuloErtekelesGridRowList = new List(); foreach (DataRow dataRow in tanuloErtekelesGridHelperCo.DataSet.Tables[0].Rows) { int rowId = SDAConvert.ToInt32(dataRow["TanuloId"]); if (tanuloErtekelesGridRowList.All(x => x.RowId != rowId)) { var co = new TanuloErtekelesTanuloListByTantargyGridRowCo(); SetTanuloErtekelesBaseGridRowCo(co, rowId, dataRow, tanuloErtekelesGridHelperCo.FelevVegeDatum); SetTanuloErtekelesTanuloListBaseGridRowCo(co, dataRow); co.ErtkelesMentesseg = SDAConvert.ToBooleanFromTF(dataRow["ErtkelesMentesseg"]); co.SzovegesenErtekelheto = SDAConvert.ToBooleanFromTF(dataRow["SzovegesenErtekelheto"]); co.MentessegOka = dataRow["MentessegOka"].ToString(); tanuloErtekelesGridRowList.Add(co); } TanuloErtekelesGridItemCo tanuloErtekelesGridItem = GetTanuloErtekelesGridItem(dataRow, osztalyzatTipusDictionaryItemList); if (tanuloErtekelesGridItem != null) { tanuloErtekelesGridRowList.Single(x => x.RowId == rowId).TanuloErtekelesGridItemList.Add(tanuloErtekelesGridItem); } } foreach (TanuloErtekelesTanuloListByTantargyGridRowCo tanuloErtekelesGridRow in tanuloErtekelesGridRowList) { tanuloErtekelesGridRow.Atlag = SetAtlag(tanuloErtekelesGridRow); } DataTable gridDataTable = SetTanuloErtekelesBaseGridDataTableBaseColumns(tanuloErtekelesGridHelperCo.Datum?.ToConvertableDateString(), tanuloErtekelesGridHelperCo.IsJegyekAtlagaMegjelenik); SetTanuloErtekelesTanuloListBaseGridDataTableColumns(gridDataTable); SetTanuloErtekelesHaviAtlagColumns(gridDataTable); gridDataTable.Columns.Add(new DataColumn("ErtkelesMentesseg", typeof(bool))); gridDataTable.Columns.Add(new DataColumn("SzovegesenSemErtekelheto", typeof(bool))); gridDataTable.Columns.Add(new DataColumn("MentessegOka", typeof(string))); DataSet gridDataSet = new DataSet(); gridDataSet.Tables.Add(gridDataTable); foreach (TanuloErtekelesTanuloListByTantargyGridRowCo tanuloErtekelesGridRow in tanuloErtekelesGridRowList) { DataRow gridDataRow = SetTanuloErtekelesBaseGridDataTableBaseValues(tanuloErtekelesGridHelperCo, gridDataSet, tanuloErtekelesGridRow, tanuloErtekelesGridHelperCo.NaplozarasDatuma, tanuloErtekelesGridHelperCo.ErtekelesModDictionary); SetTanuloErtekelesTanuloListBaseGridDataTableValues(gridDataRow, tanuloErtekelesGridRow); SetTanuloErtekelesHaviAtlagValues(tanuloErtekelesGridHelperCo, gridDataRow, tanuloErtekelesGridRow); gridDataRow.SetField("ErtkelesMentesseg", tanuloErtekelesGridRow.ErtkelesMentesseg); gridDataRow.SetField("SzovegesenSemErtekelheto", tanuloErtekelesGridRow.SzovegesenSemErtekelheto); gridDataRow.SetField("MentessegOka", tanuloErtekelesGridRow.MentessegOka); gridDataTable.Rows.Add(gridDataRow); } return gridDataSet; } public static DataSet GetTanuloErtekelesDataSetByMagatartasSzorgalomForGrid(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo) { List osztalyzatTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.OsztalyzatTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId).OrderBy(x => x.Value).ToList(); var tanuloErtekelesGridRowList = new List(); foreach (DataRow dataRow in tanuloErtekelesGridHelperCo.DataSet.Tables[0].Rows) { int rowId = SDAConvert.ToInt32(dataRow["TanuloId"]); if (tanuloErtekelesGridRowList.All(x => x.RowId != rowId)) { var co = new TanuloErtekelesTanuloListByMagatartasSzorgalomGridRowCo(); SetTanuloErtekelesBaseGridRowCo(co, rowId, dataRow, tanuloErtekelesGridHelperCo.FelevVegeDatum); SetTanuloErtekelesTanuloListBaseGridRowCo(co, dataRow); co.EllatottFeladatTipusId = dataRow.Field("EllatottFeladatTipusId"); tanuloErtekelesGridRowList.Add(co); } TanuloErtekelesGridItemCo tanuloErtekelesGridItem = GetTanuloErtekelesGridItem(dataRow, osztalyzatTipusDictionaryItemList); if (tanuloErtekelesGridItem != null) { tanuloErtekelesGridRowList.Single(x => x.RowId == rowId).TanuloErtekelesGridItemList.Add(tanuloErtekelesGridItem); } } foreach (TanuloErtekelesTanuloListByMagatartasSzorgalomGridRowCo tanuloErtekelesGridRow in tanuloErtekelesGridRowList) { tanuloErtekelesGridRow.Atlag = SetAtlag(tanuloErtekelesGridRow); } DataTable gridDataTable = SetTanuloErtekelesBaseGridDataTableBaseColumns(tanuloErtekelesGridHelperCo.Datum?.ToConvertableDateString(), tanuloErtekelesGridHelperCo.IsJegyekAtlagaMegjelenik); SetTanuloErtekelesTanuloListBaseGridDataTableColumns(gridDataTable); gridDataTable.Columns.Add(new DataColumn("EllatottFeladatTipusId", typeof(int))); DataSet gridDataSet = new DataSet(); gridDataSet.Tables.Add(gridDataTable); foreach (TanuloErtekelesTanuloListByMagatartasSzorgalomGridRowCo tanuloErtekelesGridRow in tanuloErtekelesGridRowList) { DataRow gridDataRow = SetTanuloErtekelesBaseGridDataTableBaseValues(tanuloErtekelesGridHelperCo, gridDataSet, tanuloErtekelesGridRow, tanuloErtekelesGridHelperCo.NaplozarasDatuma, tanuloErtekelesGridHelperCo.ErtekelesModDictionary); SetTanuloErtekelesTanuloListBaseGridDataTableValues(gridDataRow, tanuloErtekelesGridRow); gridDataRow.SetField("EllatottFeladatTipusId", tanuloErtekelesGridRow.EllatottFeladatTipusId); gridDataTable.Rows.Add(gridDataRow); } return gridDataSet; } public static DataSet GetTanuloErtekelesDataSetByTanuloForGrid(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo) { List targyKategoriaTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.TargyKategoriaTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId); List osztalyzatTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.OsztalyzatTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId).OrderBy(x => x.Value).ToList(); var tanuloErtekelesGridRowList = new List(); foreach (DataRow dataRow in tanuloErtekelesGridHelperCo.DataSet.Tables[0].Rows) { int rowId = SDAConvert.ToInt32(dataRow["TantargyId"]); if (tanuloErtekelesGridRowList.All(x => x.RowId != rowId)) { var co = new TanuloErtekelesTantargyListByTanuloGridRowCo(); SetTanuloErtekelesBaseGridRowCo(co, rowId, dataRow, tanuloErtekelesGridHelperCo.FelevVegeDatum); SetTanuloErtekelesTantargyListBaseGridRowCo(co, dataRow, targyKategoriaTipusDictionaryItemList); tanuloErtekelesGridRowList.Add(co); } TanuloErtekelesGridItemCo tanuloErtekelesGridItem = GetTanuloErtekelesGridItem(dataRow, osztalyzatTipusDictionaryItemList, tanuloErtekelesGridHelperCo.TanuloErtekelesVisibilityCo); if (tanuloErtekelesGridItem != null) { tanuloErtekelesGridRowList.Single(x => x.RowId == rowId).TanuloErtekelesGridItemList.Add(tanuloErtekelesGridItem); } } //NOTE: Az alábbiak szerint kell sorrendezni a tantárgyakat: // - A tantárgyak tantárgykategóriája szerint, ha altárgy, akkor a főtárgy tantárgykategóriája szerint. // - A tantárgyak neve szerinti ABC sorrendben, ha altárgy, akkor a főtárgy neve szerinti ABC sorrendben. // - A főtárgyakat az altárgyak elé soroljuk. // - A tantárgyak neve szerinti ABC sorrendben(ez a rész a főtárgyak alatt lévő altárgyakat fogja rendezni). List orderedTanuloErtekelesGridRowList = tanuloErtekelesGridRowList .OrderBy(x => x.IsFotargy ? x.TantargyKategoriaOrder ?? 10000 : x.FotargyTantargyKategoriaOrder ?? 10000) .ThenBy(x => x.IsFotargy ? x.TantargyNev : x.FotargyNev) .ThenBy(x => x.IsFotargy ? 0 : 1) .ThenBy(x => x.TantargyNev) .ToList(); foreach (TanuloErtekelesTantargyListByTanuloGridRowCo tanuloErtekelesGridRow in orderedTanuloErtekelesGridRowList) { tanuloErtekelesGridRow.Atlag = SetAtlag(tanuloErtekelesGridRow); } DataTable gridDataTable = SetTanuloErtekelesBaseGridDataTableBaseColumns(null, tanuloErtekelesGridHelperCo.IsJegyekAtlagaMegjelenik); SetTanuloErtekelesTantargyListBaseGridDataTableColumns(gridDataTable); SetTanuloErtekelesHaviAtlagColumns(gridDataTable); gridDataTable.Columns.Add(new DataColumn("TantargyIsTanulmanyiAtlagbaNemSzamit", typeof(bool))); DataSet gridDataSet = new DataSet(); gridDataSet.Tables.Add(gridDataTable); foreach (TanuloErtekelesTantargyListByTanuloGridRowCo tanuloErtekelesGridRow in orderedTanuloErtekelesGridRowList) { DataRow gridDataRow = SetTanuloErtekelesBaseGridDataTableBaseValues(tanuloErtekelesGridHelperCo, gridDataSet, tanuloErtekelesGridRow, tanuloErtekelesGridHelperCo.NaplozarasDatuma, tanuloErtekelesGridHelperCo.ErtekelesModDictionary, false); SetTanuloErtekelesTantargyListBaseGridDataTableValues(gridDataRow, tanuloErtekelesGridRow); SetTanuloErtekelesHaviAtlagValues(tanuloErtekelesGridHelperCo, gridDataRow, tanuloErtekelesGridRow); gridDataRow.SetField("TantargyIsTanulmanyiAtlagbaNemSzamit", tanuloErtekelesGridRow.TanuloErtekelesGridItemList.Any(e => e.IsTanulmanyiAtlagbaNemSzamit == true)); gridDataTable.Rows.Add(gridDataRow); } return gridDataSet; } public static DataSet GetTanuloErtekelesDataSetByFotargyAltargyForGrid(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo) { List targyKategoriaTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.TargyKategoriaTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId); List osztalyzatTipusDictionaryItemList = ((int)GeneratedAdatszotarTipusEnum.OsztalyzatTipus).GetItemsByType(tanuloErtekelesGridHelperCo.TanevId).OrderBy(x => x.Value).ToList(); var tanuloErtekelesGridRowList = new List(); foreach (DataRow dataRow in tanuloErtekelesGridHelperCo.DataSet.Tables[0].Rows) { int rowId = SDAConvert.ToInt32(dataRow["TantargyId"]); if (tanuloErtekelesGridRowList.All(x => x.RowId != rowId)) { var co = new TanuloErtekelesTantargyListByFotargyAltargyGridRowCo(); SetTanuloErtekelesBaseGridRowCo(co, rowId, dataRow, tanuloErtekelesGridHelperCo.FelevVegeDatum); SetTanuloErtekelesTantargyListBaseGridRowCo(co, dataRow, targyKategoriaTipusDictionaryItemList); tanuloErtekelesGridRowList.Add(co); } TanuloErtekelesGridItemCo tanuloErtekelesGridItem = GetTanuloErtekelesGridItem(dataRow, osztalyzatTipusDictionaryItemList); if (tanuloErtekelesGridItem != null) { tanuloErtekelesGridRowList.Single(x => x.RowId == rowId).TanuloErtekelesGridItemList.Add(tanuloErtekelesGridItem); } } //NOTE: Az alábbiak szerint kell sorrendezni a tantárgyakat: // - Ha van főtárgy a listában az kerül előre(Itt csak és kizárólag egy főtárgy lehet). // - A tantárgyak neve szerinti ABC sorrendben(ez a rész a főtárgyak alatt lévő altárgyakat fogja rendezni). List orderedTanuloErtekelesGridRowList = tanuloErtekelesGridRowList .OrderBy(x => x.IsFotargy ? 0 : 1) .ThenBy(x => x.TantargyNev) .ToList(); foreach (TanuloErtekelesTantargyListByFotargyAltargyGridRowCo tanuloErtekelesGridRow in orderedTanuloErtekelesGridRowList) { tanuloErtekelesGridRow.Atlag = SetAtlag(tanuloErtekelesGridRow); } DataTable gridDataTable = SetTanuloErtekelesBaseGridDataTableBaseColumns(tanuloErtekelesGridHelperCo.Datum?.ToConvertableDateString(), tanuloErtekelesGridHelperCo.IsJegyekAtlagaMegjelenik); SetTanuloErtekelesTantargyListBaseGridDataTableColumns(gridDataTable); DataSet gridDataSet = new DataSet(); gridDataSet.Tables.Add(gridDataTable); foreach (TanuloErtekelesTantargyListByFotargyAltargyGridRowCo tanuloErtekelesGridRow in orderedTanuloErtekelesGridRowList) { DataRow gridDataRow = SetTanuloErtekelesBaseGridDataTableBaseValues(tanuloErtekelesGridHelperCo, gridDataSet, tanuloErtekelesGridRow, tanuloErtekelesGridHelperCo.NaplozarasDatuma, tanuloErtekelesGridHelperCo.ErtekelesModDictionary, false, false); SetTanuloErtekelesTantargyListBaseGridDataTableValues(gridDataRow, tanuloErtekelesGridRow); gridDataTable.Rows.Add(gridDataRow); } return gridDataSet; } public static DataSet GetDolgozatErtekelesDataSetForGrid(DolgozatGridHelperCo dolgozatGridHelperCo) { int rowId = 1; dolgozatGridHelperCo.DataSet.Tables[0].Columns.Add(new DataColumn("RowId", typeof(int))); foreach (DataRow dataRow in dolgozatGridHelperCo.DataSet.Tables[0].Rows) { dataRow.SetField("RowId", SDAConvert.ToInt32(rowId)); rowId++; } return dolgozatGridHelperCo.DataSet; } public static void SetTanuloErtekelesDataSetForDetailGridDataTable(DataTable dataTable, int ertekelesMegjelenesFajtaEnumId, DateTime naplozarasDatuma, int tanevId) { dataTable.Columns.Add("ModosithatoByNaplozaras", typeof(bool)); List dataRowList = dataTable.Rows.Cast().ToList(); foreach (var dataRow in dataRowList) { dataRow["ModosithatoByNaplozaras"] = naplozarasDatuma <= DateTime.Parse(dataRow["Datum"].ToString()); } switch (ertekelesMegjelenesFajtaEnumId) { case (int)ErtekelesMegjelenesFajtaEnum.Tantargy: dataTable.Columns.Add("ErtekelesText"); List ertekelesRows = dataRowList; foreach (var row in ertekelesRows) { row["ErtekelesText"] = GetErtekelesText(row, tanevId); } break; case (int)ErtekelesMegjelenesFajtaEnum.MagatartasSzorgalom: dataTable.Columns.Add("MagatartasText"); dataTable.Columns.Add("SzorgalomText"); List magatartasSzorgalomRows = dataRowList; foreach (var row in magatartasSzorgalomRows) { row["MagatartasText"] = GetMagatartasText(row, tanevId); row["SzorgalomText"] = GetSzorgalomText(row, tanevId); } break; case (int)ErtekelesMegjelenesFajtaEnum.Tanulo: dataTable.Columns.Add("TanuloErtekelesText"); List tanuloErtekelesRowList = dataRowList; foreach (var row in tanuloErtekelesRowList) { row["TanuloErtekelesText"] = GetTanuloErtekelesText(row, tanevId); } break; } } public static void SetTanuloErtekelesListGridDataSet(DataSet dataSet, int tanevId, bool pErtekelesTextTemaval = false) { DataTable dataTable = dataSet.Tables[0]; dataTable.Columns.Add("TanuloErtekelesText"); foreach (DataRow dataRow in dataTable.Rows.Cast().ToList()) { dataRow["TanuloErtekelesText"] = RichTextLogic.CutHtmlTagsAndDecodeAndBR2Space(GetTanuloErtekelesText(dataRow, tanevId, pErtekelesTextTemaval)); dataRow["ErtekelesModId_DNAME"] = string.IsNullOrWhiteSpace(dataRow["ErtekelesModId_DNAME"].ToString()) ? "-" : dataRow["ErtekelesModId_DNAME"]; } } public static QuadrupleList GetTanuloLegfrissebbTanuloErtekelesList(DataSet tanuloErtekelesDataSet, List egyszerAdhatoErtekelesTipusIds) { var result = new QuadrupleList(); foreach (DataRow tanuloErtekeles in tanuloErtekelesDataSet.Tables[0].AsEnumerable()) { if (tanuloErtekeles["C_ERTEKELESOSZTALYZATID"] != DBNull.Value) { result.Add( GetOsztalyzatTextShort(SDAConvert.ToInt32(tanuloErtekeles["C_ERTEKELESOSZTALYZATID"]), egyszerAdhatoErtekelesTipusIds, tipusId: SDAConvert.ToInt32(tanuloErtekeles["C_TIPUSID"]), tema: SDAConvert.ToString(tanuloErtekeles["C_ERTEKELESTEMA"])), SDAConvert.ToString(tanuloErtekeles["C_ROVIDNEV"]), SDAConvert.ToDateTime(tanuloErtekeles["C_DATUM"])?.ToString("MMMM d."), SDAConvert.ToString(tanuloErtekeles["ID"])); continue; } if (tanuloErtekeles["C_ERTEKELESSZAZALEK"] != DBNull.Value) { result.Add( $"{SDAConvert.ToInt32(tanuloErtekeles["C_ERTEKELESSZAZALEK"])}%", SDAConvert.ToString(tanuloErtekeles["C_ROVIDNEV"]), SDAConvert.ToDateTime(tanuloErtekeles["C_DATUM"])?.ToString("MMMM d."), SDAConvert.ToString(tanuloErtekeles["ID"])); continue; } if (tanuloErtekeles["C_ERTEKELESSZOVEG"] != DBNull.Value) { result.Add( "Szöveges", SDAConvert.ToString(tanuloErtekeles["C_ROVIDNEV"]), SDAConvert.ToDateTime(tanuloErtekeles["C_DATUM"])?.ToString("MMMM d."), SDAConvert.ToString(tanuloErtekeles["ID"])); } } return result; } public static MemoryStream GetTanulokJegyeiByTipusIdExcelExport(DataTable dataTable, int tipusId) { var memoryStream = new MemoryStream(); using (var excelPackage = new ExcelPackage(memoryStream)) { ExcelWorksheet excelWorksheet; switch (tipusId) { case (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles: excelWorksheet = excelPackage.Workbook.Worksheets.Add(TanuloErtekelesResource.TanulokEvVegiJegyei); break; case (int)ErtekelesTipusEnum.felevi_jegy_ertekeles: excelWorksheet = excelPackage.Workbook.Worksheets.Add(TanuloErtekelesResource.TanulokFeleviJegyei); break; default: excelWorksheet = excelPackage.Workbook.Worksheets.Add(TanuloErtekelesResource.TanulokEvkoziJegyei); break; } excelWorksheet.Cells[1, 1].LoadFromDataTable(dataTable, true); ExportLogic.SetHeaderStyles(excelWorksheet.Cells[1, 1, 1, dataTable.Columns.Count]); excelWorksheet.Cells.AutoFitColumns(); excelPackage.Save(); } memoryStream.Position = 0; return memoryStream; } private static void SetTanuloErtekelesTanuloListBaseGridRowCo(TanuloErtekelesTanuloListBaseGridRowCo co, DataRow dataRow) { co.TanuloNev = dataRow["TanuloNev"].ToString(); co.TanuloNevElotagNelkul = dataRow["TanuloNevElotagNelkul"].ToString(); co.AnyjaNeve = dataRow["AnyjaNeve"].ToString(); co.SzuletesiIdo = SDAConvert.ToDateTime(dataRow["SzuletesiIdo"]).Value; co.OsztalyNev = dataRow["OsztalyNev"].ToString(); co.FeladatKategoriaId = SDAConvert.ToInt32(dataRow["FeladatKategoriaId"]); co.AmiFotargy = dataRow.Field("AmiFotargyId_DNAME"); co.AmiTantargyKotelezoseg = dataRow.Field("AmiTantargyKotelezosegId_DNAME"); co.EvfolyamNev = dataRow.Field("EvfolyamId_DNAME"); co.AmiTagozat = dataRow.Field("AmiTagozatId_DNAME"); } private static void SetTanuloErtekelesTanuloListBaseGridDataTableColumns(DataTable gridDataTable) { gridDataTable.Columns.Add(new DataColumn("TanuloNev", typeof(string))); gridDataTable.Columns.Add(new DataColumn("TanuloNevElotagNelkul", typeof(string))); gridDataTable.Columns.Add(new DataColumn("AnyjaNeve", typeof(string))); gridDataTable.Columns.Add(new DataColumn("SzuletesiIdo", typeof(DateTime))); gridDataTable.Columns.Add(new DataColumn("SzuletesiIdoFormatted", typeof(string))); gridDataTable.Columns.Add(new DataColumn("OsztalyNev", typeof(string))); gridDataTable.Columns.Add(new DataColumn("FeladatKategoriaId", Nullable.GetUnderlyingType(typeof(int)) ?? typeof(int))); gridDataTable.Columns.Add(new DataColumn("AmiTagozat", typeof(string))); gridDataTable.Columns.Add(new DataColumn("AmiFotargy", typeof(string))); gridDataTable.Columns.Add(new DataColumn("AmiTantargyKotelezoseg", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Evfolyam", typeof(string))); } private static void SetTanuloErtekelesTanuloListBaseGridDataTableValues(DataRow gridDataRow, TanuloErtekelesTanuloListBaseGridRowCo tanuloErtekelesGridRow) { gridDataRow.SetField("TanuloNev", tanuloErtekelesGridRow.TanuloNev); gridDataRow.SetField("TanuloNevElotagNelkul", tanuloErtekelesGridRow.TanuloNevElotagNelkul); gridDataRow.SetField("AnyjaNeve", tanuloErtekelesGridRow.AnyjaNeve); gridDataRow.SetField("SzuletesiIdo", tanuloErtekelesGridRow.SzuletesiIdo); gridDataRow.SetField("SzuletesiIdoFormatted", tanuloErtekelesGridRow.SzuletesiIdoFormatted); gridDataRow.SetField("OsztalyNev", tanuloErtekelesGridRow.OsztalyNev); gridDataRow.SetField("FeladatKategoriaId", tanuloErtekelesGridRow.FeladatKategoriaId); gridDataRow.SetField("AmiTagozat", tanuloErtekelesGridRow.AmiTagozat); gridDataRow.SetField("AmiFotargy", tanuloErtekelesGridRow.AmiFotargy); gridDataRow.SetField("AmiTantargyKotelezoseg", tanuloErtekelesGridRow.AmiTantargyKotelezoseg); gridDataRow.SetField("Evfolyam", tanuloErtekelesGridRow.EvfolyamNev); } private static void SetTanuloErtekelesTantargyListBaseGridRowCo(TanuloErtekelesTantargyListBaseGridRowCo co, DataRow dataRow, List targyKategoriaTipusDictionaryItemList) { co.TantargyNev = dataRow["TantargyNev"].ToString(); int? tantargyKategoriaId = SDAConvert.ToNullableInt32(dataRow["TantargyKategoriaId"]); co.TantargyKategoriaId = tantargyKategoriaId; co.TantargyKategoriaOrder = co.IsMagatartasSzorgalom ? 0 : tantargyKategoriaId.IsEntityId() ? targyKategoriaTipusDictionaryItemList.Single(x => x.Id == tantargyKategoriaId.Value).Order : null; co.FotargyId = SDAConvert.ToNullableInt32(dataRow["FotargyId"]); co.FotargyNev = dataRow["FotargyNev"].ToString(); int? fotargyTantargyKategoriaId = SDAConvert.ToNullableInt32(dataRow["FotargyTantargyKategoriaId"]); co.FotargyTantargyKategoriaId = fotargyTantargyKategoriaId; co.FotargyTantargyKategoriaOrder = fotargyTantargyKategoriaId.IsEntityId() ? targyKategoriaTipusDictionaryItemList.Single(x => x.Id == fotargyTantargyKategoriaId.Value).Order : null; } private static void SetTanuloErtekelesTantargyListBaseGridDataTableColumns(DataTable gridDataTable) { gridDataTable.Columns.Add(new DataColumn("TantargyNev", typeof(string))); } private static void SetTanuloErtekelesTantargyListBaseGridDataTableValues(DataRow gridDataRow, TanuloErtekelesTantargyListBaseGridRowCo tanuloErtekelesGridRow) { gridDataRow.SetField("TantargyNev", tanuloErtekelesGridRow.TantargyNev); } private static void SetTanuloErtekelesBaseGridRowCo(TanuloErtekelesBaseGridRowCo co, int rowId, DataRow dataRow, DateTime felevVegeDatum) { co.RowId = rowId; co.TanuloId = SDAConvert.ToNullableInt32(dataRow["TanuloId"]); co.TantargyId = SDAConvert.ToNullableInt32(dataRow["TantargyId"]); co.FelevVegeDatum = felevVegeDatum; co.IsMagatartasSzorgalom = SDAConvert.ToBooleanFromTF(dataRow["IsMagatartasSzorgalom"]); co.TanuloErtekelesGridItemList = new List(); } private static DataTable SetTanuloErtekelesBaseGridDataTableBaseColumns(string datumDefaultValueString, bool isJegyekAtlagaMegjelenik) { DataTable gridDataTable = new DataTable(); gridDataTable.Columns.Add(new DataColumn("ID", typeof(int))); gridDataTable.Columns.Add(new DataColumn("TanuloId", Nullable.GetUnderlyingType(typeof(int)) ?? typeof(int))); gridDataTable.Columns.Add(new DataColumn("TantargyId", Nullable.GetUnderlyingType(typeof(int)) ?? typeof(int))); gridDataTable.Columns.Add(new DataColumn("Szeptember", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Oktober", typeof(string))); gridDataTable.Columns.Add(new DataColumn("November", typeof(string))); gridDataTable.Columns.Add(new DataColumn("December", typeof(string))); gridDataTable.Columns.Add(new DataColumn("JanuarI", typeof(string))); gridDataTable.Columns.Add(new DataColumn("I", typeof(string))); gridDataTable.Columns.Add(new DataColumn("JanuarII", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Februar", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Marcius", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Aprilis", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Majus", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Junius", typeof(string))); gridDataTable.Columns.Add(new DataColumn("II", typeof(string))); gridDataTable.Columns.Add(new DataColumn("Atlag", typeof(double))); gridDataTable.Columns.Add(new DataColumn("IsJegyekAtlagaMegjelenik", typeof(bool))); gridDataTable.Columns["IsJegyekAtlagaMegjelenik"].DefaultValue = isJegyekAtlagaMegjelenik; gridDataTable.Columns.Add(new DataColumn("Datum", Nullable.GetUnderlyingType(typeof(DateTime)) ?? typeof(DateTime))); gridDataTable.Columns["Datum"].DefaultValue = datumDefaultValueString; return gridDataTable; } private static DataRow SetTanuloErtekelesBaseGridDataTableBaseValues(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo, DataSet gridDataSet, TanuloErtekelesBaseGridRowCo tanuloErtekelesGridRow, DateTime naplozarasDatuma, Dictionary ertekelesModDictionary, bool hasClickEvent = true, bool isMainGrid = true) { DataRow gridDataRow = gridDataSet.Tables[0].NewRow(); gridDataRow.SetField("ID", tanuloErtekelesGridRow.RowId); int? tanuloId = tanuloErtekelesGridRow.TanuloId; gridDataRow.SetField("TanuloId", tanuloId); gridDataRow.SetField("TantargyId", tanuloErtekelesGridRow.TantargyId); bool isMagatartasSzorgalom = tanuloErtekelesGridRow.IsMagatartasSzorgalom; gridDataRow.SetField("Szeptember", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Szeptember, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Oktober", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Oktober, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("November", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.November, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("December", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.December, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("JanuarI", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.JanuarI, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); var iTanuloErtekelesGridRow = tanuloErtekelesGridRow.I == null ? new List() : new List { tanuloErtekelesGridRow.I }; gridDataRow.SetField("I", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, iTanuloErtekelesGridRow, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("JanuarII", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.JanuarII, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Februar", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Februar, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Marcius", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Marcius, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Aprilis", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Aprilis, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Majus", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Majus, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Junius", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Junius, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); var iiTanuloErtekelesGridRow = tanuloErtekelesGridRow.II == null ? new List() : new List { tanuloErtekelesGridRow.II }; gridDataRow.SetField("II", AddTanuloErtelelesekSpanToData(tanuloErtekelesGridHelperCo, iiTanuloErtekelesGridRow, naplozarasDatuma, ertekelesModDictionary, tanuloId, isMagatartasSzorgalom, hasClickEvent, isMainGrid)); gridDataRow.SetField("Atlag", tanuloErtekelesGridRow.Atlag); return gridDataRow; } private static TanuloErtekelesGridItemCo GetTanuloErtekelesGridItem(DataRow dataRow, List osztalyzatTipusDictionaryItemList, TanuloErtekelesVisibilityCo tanuloErtekelesVisibilityCo = null) { int? id = SDAConvert.ToNullableInt32(dataRow["ID"]); //NOTE: Ha nincs id, akkor az azt jelenti, hogy az adott sornak(akár tanuló, akár tantárgy) nincs értékelése, de magát az üres sort meg kell jelenítenünk, ezért null-al térünk vissza! if (!id.IsEntityId()) { return null; } int tipusId = SDAConvert.ToInt32(dataRow["TipusId"]); DateTime created = SDAConvert.ToDateTime(dataRow["Created"]).Value; //NOTE: Ha tanuló nézet, csak akkor kell vizsgálni a többi szűrő feltételt, különben vissza kell adnunk az értékelést mindenképpen. if (tanuloErtekelesVisibilityCo != null && tanuloErtekelesVisibilityCo.IsTanuloView) { bool isErtesitesElkuldve = SDAConvert.ToBooleanFromTF(dataRow["IsErtesitesElkuldve"]); //NOTE: Ha nincs elküldve az értesítés, csak akkor kell vizsgálni a többi szűrő feltételt, különben vissza kell adnunk az értékelést mindenképpen. if (!isErtesitesElkuldve) { //NOTE: Nem adjuk vissza a tanuló értékelést, ha... // - az étrékelés típusa bármelyik egyszer adható értékelés és el kell rejtenünk. // - a megjelenítési időpont(created + késleltés óraszám) későbbi, mint a DateTime.Now. if (tipusId == (int)ErtekelesTipusEnum.I_ne_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsINegyedevesJegyHidden || tipusId == (int)ErtekelesTipusEnum.II_ne_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsIiNegyedevesJegyHidden || tipusId == (int)ErtekelesTipusEnum.felevi_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsFeleviJegyHidden || tipusId == (int)ErtekelesTipusEnum.III_ne_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsIiiNegyedevesJegyHidden || tipusId == (int)ErtekelesTipusEnum.IV_ne_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsIvNegyedevesJegyHidden || tipusId == (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles && tanuloErtekelesVisibilityCo.IsEvvegiJegyHidden || created.AddHours(tanuloErtekelesVisibilityCo.KesleltetettMegjelenitesOraszam) > DateTime.Now) { return null; } } } var result = new TanuloErtekelesGridItemCo { Id = id.Value, Datum = SDAConvert.ToDateTime(dataRow["Datum"]).Value, RogzitesDatum = SDAConvert.ToDateTime(dataRow["RogzitesDatum"]).Value, TipusId = tipusId, ErtekeloNyomtatasiNev = dataRow["ErtekeloNyomtatasiNev"].ToString(), Modosithato = SDAConvert.ToBooleanFromTF(dataRow["Modosithato"]), Created = created }; bool isMagatartasSzorgalom = SDAConvert.ToBooleanFromTF(dataRow["IsMagatartasSzorgalom"]); if (!isMagatartasSzorgalom) { int? ertekelesOsztalyzatId = SDAConvert.ToNullableInt32(dataRow["ErtekelesOsztalyzatId"]); result.ErtekelesOsztalyzatId = ertekelesOsztalyzatId; result.ErtekelesOsztalyzat = ertekelesOsztalyzatId.IsEntityId() ? osztalyzatTipusDictionaryItemList.Single(x => x.Id == ertekelesOsztalyzatId.Value).Value : null; result.Suly = SDAConvert.ToNullableInt32(dataRow["Suly"]); result.ErtekelesSzoveg = dataRow["ErtekelesSzoveg"].ToString(); result.ErtekelesSzovegRovidNev = dataRow["ErtekelesSzovegRovidNev"].ToString(); result.ErtekelesSzazalek = SDAConvert.ToNullableInt32(dataRow["ErtekelesSzazalek"]); result.ErtekelesModId = SDAConvert.ToNullableInt32(dataRow["ErtekelesModId"]); result.ErtekelesTema = dataRow["ErtekelesTema"].ToString(); result.IsTanulmanyiAtlagbaNemSzamit = SDAConvert.ToNullableBoolean(dataRow["IsTanulmanyiAtlagbaNemSzamit_BOOL"]); } else { result.MagatartasOsztalyzatId = SDAConvert.ToNullableInt32(dataRow["MagatartasOsztalyzatId"]); result.MagatartasSzoveg = dataRow["MagatartasSzoveg"].ToString(); result.MagatartasSzovegRovidNev = dataRow["MagatartasSzovegRovidNev"].ToString(); result.MagatartasErtekId = SDAConvert.ToNullableInt32(dataRow["MagatartasErtekId"]); result.SzorgalomOsztalyzatId = SDAConvert.ToNullableInt32(dataRow["SzorgalomOsztalyzatId"]); result.SzorgalomSzoveg = dataRow["SzorgalomSzoveg"].ToString(); result.SzorgalomSzovegRovidNev = dataRow["SzorgalomSzovegRovidNev"].ToString(); result.SzorgalomErtekId = SDAConvert.ToNullableInt32(dataRow["SzorgalomErtekId"]); } return result; } private static double? SetAtlag(TanuloErtekelesBaseGridRowCo tanuloErtekelesGridRow) { List atlagolhatoTanuloErtekelesek = tanuloErtekelesGridRow.TanuloErtekelesGridItemList .Where(x => x.TipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles && x.ErtekelesOsztalyzat.IsNotNullAndPositive() && (!x.IsTanulmanyiAtlagbaNemSzamit.HasValue || !x.IsTanulmanyiAtlagbaNemSzamit.Value)).ToList(); double? result = atlagolhatoTanuloErtekelesek.Any() ? atlagolhatoTanuloErtekelesek.WeightedAverage(x => x.ErtekelesOsztalyzat.Value, x => x.Suly ?? 100, 2) : null; return result; } private static string AddTanuloErtelelesekSpanToData(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo, List tanuloErtekelesGridItemList, DateTime naplozarasDatuma, Dictionary ertekelesModDictionary, int? tanuloId, bool isMagatartasSzorgalom, bool hasClickEvent = true, bool isMainGrid = true) { var result = new StringBuilder(); foreach (TanuloErtekelesGridItemCo tanuloErtekelesGridItem in tanuloErtekelesGridItemList) { if (result.Length != 0) { result.Append(' '); } result.Append("'); result.Append(tanuloErtekelesShortText); result.Append(""); } return result.ToString(); } private static string GetTanuloErtekelesSpanTipusMod(int tanevId, TanuloErtekelesGridItemCo tanuloErtekelesGridItem, bool isEvkoziErtekeles, bool isMagatartasSzorgalom, out int? ertekelesModId) { ertekelesModId = null; var tipusMod = string.Empty; if (isEvkoziErtekeles && !isMagatartasSzorgalom) { if (tanuloErtekelesGridItem.ErtekelesModId.IsEntityId()) { ertekelesModId = tanuloErtekelesGridItem.ErtekelesModId; tipusMod = HttpUtility.HtmlEncode(ertekelesModId.GetDisplayName(tanevId)); } } else { tipusMod = HttpUtility.HtmlEncode(tanuloErtekelesGridItem.TipusId.GetDisplayName(tanevId)); } return tipusMod; } private static string GetTanuloErtekelesSpanErtekelesTema(TanuloErtekelesGridItemCo tanuloErtekelesGridItem, bool isEvkoziErtekeles) { var ertekelesTemaSb = new StringBuilder(); ertekelesTemaSb.Append(isEvkoziErtekeles ? "Téma: " : "Feljegyzés: "); ertekelesTemaSb.Append(!string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.ErtekelesTema) ? HttpUtility.HtmlEncode(tanuloErtekelesGridItem.ErtekelesTema) : "-"); return ertekelesTemaSb.ToString(); } private static string GetTanuloErtekelesSpanSuly(TanuloErtekelesGridItemCo tanuloErtekelesGridItem, bool isErtekelesOsztalyzatSelected, bool isEvkoziErtekeles) { var suly = string.Empty; if (tanuloErtekelesGridItem.Suly.HasValue && isErtekelesOsztalyzatSelected && isEvkoziErtekeles) { suly = $"Súly: {tanuloErtekelesGridItem.Suly}%"; } return suly; } private static string GetTanuloErtekelesSpanErtekeloNyomtatasiNev(TanuloErtekelesGridItemCo tanuloErtekelesGridItem) { var ertekeloNyomtatasiNev = string.Empty; if (!string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.ErtekeloNyomtatasiNev)) { ertekeloNyomtatasiNev = HttpUtility.HtmlEncode(tanuloErtekelesGridItem.ErtekeloNyomtatasiNev); } return ertekeloNyomtatasiNev; } private static (string tanuloErtekelesText, string tanuloErtekelesShortText) GetTanuloErtekelesSpanTanuloErtekelesText(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo, TanuloErtekelesGridItemCo tanuloErtekelesGridItem, bool isMagatartasSzorgalom, out bool isErtekelesOsztalyzatSelected) { isErtekelesOsztalyzatSelected = false; string tanuloErtekelesText; string tanuloErtekelesShortText; if (!isMagatartasSzorgalom) { if (tanuloErtekelesGridItem.ErtekelesOsztalyzatId.IsEntityId()) { string ertekelesOsztalyzat = GetOsztalyzatTextShort( tanuloErtekelesGridItem.ErtekelesOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds, tipusId: tanuloErtekelesGridItem.TipusId, tema: tanuloErtekelesGridItem.ErtekelesTema); tanuloErtekelesText = ertekelesOsztalyzat; tanuloErtekelesShortText = ertekelesOsztalyzat; isErtekelesOsztalyzatSelected = true; } else if (!string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.ErtekelesSzoveg)) { string ertekelesSzoveg = string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.ErtekelesSzovegRovidNev) ? "sz" : HttpUtility.HtmlEncode(tanuloErtekelesGridItem.ErtekelesSzovegRovidNev); tanuloErtekelesText = ertekelesSzoveg; tanuloErtekelesShortText = ertekelesSzoveg; } else if (tanuloErtekelesGridItem.ErtekelesSzazalek.HasValue) { string ertekelesSzazalek = tanuloErtekelesGridItem.ErtekelesSzazalek + "%"; tanuloErtekelesText = ertekelesSzazalek; tanuloErtekelesShortText = ertekelesSzazalek; } else { var ex = new KretaException(ErrorResource.HibaTortentAMuveletKozben); SDAServer.Instance.Logger.ExceptionThrown(ex); throw ex; } } else { if (tanuloErtekelesGridItem.MagatartasOsztalyzatId.IsEntityId() || tanuloErtekelesGridItem.SzorgalomOsztalyzatId.IsEntityId()) { tanuloErtekelesText = $"{GetOsztalyzatTextShort(tanuloErtekelesGridItem.MagatartasOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds)}
{GetOsztalyzatTextShort(tanuloErtekelesGridItem.SzorgalomOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds)}"; tanuloErtekelesShortText = $"{GetOsztalyzatTextShort(tanuloErtekelesGridItem.MagatartasOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds)}/{GetOsztalyzatTextShort(tanuloErtekelesGridItem.SzorgalomOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds)}"; } else if (!string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.MagatartasSzoveg) || !string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.SzorgalomSzoveg)) { string magatartasSzoveg; if (string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.MagatartasSzoveg)) { magatartasSzoveg = "-"; } else { magatartasSzoveg = string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.MagatartasSzovegRovidNev) ? "sz" : HttpUtility.HtmlEncode(tanuloErtekelesGridItem.MagatartasSzovegRovidNev); } string szorgalomSzoveg; if (string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.SzorgalomSzoveg)) { szorgalomSzoveg = "-"; } else { szorgalomSzoveg = string.IsNullOrWhiteSpace(tanuloErtekelesGridItem.SzorgalomSzovegRovidNev) ? "sz" : HttpUtility.HtmlEncode(tanuloErtekelesGridItem.SzorgalomSzovegRovidNev); } tanuloErtekelesText = $"{magatartasSzoveg}
{szorgalomSzoveg}"; tanuloErtekelesShortText = $"{magatartasSzoveg}/{szorgalomSzoveg}"; } else if (tanuloErtekelesGridItem.MagatartasErtekId.IsEntityId() || tanuloErtekelesGridItem.SzorgalomErtekId.IsEntityId()) { tanuloErtekelesText = $"{GetMagatartasErtek(tanuloErtekelesGridItem.MagatartasErtekId, tanuloErtekelesGridHelperCo.TanevId)}
{GetSzorgalomErtek(tanuloErtekelesGridItem.SzorgalomErtekId, tanuloErtekelesGridHelperCo.TanevId)}"; tanuloErtekelesShortText = $"{GetMagatartasErtekShort(tanuloErtekelesGridItem.MagatartasErtekId)}/{GetSzorgalomErtekShort(tanuloErtekelesGridItem.SzorgalomErtekId)}"; } else { var ex = new KretaException(ErrorResource.HibaTortentAMuveletKozben); SDAServer.Instance.Logger.ExceptionThrown(ex); throw ex; } } return (tanuloErtekelesText, tanuloErtekelesShortText); } private static string GetTanuloErtekelesSpanClass(bool isMainGrid, int? tanuloId, bool modosithato) { var classSb = new StringBuilder("kendoTooltip tanuloErtekelesKendoTooltip"); if (!isMainGrid && tanuloId.IsEntityId()) { classSb.Append("_" + tanuloId); } if (modosithato) { classSb.Append(" clickable"); } return classSb.ToString(); } private static string GetTanuloErtekelesText(DataRow dataRow, int tanevId, bool pErtekelesTextTemaval = false) { var isMagatartasSzorgalom = SDAConvert.ToBoolean(dataRow["IsMagatartasSzorgalom_BOOL"]); string tanuloErtekelesText; if (!isMagatartasSzorgalom) { tanuloErtekelesText = GetErtekelesText(dataRow, tanevId); } else { var magatartasText = GetMagatartasText(dataRow, tanevId); var szorgalomText = GetSzorgalomText(dataRow, tanevId); tanuloErtekelesText = string.Format(TanuloErtekelesResource.MagatartasSzorgalomText, magatartasText, szorgalomText); } var ertekelesTema = dataRow["ErtekelesTema"].ToString(); tanuloErtekelesText += !string.IsNullOrWhiteSpace(ertekelesTema) && pErtekelesTextTemaval ? " - " + ertekelesTema : string.Empty; return tanuloErtekelesText; } private static string GetErtekelesText(DataRow dataRow, int tanevId) { string ertekelesText; if (SDAConvert.ToNullableInt32(dataRow["ErtekelesOsztalyzatId"]).IsEntityId()) { ertekelesText = SDAConvert.ToNullableInt32(dataRow["TantargyKategoriaId"]) == (int)TargyKategoriaTipusEnum.Szorgalom ? GetOsztalyzatTextSzorgalom(SDAConvert.ToInt32(dataRow["ErtekelesOsztalyzatId"]), tanevId) : GetOsztalyzatText(SDAConvert.ToInt32(dataRow["ErtekelesOsztalyzatId"]), tanevId); } else if (!string.IsNullOrWhiteSpace(dataRow["ErtekelesSzoveg"].ToString())) { var ertekelesFormazott = dataRow["ErtekelesSzovegFormazott"].ToString(); ertekelesText = !string.IsNullOrWhiteSpace(ertekelesFormazott) ? ertekelesFormazott : dataRow["ErtekelesSzoveg"].ToString(); } else if (!string.IsNullOrWhiteSpace(dataRow["ErtekelesSzazalek"].ToString())) { ertekelesText = SDAConvert.ToInt32(dataRow["ErtekelesSzazalek"]) + "%"; } else { var ex = new KretaException(ErrorResource.HibaTortentAMuveletKozben); SDAServer.Instance.Logger.ExceptionThrown(ex); throw ex; } return ertekelesText; } private static string GetMagatartasText(DataRow dataRow, int tanevId) { string magatartasText = string.Empty; if (SDAConvert.ToNullableInt32(dataRow["MagatartasOsztalyzatId"]).IsEntityId() || SDAConvert.ToNullableInt32(dataRow["SzorgalomOsztalyzatId"]).IsEntityId()) { if (SDAConvert.ToNullableInt32(dataRow["MagatartasOsztalyzatId"]).IsEntityId()) { magatartasText = GetOsztalyzatText(SDAConvert.ToInt32(dataRow["MagatartasOsztalyzatId"]), tanevId); } } else if (!string.IsNullOrWhiteSpace(dataRow["MagatartasSzoveg"].ToString()) || !string.IsNullOrWhiteSpace(dataRow["SzorgalomSzoveg"].ToString())) { if (!string.IsNullOrWhiteSpace(dataRow["MagatartasSzoveg"].ToString())) { var magatartasFormazott = dataRow["MagatartasSzovegFormazott"].ToString(); magatartasText = !string.IsNullOrWhiteSpace(magatartasFormazott) ? magatartasFormazott : dataRow["MagatartasSzoveg"].ToString(); } } else if (SDAConvert.ToNullableInt32(dataRow["MagatartasErtekId"]).IsEntityId() || SDAConvert.ToNullableInt32(dataRow["SzorgalomErtekId"]).IsEntityId()) { if (SDAConvert.ToNullableInt32(dataRow["MagatartasErtekId"]).IsEntityId()) { magatartasText = GetMagatartasErtek(SDAConvert.ToInt32(dataRow["MagatartasErtekId"]), tanevId); } } else { var ex = new KretaException(ErrorResource.HibaTortentAMuveletKozben); SDAServer.Instance.Logger.ExceptionThrown(ex); throw ex; } return magatartasText; } private static string GetSzorgalomText(DataRow dataRow, int tanevId) { string szorgalomText = string.Empty; if (SDAConvert.ToNullableInt32(dataRow["MagatartasOsztalyzatId"]).IsEntityId() || SDAConvert.ToNullableInt32(dataRow["SzorgalomOsztalyzatId"]).IsEntityId()) { if (SDAConvert.ToNullableInt32(dataRow["SzorgalomOsztalyzatId"]).IsEntityId()) { szorgalomText = GetOsztalyzatText(SDAConvert.ToInt32(dataRow["SzorgalomOsztalyzatId"]), tanevId); } } else if (!string.IsNullOrWhiteSpace(dataRow["MagatartasSzoveg"].ToString()) || !string.IsNullOrWhiteSpace(dataRow["SzorgalomSzoveg"].ToString())) { if (!string.IsNullOrWhiteSpace(dataRow["SzorgalomSzoveg"].ToString())) { var szorgalomFormazott = dataRow["SzorgalomSzovegFormazott"].ToString(); szorgalomText = !string.IsNullOrWhiteSpace(szorgalomFormazott) ? szorgalomFormazott : dataRow["SzorgalomSzoveg"].ToString(); } } else if (SDAConvert.ToNullableInt32(dataRow["MagatartasErtekId"]).IsEntityId() || SDAConvert.ToNullableInt32(dataRow["SzorgalomErtekId"]).IsEntityId()) { if (SDAConvert.ToNullableInt32(dataRow["SzorgalomErtekId"]).IsEntityId()) { szorgalomText = GetSzorgalomErtek(SDAConvert.ToInt32(dataRow["SzorgalomErtekId"]), tanevId); } } else { var ex = new KretaException(ErrorResource.HibaTortentAMuveletKozben); SDAServer.Instance.Logger.ExceptionThrown(ex); throw ex; } return szorgalomText; } private static string GetToolTipStyle(int tipusId, int? ertekelesModId, Dictionary ertekelesModDictionary) { string result; switch (tipusId) { case (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Evkozi); break; case (int)ErtekelesTipusEnum.felevi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Felevi); break; case (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Evvegi); break; case (int)ErtekelesTipusEnum.I_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.I_Ne); break; case (int)ErtekelesTipusEnum.II_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.II_Ne); break; case (int)ErtekelesTipusEnum.III_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.III_Ne); break; case (int)ErtekelesTipusEnum.IV_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.IV_Ne); break; case (int)ErtekelesTipusEnum.modulzaro_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Modulzaro); break; case (int)ErtekelesTipusEnum.potvizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Potvizsga); break; case (int)ErtekelesTipusEnum.osztalyozo_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Osztalyozo); break; case (int)ErtekelesTipusEnum.kulonbozeti_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Kulonbozeti); break; case (int)ErtekelesTipusEnum.na: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Na); break; default: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Na); break; } return result; } private static string GetTanuloErtekelesStyle(int tipusId, int? ertekelesModId, Dictionary ertekelesModDictionary) { string result; switch (tipusId) { case (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Evkozi); break; case (int)ErtekelesTipusEnum.felevi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Felevi, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.evvegi_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Evvegi, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.I_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.I_Ne, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.II_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.II_Ne, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.III_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.III_Ne, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.IV_ne_jegy_ertekeles: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.IV_Ne, isBackgrouded: true); break; case (int)ErtekelesTipusEnum.modulzaro_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Modulzaro, isBordered: true); break; case (int)ErtekelesTipusEnum.potvizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Potvizsga, isBordered: true); break; case (int)ErtekelesTipusEnum.osztalyozo_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Osztalyozo, isBordered: true); break; case (int)ErtekelesTipusEnum.kulonbozeti_vizsga: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Kulonbozeti, isBordered: true); break; case (int)ErtekelesTipusEnum.na: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Na, isBordered: true); break; default: result = GetJegyStyle(ertekelesModId, ertekelesModDictionary, TanuloErtekelesColorCodes.Na); break; } return result; } private static string GetJegyStyle(int? ertekelesModId, Dictionary ertekelesModDictionary, string defaultColor, bool isBackgrouded = false, bool isBordered = false) { string colorCode = defaultColor; bool isBold = false; if (ertekelesModId.IsEntityId()) { colorCode = ertekelesModDictionary[ertekelesModId.Value].Color; isBold = ertekelesModDictionary[ertekelesModId.Value].IsBold; } string style = isBackgrouded ? $"color: #FFFFFF; background-color: #{colorCode}; " : $"color: #{colorCode}; "; style += isBordered ? $"padding: 0px 2px 0px 2px; border: solid 1px #{colorCode}; " : "padding: 1px 3px 1px 3px; "; if (isBold) { style += " font-weight: bold; "; } return style; } public static string GetOsztalyzatText(int? osztalyzat, int tanevId) { switch (osztalyzat) { case (int)OsztalyzatTipusEnum.elegtelen_1_: return OsztalyzatTipusEnum.elegtelen_1_.GetDisplayName(tanevId); case (int)OsztalyzatTipusEnum.elegseges_2_: return OsztalyzatTipusEnum.elegseges_2_.GetDisplayName(tanevId); case (int)OsztalyzatTipusEnum.kozepes_3_: return OsztalyzatTipusEnum.kozepes_3_.GetDisplayName(tanevId); case (int)OsztalyzatTipusEnum.jo_4_: return OsztalyzatTipusEnum.jo_4_.GetDisplayName(tanevId); case (int)OsztalyzatTipusEnum.jeles_5_: return OsztalyzatTipusEnum.jeles_5_.GetDisplayName(tanevId); default: return "-"; } } public static string GetOsztalyzatTextSzorgalom(int? osztalyzat, int tanevId) { switch (osztalyzat) { case (int)OsztalyzatTipusEnum.elegtelen_1_: return OsztalyzatTipusEnum.elegtelen_1_.GetDisplayName(tanevId); case (int)OsztalyzatTipusEnum.elegseges_2_: return TanuloErtekelesResource.HanyagFullText; case (int)OsztalyzatTipusEnum.kozepes_3_: return TanuloErtekelesResource.ValtozoFullText; case (int)OsztalyzatTipusEnum.jo_4_: return TanuloErtekelesResource.JoFullText; case (int)OsztalyzatTipusEnum.jeles_5_: return TanuloErtekelesResource.PeldasFullText; default: return "-"; } } public static string GetMagatartasErtek(int? magatartasErtekId, int tanevId) { switch (magatartasErtekId) { case (int)MagatartasErtekelesTipusEnum.rossz: return MagatartasErtekelesTipusEnum.rossz.GetDisplayName(tanevId); case (int)MagatartasErtekelesTipusEnum.valtozo: return MagatartasErtekelesTipusEnum.valtozo.GetDisplayName(tanevId); case (int)MagatartasErtekelesTipusEnum.jo: return MagatartasErtekelesTipusEnum.jo.GetDisplayName(tanevId); case (int)MagatartasErtekelesTipusEnum.peldas: return MagatartasErtekelesTipusEnum.peldas.GetDisplayName(tanevId); default: return "-"; } } private static string GetMagatartasErtekShort(int? magatartasErtekId) { switch (magatartasErtekId) { case (int)MagatartasErtekelesTipusEnum.rossz: return "R"; case (int)MagatartasErtekelesTipusEnum.valtozo: return "V"; case (int)MagatartasErtekelesTipusEnum.jo: return "J"; case (int)MagatartasErtekelesTipusEnum.peldas: return "P"; default: return "-"; } } public static string GetSzorgalomErtek(int? szorgalomErtekId, int tanevId) { switch (szorgalomErtekId) { case (int)SzorgalomErtekelesTipusEnum.hanyag: return SzorgalomErtekelesTipusEnum.hanyag.GetDisplayName(tanevId); case (int)SzorgalomErtekelesTipusEnum.valtozo: return SzorgalomErtekelesTipusEnum.valtozo.GetDisplayName(tanevId); case (int)SzorgalomErtekelesTipusEnum.jo: return SzorgalomErtekelesTipusEnum.jo.GetDisplayName(tanevId); case (int)SzorgalomErtekelesTipusEnum.peldas: return SzorgalomErtekelesTipusEnum.peldas.GetDisplayName(tanevId); default: return "-"; } } private static string GetSzorgalomErtekShort(int? szorgalomErtekId) { switch (szorgalomErtekId) { case (int)SzorgalomErtekelesTipusEnum.hanyag: return "H"; case (int)SzorgalomErtekelesTipusEnum.valtozo: return "V"; case (int)SzorgalomErtekelesTipusEnum.jo: return "J"; case (int)SzorgalomErtekelesTipusEnum.peldas: return "P"; default: return "-"; } } private static void SetTanuloErtekelesHaviAtlagColumns(DataTable gridDataTable) { gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Szeptember_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Oktober_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.November_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.December_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.JanuarI_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.I_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.JanuarII_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Februar_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Marcius_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Aprilis_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Majus_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.Junius_HaviAtlag, typeof(string))); gridDataTable.Columns.Add(new DataColumn(TanuloErtekelesHaviAtlagColumnNames.II_HaviAtlag, typeof(string))); } private static void SetTanuloErtekelesHaviAtlagValues(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo, DataRow gridDataRow, TanuloErtekelesBaseGridRowCo tanuloErtekelesGridRow) { if (!tanuloErtekelesGridRow.IsMagatartasSzorgalom) { gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Szeptember_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Szeptember)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Oktober_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Oktober)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.November_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.November)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.December_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.December)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.JanuarI_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.JanuarI)); var iTanuloErtekelesGridRow = tanuloErtekelesGridRow.I == null ? new List() : new List { tanuloErtekelesGridRow.I }; gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.I_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, iTanuloErtekelesGridRow)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.JanuarII_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.JanuarII)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Februar_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Februar)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Marcius_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Marcius)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Aprilis_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Aprilis)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Majus_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Majus)); gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.Junius_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, tanuloErtekelesGridRow.Junius)); var iiTanuloErtekelesGridRow = tanuloErtekelesGridRow.II == null ? new List() : new List { tanuloErtekelesGridRow.II }; gridDataRow.SetField(TanuloErtekelesHaviAtlagColumnNames.II_HaviAtlag, AddTanuloErtelelesekHaviAtlagJson(tanuloErtekelesGridHelperCo, iiTanuloErtekelesGridRow)); } } private static string AddTanuloErtelelesekHaviAtlagJson(TanuloErtekelesGridHelperCo tanuloErtekelesGridHelperCo, List tanuloErtekelesGridItemList) { string result = null; var tanuloErtekelesHaviAtlagJsonList = new List<(string Ertekeles, string Suly)>(); foreach (var tanuloErtekelesGridItem in tanuloErtekelesGridItemList.Where(e => e.ErtekelesOsztalyzatId.IsEntityId() && e.IsTanulmanyiAtlagbaNemSzamit == false && !HaviAtlagbaNemSzamitoErtekelesTipusIdList.Contains(e.TipusId))) { var ertekeles = GetOsztalyzatTextShort(tanuloErtekelesGridItem.ErtekelesOsztalyzatId, tanuloErtekelesGridHelperCo.EgyszerAdhatoErtekelesTipusIds); var suly = "100"; if (tanuloErtekelesGridItem.Suly != null && tanuloErtekelesGridItem.TipusId == (int)ErtekelesTipusEnum.evkozi_jegy_ertekeles) { suly = tanuloErtekelesGridItem.Suly.ToString(); } tanuloErtekelesHaviAtlagJsonList.Add((ertekeles, suly)); } if (tanuloErtekelesHaviAtlagJsonList.Any()) { var jsonFormat = "{{ \"haviAtlagErtekek\": [{0}] }}"; var jsonList = tanuloErtekelesHaviAtlagJsonList.Select(e => $"{{ \"ertekeles\": {e.Ertekeles}, \"suly\": {e.Suly} }}"); result = string.Format(jsonFormat, string.Join(",", jsonList)); } return result; } } }