kreta/Kreta.BusinessLogic/Helpers/Nyomtatvanyok/Excel/TanulokMulasztasaiExcel.cs
2024-03-13 00:33:46 +01:00

249 lines
14 KiB
C#

using System.Data;
using System.IO;
using System.Linq;
using Kreta.Core.ConnectionType;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class TanulokMulasztasaiExcel : BaseNyomtatvanyExcelWithDataSet
{
private bool _elmeletGyakorlat = false;
public TanulokMulasztasaiExcel(IConnectionType connectionType, bool isMultisheetExcel = false, string templateFilename = null, bool elmeletGyakorlat = false) : base(connectionType, isMultisheetExcel)
{
FileInfo exFile = null;
if (templateFilename != null)
{
exFile = new FileInfo(templateFilename);
}
ExcelPackage = (exFile == null) ? new ExcelPackage() : new ExcelPackage(exFile);
_elmeletGyakorlat = elmeletGyakorlat;
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(DataSet ds, int osztalyId, int sheetIndex = 1)
{
// Adatforrás összeállítása
SetExcelDataSet(ds);
DataTable fejlecDt = DataSet.Tables[0];
var dv = DataSet.Tables[1].DefaultView;
dv.Sort = "OsztalyNev ASC,TanuloNev ASC";
DataTable mulasztasokDt = dv.ToTable(DataSet.Tables[1].TableName);
//Munkalap összeállítása
string osztalyNev = fejlecDt.Rows.Cast<DataRow>().First(x => (int)x["OsztalyId"] == osztalyId)["OsztalyNev"].ToString();
ExcelWorksheet worksheet;
int startRow = 2;
if (ExcelPackage.Workbook.Worksheets.All(x => x.Name != osztalyNev))
{
if (_elmeletGyakorlat)
{
worksheet = CreateSheet(osztalyNev, sheetIndex, eOrientation.Landscape, true);
worksheet.Row(1).Height = 15;
worksheet.Row(2).Height = 15;
worksheet.Row(3).Height = 15;
worksheet.View.FreezePanes(4, 2);
//Fejléc kialakítása
AddLabelRange(worksheet, 1, 1, 3, 1, "Tanuló neve", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 2, 3, 2, "Oktatási azonosító", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 3, 3, 3, "Osztály", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 4, 1, 18, "Gyakorlati", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 19, 1, 37, "Elméleti", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 38, 2, 48, "Igazolások típusa", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 4, 2, 6, "Tanórai hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 7, 2, 9, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 10, 2, 12, "Tanórai késések száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 13, 2, 15, "Tanóráról késett percek száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 16, 2, 18, "Tanóráról késett órák", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 19, 2, 21, "Tanórai hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 22, 2, 24, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 25, 2, 27, "Tanórai késések száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 28, 2, 30, "Tanóráról késett percek száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 31, 2, 33, "Tanóráról késett órák", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 34, 2, 35, "Hozott hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 2, 36, 2, 37, "Hozott késett perc", DocheaderStyleSideBordered);
for (int i = 0; i < 10; ++i)
{
AddLabelCell(worksheet, 3, 4 + (i * 3), "Igazolandó", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 5 + (i * 3), "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 6 + (i * 3), "Igazolatlan", DocheaderStyleSideBordered);
}
AddLabelCell(worksheet, 3, 34, "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 35, "Igazolatlan", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 36, "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 37, "Igazolatlan", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 38, "Orvosi igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 39, "Gondviselői igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 40, "Hivatalos távollét", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 41, "Iskolaérdekű távollét", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 42, "Szolgáltatói igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 43, "Iskolai engedély", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 44, "Pályaválasztási célú igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 45, "Kikérő", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 46, "Táppénz", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 47, "Hatósági házi karantén", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 3, 48, "Egyéb", DocheaderStyleSideBordered);
}
else
{
worksheet = CreateSheet(osztalyNev, sheetIndex, eOrientation.Landscape, true);
worksheet.Row(1).Height = 15;
worksheet.Row(2).Height = 15;
worksheet.View.FreezePanes(3, 2);
//Fejléc kialakítása
AddLabelRange(worksheet, 1, 1, 2, 1, "Tanuló neve", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 2, 2, 2, "Oktatási azonosító", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 3, 2, 3, "Osztály", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 4, 1, 6, "Tanórai hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 7, 1, 9, "Tanórán kívüli hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 10, 1, 12, "Tanórai késések száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 13, 1, 15, "Tanóráról késett percek száma", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 16, 1, 18, "Tanóráról késett órák", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 19, 1, 20, "Hozott hiányzás", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 21, 1, 22, "Hozott késett perc", DocheaderStyleSideBordered);
AddLabelRange(worksheet, 1, 23, 1, 33, "Igazolások típusa", DocheaderStyleSideBordered);
for (int i = 0; i < 5; ++i)
{
AddLabelCell(worksheet, 2, 4 + (i * 3), "Igazolandó", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 5 + (i * 3), "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 6 + (i * 3), "Igazolatlan", DocheaderStyleSideBordered);
}
AddLabelCell(worksheet, 2, 19, "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 20, "Igazolatlan", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 21, "Igazolt", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 22, "Igazolatlan", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 23, "Orvosi igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 24, "Gondviselői igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 25, "Hivatalos távollét", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 26, "Iskolaérdekű távollét", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 27, "Szolgáltatói igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 28, "Iskolai engedély", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 29, "Pályaválasztási célú igazolás", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 30, "Kikérő", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 31, "Táppénz", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 32, "Hatósági házi karantén", DocheaderStyleSideBordered);
AddLabelCell(worksheet, 2, 33, "Egyéb", DocheaderStyleSideBordered);
}
}
else
{
worksheet = ExcelPackage.Workbook.Worksheets.Single(x => x.Name == osztalyNev);
}
startRow = worksheet.Dimension.End.Row + 1;
string[] columns;
if (_elmeletGyakorlat)
{
columns = new string[]
{
"TanuloNev"
, "TanuloOktAzon"
, "OsztalyNev"
, "TanoraiHianyzasIgazolandoGyakorlati"
, "TanoraiHianyzasIgazoltGyakorlati"
, "TanoraiHianyzasIgazolatlanGyakorlati"
, "TanoranKivuliHianyzasIgazolandoGyakorlati"
, "TanoranKivuliHianyzasIgazoltGyakorlati"
, "TanoranKivuliHianyzasIgazolatlanGyakorlati"
, "TanoraiKesesDarabszamIgazolandoGyakorlati"
, "TanoraiKesesDarabszamIgazoltGyakorlati"
, "TanoraiKesesDarabszamIgazolatlanGyakorlati"
, "TanoraiKesesIgazolandoGyakorlatiPerc"
, "TanoraiKesesIgazoltGyakorlatiPerc"
, "TanoraiKesesIgazolatlanGyakorlatiPerc"
, "SzamitottKesesIgazolandoGyakorlati"
, "SzamitottKesesIgazoltGyakorlati"
, "SzamitottKesesIgazolatlanGyakorlati"
, "TanoraiHianyzasIgazolandoElmeleti"
, "TanoraiHianyzasIgazoltElmeleti"
, "TanoraiHianyzasIgazolatlanElmeleti"
, "TanoranKivuliHianyzasIgazolandoElmeleti"
, "TanoranKivuliHianyzasIgazoltElmeleti"
, "TanoranKivuliHianyzasIgazolatlanElmeleti"
, "TanoraiKesesDarabszamIgazolandoElmeleti"
, "TanoraiKesesDarabszamIgazoltElmeleti"
, "TanoraiKesesDarabszamIgazolatlanElmeleti"
, "TanoraiKesesIgazolandoElmeletiPerc"
, "TanoraiKesesIgazoltElmeletiPerc"
, "TanoraiKesesIgazolatlanElmeletiPerc"
, "SzamitottKesesIgazolandoElmeleti"
, "SzamitottKesesIgazoltElmeleti"
, "SzamitottKesesIgazolatlanElmeleti"
, "HozottIgazoltHianyzas"
, "HozottIgazolatlanHianyzas"
, "HozottIgazoltHianyzasPerc"
, "HozottIgazolatlanKesesPerc"
, "OrvosiIgazolas"
, "SzuloiIgazolas"
, "HivatalosTavolletIgazolas"
, "IskolaerdekuTavolletIgazolas"
, "SzolgaltatoiIgazolas"
, "IskolaiEngedelyIgazolas"
, "PalyavalasztasiCeluIgazolas"
, "KikeroIgazolas"
, "TappenzIgazolas"
, "HatosagiHaziKaranten"
, "EgyebIgazolas"
};
}
else
{
columns = new string[]
{
"TanuloNev"
, "TanuloOktAzon"
, "OsztalyNev"
, "TanoraiHianyzasIgazolando"
, "TanoraiHianyzasIgazolt"
, "TanoraiHianyzasIgazolatlan"
, "TanoranKivuliHianyzasIgazolando"
, "TanoranKivuliHianyzasIgazolt"
, "TanoranKivuliHianyzasIgazolatlan"
, "TanoraiKesesDarabszamIgazolando"
, "TanoraiKesesDarabszamIgazolt"
, "TanoraiKesesDarabszamIgazolatlan"
, "TanoraiKesesIgazolandoPerc"
, "TanoraiKesesIgazoltPerc"
, "TanoraiKesesIgazolatlanPerc"
, "SzamitottKesesIgazolando"
, "SzamitottKesesIgazolt"
, "SzamitottKesesIgazolatlan"
, "HozottIgazoltHianyzas"
, "HozottIgazolatlanHianyzas"
, "HozottIgazoltHianyzasPerc"
, "HozottIgazolatlanKesesPerc"
, "OrvosiIgazolas"
, "SzuloiIgazolas"
, "HivatalosTavolletIgazolas"
, "IskolaerdekuTavolletIgazolas"
, "SzolgaltatoiIgazolas"
, "IskolaiEngedelyIgazolas"
, "PalyavalasztasiCeluIgazolas"
, "KikeroIgazolas"
, "TappenzIgazolas"
, "HatosagiHaziKaranten"
, "EgyebIgazolas"
};
}
AddDataTable(worksheet, startRow, 1, mulasztasokDt, "OsztalyId=" + osztalyId, NormalStyle, HeaderStyle, dtCols: columns);
worksheet.Column(1).AutoFit(18);
for (var i = 2; i <= mulasztasokDt.Columns.Count; ++i)
{
worksheet.Column(i).AutoFit(11);
}
}
}
}