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

View file

@ -0,0 +1,241 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using Kreta.Core.ConnectionType;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class TanulokTantargyiStatisztika : BaseNyomtatvanyExcel
{
private List<int> osztalyFilterIds { get; set; }
private bool IsMagatartasSzorgalomNemLatszik { get; } = false;
public TanulokTantargyiStatisztika(IConnectionType connectionType, List<int> osztalyFilterIds, bool isMultisheetExcel = false, string templateFilename = null, bool isMagatartasSzorgalomNemLatszik = false) : base(connectionType, isMultisheetExcel)
{
this.osztalyFilterIds = osztalyFilterIds;
StoredProcedure = "sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika";
IsMagatartasSzorgalomNemLatszik = isMagatartasSzorgalomNemLatszik;
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
dbParameters.TryGetValue("pElmeletgyakorlat", out string elmeletGyakorlat);
if (string.IsNullOrWhiteSpace(elmeletGyakorlat))
elmeletGyakorlat = "0";
dbParameters.TryGetValue("pErtekelestipusaId", out string ertekelesTipusaId);
if (string.IsNullOrWhiteSpace(ertekelesTipusaId))
ertekelesTipusaId = Convert.ToString(Enums.ErtekelesTipusEnum.evvegi_jegy_ertekeles);
// Adatforrás összeállítása
SetExcelDataSet();
DataTable tanuloDt = DataSet.Tables[0];
DataTable tantargyakDt = DataSet.Tables[1];
DataTable ertekelesDt = DataSet.Tables[2];
DataTable magszorgDt = DataSet.Tables[3];
DataTable mulasztasDt = DataSet.Tables[4];
DataTable mulasztasSumDt = DataSet.Tables[5];
DataTable szamossagDt = DataSet.Tables[6];
if (osztalyFilterIds.Count > 0)
{
DataView tanuloDV = new DataView(tanuloDt);
tanuloDV.RowFilter = string.Format("OSZTALYID IN ({0})", string.Join(", ", osztalyFilterIds.ToArray()));
tanuloDt = tanuloDV.ToTable();
var filteredTanuloIds = new List<string>();
foreach (DataRow row in tanuloDt.Rows)
{
filteredTanuloIds.Add($"'{(string)row["TANULOID"]}'");
}
var filteredIds = string.Join(", ", filteredTanuloIds.ToArray());
DataView ertekelesDV = new DataView(ertekelesDt);
ertekelesDV.RowFilter = $"TANULOID IN ({filteredIds})";
ertekelesDt = ertekelesDV.ToTable();
DataView magszorgDV = new DataView(magszorgDt);
magszorgDV.RowFilter = $"TANULOID IN ({filteredIds})";
magszorgDt = magszorgDV.ToTable();
DataView mulasztasDV = new DataView(mulasztasDt);
mulasztasDV.RowFilter = $"TANULOID IN ({filteredIds})";
mulasztasDt = mulasztasDV.ToTable();
DataView mulasztasSumDV = new DataView(mulasztasSumDt);
mulasztasSumDV.RowFilter = $"TANULOID IN ({filteredIds})";
mulasztasSumDt = mulasztasSumDV.ToTable();
DataView szamossagDV = new DataView(szamossagDt);
szamossagDV.RowFilter = $"TANULOID IN ({filteredIds})";
szamossagDt = szamossagDV.ToTable();
}
//Munkalap összeállítása
ExcelWorksheet worksheet = CreateSheet(Resources.ExcelNyomtatvanyResource.TanulokStatisztikaMunkalapnev, sheetIndex, eOrientation.Landscape, true);
worksheet.Row(1).Height = 120;
worksheet.Column(1).Width = 30;
worksheet.Column(2).Width = 13;
worksheet.Column(3).Width = 10;
worksheet.Column(4).Width = 24;
worksheet.View.FreezePanes(2, 5);
for (int targycol = 5; targycol < tantargyakDt.Rows.Count + 4 + 3 + (elmeletGyakorlat.Equals("0") ? 8 : 14); targycol++)
worksheet.Column(targycol).Width = 6;
AddLabelCell(worksheet, 1, 1, Resources.ExcelNyomtatvanyResource.TanulokStatisztikaTanulok, HeaderStyleBottomBordered);
AddLabelCell(worksheet, 1, 2, Resources.ExcelNyomtatvanyResource.TanulokStatisztikaOktAzon, HeaderStyleBottomBordered);
AddLabelCell(worksheet, 1, 3, Resources.ExcelNyomtatvanyResource.TanulokStatisztikaOsztalyok, HeaderStyleBottomBordered);
AddLabelCell(worksheet, 1, 4, Resources.ExcelNyomtatvanyResource.TanulokStatisztikaBesorolas, HeaderStyleBottomBordered);
//AddLabelRange(worksheet, 1, 3, 1, 2/*Magatartás szorgalom*/ + tantargyakDt.Rows.Count + 1 + (elmeletGyakorlat.Equals("0") ? 8 : 14), osztalyDt.Rows[0]["C_NEV"].ToString(), DocheaderStyle2);
//Értékelés statisztika hozzáadása
int colOffset = 1;
int[] retDimErtekeles;
string[] adatMezo;
string[] megjegyzesMezo;
if (IsMagatartasSzorgalomNemLatszik)
{
adatMezo = new string[] { "ERTEKELES" };
megjegyzesMezo = new string[] { "ERTEKELES_SZOVEG_MEGJEGYZES" };
retDimErtekeles = AddDataTablePivotTable(worksheet, 1, colOffset, tantargyakDt, "TANTARGYID", "TANTARGY_NEV", tanuloDt, "TANULOID", new[] { "TANULONEV", "OKTATASIAZONOSITO", "OSZTALYNEV", "BESOROLASA" }, ertekelesDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, megjegyzesMezo, new[] { "AVERAGE", "IF,#3=0,#-1,1", null, null, "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag2, null, null, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaBukasokSzama }, new[] { Numeric2BoldStyleBottomBordered, Numeric2BoldStyleBottomBordered, null, null, IntegerBoldStyleBottomBordered }, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
}
else
{
var magatartasHeaderDtCreatorArray = new List<string[]>
{
new[] { "id", "name", "torolt" },
new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaMagatartas, "F" }
};
int[] retDimMag = AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(magatartasHeaderDtCreatorArray), new[] { "TOROLT" }, "name", tanuloDt, new[] { "TANULOID" }, new[] { "TANULONEV", "OKTATASIAZONOSITO", "OSZTALYNEV", "BESOROLASA" }, magszorgDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "MagatartasOsztalyzat" }, null, null, null, null, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
colOffset += retDimMag[1];
var szorgalomHeaderDtCreatorArray = new List<string[]>
{
new[] { "id", "name", "torolt" },
new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaSzorgalom, "F" }
};
int[] retDimSzorg = AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(szorgalomHeaderDtCreatorArray), new[] { "TOROLT" }, "name", tanuloDt, new[] { "TANULOID" }, null, magszorgDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { "SzorgalomOsztalyzat" }, null, null, null, null, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, null, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
colOffset += retDimSzorg[1];
adatMezo = new string[] { "ERTEKELES" };
megjegyzesMezo = new string[] { "ERTEKELES_SZOVEG_MEGJEGYZES" };
retDimErtekeles = AddDataTablePivotTable(worksheet, 1, colOffset, tantargyakDt, "TANTARGYID", "TANTARGY_NEV", tanuloDt, "TANULOID", null, ertekelesDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, megjegyzesMezo, new[] { "AVERAGE", "IF,#3=0,#-1,1", null, null, "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTanulmanyiAtlag2, null, null, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaBukasokSzama }, new[] { Numeric2BoldStyleBottomBordered, Numeric2BoldStyleBottomBordered, null, null, IntegerBoldStyleBottomBordered }, new[] { "AVERAGE", "COUNTIF,5", "COUNTIF,4", "COUNTIF,3", "COUNTIF,2", "COUNTIF,1" }, new[] { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaTantargyiAtlag, "5", "4", "3", "2", "1" }, new[] { Numeric2BoldStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered, IntegerStyleBottomBordered });
}
colOffset += retDimErtekeles[1];
//Átlagok átlaga
AddAggregateFormulaCell(worksheet, retDimErtekeles[0] - 5, colOffset - 5, "AVERAGE", 2, colOffset - 5, 1 + retDimErtekeles[0] - 7, colOffset - 5, true, Numeric2BoldBigerStyleBottomBordered);
//Átlagok 2 átlaga
AddAggregateFormulaCell(worksheet, retDimErtekeles[0] - 5, colOffset - 4, "AVERAGE", 2, colOffset - 4, 1 + retDimErtekeles[0] - 7, colOffset - 4, true, Numeric2BoldBigerStyleBottomBordered);
//Bukások száma
AddAggregateFormulaCell(worksheet, retDimErtekeles[0] - 5, colOffset - 1, "SUM", 2, colOffset - 1, 1 + retDimErtekeles[0] - 7, colOffset - 1, true, IntegerBoldStyleBottomBordered);
//Dicséret, Kitűnő számosságok
List<string> szamossagTipusok = new List<string> { "Dicseret", "Kituno" };
List<string> szamossagTipusokNev = new List<string> { Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaDicseretekSzama, Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaKitunoErtekelesekSzama };
int szamossagPos = 0;
foreach (var szamossagTipus in szamossagTipusok)
{
var szamossag1DtCreatorArray = new List<string[]>
{
new[] { "id", "name", "TOROLT"},
new[] { "1", szamossagTipusokNev[szamossagPos], "F" }
};
AddDataTablePivotTable(worksheet, 1, colOffset - 3 + szamossagPos, CreateDataTable(szamossag1DtCreatorArray), new string[0], "name",
tanuloDt, new[] { "TANULOID" }, null, szamossagDt, IntegerBoldStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, new[] { szamossagTipus }, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
szamossagPos++;
}
int[] retDimSzamossag = new[] { retDimErtekeles[0], 2 };
//Mulasztási statisztika hozzáadása
List<string[]> hianyzasHeaderDtCreatorArray = new List<string[]>();
List<string[]> kesespercHeaderDtCreatorArray = new List<string[]>();
List<string[]> keseshianyzasHeaderDtCreatorArray = new List<string[]>();
List<string[]> feldolgozandokHeaderDtCreatorArray = new List<string[]>();
List<string> hianyzaskesespercFilter = new List<string>(new[] { "tipus_char", "c_igazolt" });
List<string> keseshianyzasFilter = new List<string>(new[] { "c_igazolt" });
if (elmeletGyakorlat.Equals("0"))
{
hianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
hianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltHianyzas, "H", "T" });
hianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanHianyzas, "H", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
kesespercHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltKesesPerc, "K", "T" });
kesespercHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanKesesPerc, "K", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "c_igazolt" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazoltKesesHianyzas, "T" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaIgazolatlanKesesHianyzas, "F" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.FeldolgozatlanMulasztas, "H", "-" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.FeldolgozatlanKesesPerc, "K", "-" });
}
else if (elmeletGyakorlat.Equals("1"))
{
hianyzaskesespercFilter.Add("c_gyakorlati");
keseshianyzasFilter.Add("c_gyakorlati");
hianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
hianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltHianyzas, "H", "T", "F" });
hianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltHianyzas, "H", "T", "T" });
hianyzasHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanHianyzas, "H", "F", "F" });
hianyzasHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanHianyzas, "H", "F", "T" });
kesespercHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
kesespercHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltKesesPerc, "K", "T", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltKesesPerc, "K", "T", "T" });
kesespercHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanKesesPerc, "K", "F", "F" });
kesespercHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanKesesPerc, "K", "F", "T" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "c_igazolt", "c_gyakorlati" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazoltKesesHianyzas, "T", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazoltKesesHianyzas, "T", "T" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaElmeletiIgazolatlanKesesHianyzas, "F", "F" });
keseshianyzasHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.OsztalyStatisztikaGyakorlatiIgazolatlanKesesHianyzas, "F", "T" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "id", "mulasztas_name", "tipus_char", "c_igazolt", "c_gyakorlati" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "1", Resources.ExcelNyomtatvanyResource.FeldolgozatlanElmeletiMulasztas, "H", "-", "F" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "2", Resources.ExcelNyomtatvanyResource.FeldolgozatlanGyakorlatiMulasztas, "H", "-", "T" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "3", Resources.ExcelNyomtatvanyResource.FeldolgozatlanElmeletiKesesPerc, "K", "-", "F" });
feldolgozandokHeaderDtCreatorArray.Add(new[] { "4", Resources.ExcelNyomtatvanyResource.FeldolgozatlanGyakorlatiKesesPerc, "K", "-", "T" });
}
adatMezo = new[] { "MULASZTASOK_SZAMA" };
int[] retDimHianyzas = AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(hianyzasHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
colOffset += retDimHianyzas[1];
adatMezo = new[] { "KESESPERC" };
int[] retDimKesesperc = AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(kesespercHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
colOffset += retDimKesesperc[1];
adatMezo = new[] { "MULASZTASOK_SZAMA" };
int[] retDimMulasztas = AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(keseshianyzasHeaderDtCreatorArray), keseshianyzasFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "TANULOID" }, null, mulasztasSumDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
colOffset += retDimMulasztas[1];
adatMezo = new[] { "FELDOLGOZATLANOK_SZAMA" };
AddDataTablePivotTable(worksheet, 1, colOffset, CreateDataTable(feldolgozandokHeaderDtCreatorArray), hianyzaskesespercFilter.ToArray(), "mulasztas_name", tanuloDt, new[] { "TANULOID" }, null, mulasztasDt, IntegerStyleBottomBordered, HeaderStyle90BottomBordered, HeaderStyleBottomBordered, adatMezo, null, null, null, null, new[] { "SUM" }, null, new[] { IntegerBoldStyleBottomBordered });
}
}
}