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

88 lines
3.5 KiB
C#

using System.Collections.Generic;
using System.Data;
using System.Linq;
using Kreta.BusinessLogic.Classes;
using Kreta.Core.ConnectionType;
using Kreta.Resources;
using OfficeOpenXml;
namespace Kreta.BusinessLogic.Helpers.Nyomtatvanyok.Excel
{
public class PedagogusokBeNemIrtOraiHaviBontasban : BaseNyomtatvanyExcel
{
public PedagogusokBeNemIrtOraiHaviBontasban(IConnectionType connectionType, bool isMultisheetExcel = false) : base(connectionType, isMultisheetExcel)
{
StoredProcedure = "uspGetNemNaplozottOrakSzama";
ExcelPackage = new ExcelPackage();
//Munkalap tulajdonságok beállítása
SetWorkbookProperties();
}
public override void CreateSheet(Dictionary<string, string> dbParameters, int sheetIndex = 1)
{
DbParameters = dbParameters;
// Adatforrás összeállítása
SetExcelDataSet();
var table = DataSet.Tables[0];
var rows = table.Rows.Cast<DataRow>();
var groupByTanarRows = rows.GroupBy(g => g["Tanar"])
.Select(s =>
new
{
Tanar = SDAConvert.ToString(s.Key),
Data = s
}).OrderBy(o => o.Tanar).ToList();
// Munkalap összeállítása
var worksheet = CreateSheet(ExcelNyomtatvanyResource.Osszesito, 1, eOrientation.Landscape, true, 2);
worksheet.Column(1).Width = 35;
worksheet.Column(2).Width = 13;
AddLabelCell(worksheet, 1, 1, ExcelNyomtatvanyResource.Pedagogusok, HeaderStyleBottomBorderedBGGray);
AddLabelCell(worksheet, 1, 2, NyomtatvanyokResource.OktAzon, HeaderStyleBottomBorderedBGGray);
for (var i = 1; i < 11; i++)
{
worksheet.Column(2 + i).Width = 6;
AddLabelCell(worksheet, 1, 2 + i, GetHonapTextForIndex(i), HeaderStyleBottomBorderedBGGray);
}
AddLabelCell(worksheet, 1, 13, AdatszolgaltatasokResource.Osszesen, HeaderStyleBottomBorderedBGGray);
var rowIndex = 2;
foreach (var tanarGroup in groupByTanarRows)
{
AddLabelCell(worksheet, rowIndex, 1, tanarGroup.Tanar, NormalStyleBottomBordered);
AddLabelCell(worksheet, rowIndex, 2, tanarGroup.Data.Select(s => SDAConvert.ToString(s["TanarOktAzon"])).FirstOrDefault(), NormalStyleBottomBordered);
for (var i = 1; i < 11; i++)
{
var value = tanarGroup.Data.Where(x => SDAConvert.ToString(x["Honap"]) == GetHonapTextForIndex(i))
.Select(s => SDAConvert.ToNullableInt32(s["Darab"])).FirstOrDefault();
AddNumberCell(worksheet, rowIndex, 2 + i, value, IntegerStyleBottomBordered);
}
AddAggregateFormulaCell(worksheet, rowIndex, 13, "SUM", rowIndex, 2, rowIndex, 12, true, IntegerStyleBottomBordered);
rowIndex++;
}
AddLabelRange(worksheet, rowIndex, 11, rowIndex, 12, AdatszolgaltatasokResource.Osszesen, HeaderStyleBottomBorderedBGGray);
AddAggregateFormulaCell(worksheet, rowIndex, 13, "SUM", 2, 13, rowIndex - 1, 13, true, IntegerStyleBottomBordered);
}
// 09, 10, 11, 12, 01, 02, 03, 04, 05, 06
private static string GetHonapTextForIndex(int index)
{
return (index + 8 > 12 ? index - 4 : index + 8).ToString("00");
}
}
}