feat: dim unreachable event rows in expired certificate reports

This commit is contained in:
2026-03-24 16:28:04 +01:00
parent 8675c6a19e
commit 5e9598e9dd

View File

@@ -5,6 +5,7 @@ using Syncfusion.Drawing;
using Syncfusion.Pdf; using Syncfusion.Pdf;
using Syncfusion.Pdf.Graphics; using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid; using Syncfusion.Pdf.Grid;
using System.Globalization;
namespace CertReports.Syncfusion.Services.Implementations; namespace CertReports.Syncfusion.Services.Implementations;
@@ -86,6 +87,15 @@ public class EventiSectionRenderer : IPdfSectionRenderer
hr.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center); hr.Cells[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
} }
// Pre-parse DataRimborso per confronto righe non raggiungibili (solo expired)
DateTime? rimborsoDate = null;
if (isExpired && !string.IsNullOrEmpty(data.Info.DataRimborso) &&
DateTime.TryParseExact(data.Info.DataRimborso, "dd/MM/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out var rd))
{
rimborsoDate = rd;
}
// Righe dati // Righe dati
for (int i = 0; i < data.Eventi.Count; i++) for (int i = 0; i < data.Eventi.Count; i++)
{ {
@@ -133,6 +143,16 @@ public class EventiSectionRenderer : IPdfSectionRenderer
// Evidenzia "SI" nella colonna Pagato // Evidenzia "SI" nella colonna Pagato
if (evt.Paid == "SI") if (evt.Paid == "SI")
row.Cells[paidColIndex].Style.TextBrush = PdfTheme.PositiveBrush as PdfBrush; row.Cells[paidColIndex].Style.TextBrush = PdfTheme.PositiveBrush as PdfBrush;
// Righe non raggiungibili: testo grigio dimmed (ObservationDate > DataRimborso)
if (rimborsoDate.HasValue &&
DateTime.TryParseExact(evt.ObservationDate, "dd/MM/yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out var obsDate) &&
obsDate > rimborsoDate.Value)
{
foreach (var cell in row.Cells.OfType<PdfGridCell>())
cell.Style.TextBrush = PdfTheme.GrayedOutBrush;
}
} }
// Larghezze colonne (landscape A4 ~ 757 punti utili) // Larghezze colonne (landscape A4 ~ 757 punti utili)