From 90e56547ba7dfa1f7a089c3b9aa8bfd061dd77f7 Mon Sep 17 00:00:00 2001 From: Naz <2022755409@student.uitm.edu.my> Date: Tue, 22 Apr 2025 09:12:22 +0800 Subject: [PATCH] - --- .../Services/OvertimePdfService.cs | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/Areas/OTcalculate/Services/OvertimePdfService.cs b/Areas/OTcalculate/Services/OvertimePdfService.cs index 0eb9241..173b241 100644 --- a/Areas/OTcalculate/Services/OvertimePdfService.cs +++ b/Areas/OTcalculate/Services/OvertimePdfService.cs @@ -78,30 +78,35 @@ namespace PSTW_CentralSystem.Areas.OTcalculate.Services columns.RelativeColumn(2.7f); // Description }); - // Header Row table.Header(header => { - void AddHeaderCell(string text, string bgColor) - { - header.Cell().Background(bgColor).Border(0.25f).Padding(5).Text(text).FontSize(9).Bold().AlignCenter(); - } + // Row 1 — grouped headers + header.Cell().RowSpan(2).Background("#d0ead2").Border(0.25f).Padding(5).Text("Date").FontSize(9).Bold().AlignCenter(); + + header.Cell().ColumnSpan(3).Background("#dceefb").Border(0.25f).Padding(5).Text("Office Hours\n(8:30 - 17:30)").FontSize(9).Bold().AlignCenter(); + header.Cell().ColumnSpan(3).Background("#edf2f7").Border(0.25f).Padding(5).Text("After Office Hours\n(17:30 - 8:30)").FontSize(9).Bold().AlignCenter(); + + header.Cell().RowSpan(2).Background("#fdebd0").Border(0.25f).Padding(5).Text("Total OT\nHours").FontSize(9).Bold().AlignCenter(); + header.Cell().RowSpan(2).Background("#fdebd0").Border(0.25f).Padding(5).Text("Break Hours\n(min)").FontSize(9).Bold().AlignCenter(); + header.Cell().RowSpan(2).Background("#fdebd0").Border(0.25f).Padding(5).Text("Net OT Hours").FontSize(9).Bold().AlignCenter(); - AddHeaderCell("Date", "#d0ead2"); - AddHeaderCell("From\n(Office)", "#dceefb"); - AddHeaderCell("To\n(Office)", "#dceefb"); - AddHeaderCell("Break\n(Office)", "#dceefb"); - AddHeaderCell("From\n(After)", "#edf2f7"); - AddHeaderCell("To\n(After)", "#edf2f7"); - AddHeaderCell("Break\n(After)", "#edf2f7"); - AddHeaderCell("Total OT\nHours", "#fdebd0"); - AddHeaderCell("Break Hours\n(min)", "#fdebd0"); - AddHeaderCell("Net OT Hours", "#fdebd0"); if (departmentId == 2) - AddHeaderCell("Station", "#d0f0ef"); - AddHeaderCell("Days", "#e0f7da"); - AddHeaderCell("Description", "#e3f2fd"); + header.Cell().RowSpan(2).Background("#d0f0ef").Border(0.25f).Padding(5).Text("Station").FontSize(9).Bold().AlignCenter(); + + header.Cell().RowSpan(2).Background("#e0f7da").Border(0.25f).Padding(5).Text("Days").FontSize(9).Bold().AlignCenter(); + header.Cell().RowSpan(2).Background("#e3f2fd").Border(0.25f).Padding(5).Text("Description").FontSize(9).Bold().AlignCenter(); + + // Row 2 — subheaders only for grouped columns + header.Cell().Background("#dceefb").Border(0.25f).Padding(5).Text("From").FontSize(9).Bold().AlignCenter(); + header.Cell().Background("#dceefb").Border(0.25f).Padding(5).Text("To").FontSize(9).Bold().AlignCenter(); + header.Cell().Background("#dceefb").Border(0.25f).Padding(5).Text("Break").FontSize(9).Bold().AlignCenter(); + + header.Cell().Background("#edf2f7").Border(0.25f).Padding(5).Text("From").FontSize(9).Bold().AlignCenter(); + header.Cell().Background("#edf2f7").Border(0.25f).Padding(5).Text("To").FontSize(9).Bold().AlignCenter(); + header.Cell().Background("#edf2f7").Border(0.25f).Padding(5).Text("Break").FontSize(9).Bold().AlignCenter(); }); + // Data Rows double totalOTSum = 0; int totalBreakSum = 0;