From 5e852943753464ee8404c7e0fb5997af11ec63d5 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Thu, 9 Nov 2023 10:27:00 +0100 Subject: [PATCH] Extended PDF Report with new fields --- ENI2/Report/ReportDocument.cs | 135 +++++++++++++++++++++++++--------- bsmd.database/CREW.cs | 16 +++- bsmd.database/PAS.cs | 16 +++- 3 files changed, 126 insertions(+), 41 deletions(-) diff --git a/ENI2/Report/ReportDocument.cs b/ENI2/Report/ReportDocument.cs index f9d19900..0e474a6d 100644 --- a/ENI2/Report/ReportDocument.cs +++ b/ENI2/Report/ReportDocument.cs @@ -394,8 +394,11 @@ namespace ENI2.Report } string title = messageParagraph.Title; - if (title.Equals("CREW")) title = "CREWA"; // evil - if (title.Equals("PAS")) title = "PASA"; + if (message.MessageNotificationClass == Message.NotificationClass.CREWA) title = "CREWA"; + if (message.MessageNotificationClass == Message.NotificationClass.CREWD) title = "CREWD"; + if (message.MessageNotificationClass == Message.NotificationClass.PASA) title = "PASA"; + if (message.MessageNotificationClass == Message.NotificationClass.PASD) title = "PASD"; + document.LastSection.AddParagraph(ReplaceTitle(title), "Heading2"); document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3"); @@ -408,13 +411,9 @@ namespace ENI2.Report { ReportDocument.DefineContentSection(document, Orientation.Portrait, false); _lastOrientation = Orientation.Portrait; - } + } - string title = messageParagraph.Title; - if (title.Equals("CREW")) title = "CREWA"; // evil - if (title.Equals("PAS")) title = "PASA"; - - document.LastSection.AddParagraph(ReplaceTitle(title), "Heading2"); + document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Title), "Heading2"); document.LastSection.AddParagraph(ReplaceTitle(messageParagraph.Subtitle), "Heading3"); } break; @@ -527,13 +526,27 @@ namespace ENI2.Report #region CREW private static void CreateCrewTable(Document document, Message message) { + string textSchengen = "[ ] Schengen"; + + if(message.Elements.Count > 0) + { + CREW firstCREW = message.Elements[0] as CREW; + if(firstCREW.NotificationSchengen ?? false) + { + textSchengen = "[X] Schengen"; + } + + document.LastSection.AddParagraph(firstCREW.NotificationPAX ?? false ? "[X] PAX notification" : "[ ] PAX notification"); + + } + Table table = AddGrayTable(document); - table.Format.Font.Size = 9; + table.Format.Font.Size = 8; + + // width: 25 Column column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(0.75); column = table.AddColumn(); column.Width = Unit.FromCentimeter(3); column = table.AddColumn(); @@ -541,17 +554,28 @@ namespace ENI2.Report column = table.AddColumn(); column.Width = Unit.FromCentimeter(2.5); column = table.AddColumn(); + column.Width = Unit.FromCentimeter(2); + column = table.AddColumn(); column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1); + column.Width = Unit.FromCentimeter(0.75); column = table.AddColumn(); column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(2); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(2); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(2); + + Row firstRow = table.AddRow(); + firstRow.Cells[7].AddParagraph(textSchengen); + firstRow.Cells[7].Shading.Color = Colors.LightGray; + firstRow.Cells[7].MergeRight = 5; Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Last name"); @@ -562,13 +586,16 @@ namespace ENI2.Report hRow.Cells[6].AddParagraph("Nat."); hRow.Cells[7].AddParagraph("Id doc. type"); hRow.Cells[8].AddParagraph("Id doc. number"); - hRow.Cells[9].AddParagraph("Visa number"); - hRow.Cells[10].AddParagraph("Duty"); + hRow.Cells[9].AddParagraph("Iss. state"); + hRow.Cells[10].AddParagraph("Exp. date"); + hRow.Cells[11].AddParagraph("Visa number"); + hRow.Cells[12].AddParagraph("Duty"); for (int i = 0; i < message.Elements.Count; i++) { CREW crew = message.Elements[i] as CREW; Row row = table.AddRow(); + row.Cells[0].AddParagraph((i + 1).ToString()); row.Cells[1].AddParagraph(crew.CrewMemberLastName ?? ""); row.Cells[2].AddParagraph(crew.CrewMemberFirstName ?? ""); @@ -577,9 +604,11 @@ namespace ENI2.Report row.Cells[5].AddParagraph(crew.CrewMemberGenderDisplay); row.Cells[6].AddParagraph(crew.CrewMemberNationality ?? ""); row.Cells[7].AddParagraph(crew.CrewMemberIdentityDocumentTypeDisplay); - row.Cells[8].AddParagraph(crew.CrewMemberIdentityDocumentId ?? ""); - row.Cells[9].AddParagraph(crew.CrewMemberVisaNumber ?? ""); - row.Cells[10].AddParagraph(crew.CrewMemberDuty ?? ""); + row.Cells[8].AddParagraph(crew.CrewMemberIdentityDocumentId ?? ""); + row.Cells[9].AddParagraph(crew.CrewMemberIdentityDocumentIssuingState ?? ""); + row.Cells[10].AddParagraph(crew.CrewMemberIdentityDocumentExpiryDateDisplay ?? ""); + row.Cells[11].AddParagraph(crew.CrewMemberVisaNumber ?? ""); + row.Cells[12].AddParagraph(crew.CrewMemberDuty ?? ""); } } #endregion @@ -587,17 +616,36 @@ namespace ENI2.Report #region PAS private static void CreatePassengerTable(Document document, Message message) { + string textSchengen = "[ ] Schengen"; + string textPAX = "[ ] PAX"; + + if (message.Elements.Count > 0) + { + PAS firstPAS = message.Elements[0] as PAS; + if (firstPAS.NotificationSchengen ?? false) + textSchengen = "[X] Schengen"; + if (firstPAS.NotificationPAX ?? false) + textPAX = "[X] PAX"; + } + Table table = AddGrayTable(document); - table.Format.Font.Size = 9; + table.Format.Font.Size = 7; + Column column = table.AddColumn(); column.Width = Unit.FromCentimeter(0.8); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); + column.Width = Unit.FromCentimeter(2); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(2); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(1.2); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(1); column = table.AddColumn(); column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); @@ -607,15 +655,24 @@ namespace ENI2.Report column = table.AddColumn(); column.Width = Unit.FromCentimeter(2); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1.8); + column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); column.Width = Unit.FromCentimeter(0.5); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(1.5); + column = table.AddColumn(); + column.Width = Unit.FromCentimeter(1.5); + + Row h1Row = table.AddRow(); + h1Row.Cells[7].AddParagraph(textSchengen); + h1Row.Cells[7].MergeRight = 7; + h1Row.Cells[7].Shading.Color = Colors.LightGray; + h1Row.Cells[15].AddParagraph(textPAX); + h1Row.Cells[15].MergeRight = 1; Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Last name"); @@ -626,10 +683,14 @@ namespace ENI2.Report hRow.Cells[6].AddParagraph("Nat."); hRow.Cells[7].AddParagraph("Id doc. type"); hRow.Cells[8].AddParagraph("Id doc. number"); - hRow.Cells[9].AddParagraph("Visa number"); - hRow.Cells[10].AddParagraph("Emb."); - hRow.Cells[11].AddParagraph("Disemb."); - hRow.Cells[12].AddParagraph("T"); + hRow.Cells[9].AddParagraph("Iss. state"); + hRow.Cells[10].AddParagraph("Exp. date"); + hRow.Cells[11].AddParagraph("Visa number"); + hRow.Cells[12].AddParagraph("Emb."); + hRow.Cells[13].AddParagraph("Disemb."); + hRow.Cells[14].AddParagraph("T"); + hRow.Cells[15].AddParagraph("Em. care"); + hRow.Cells[16].AddParagraph("Em. number"); for (int i = 0; i < message.Elements.Count; i++) { @@ -644,10 +705,14 @@ namespace ENI2.Report row.Cells[6].AddParagraph(pas.PassengerNationality ?? ""); row.Cells[7].AddParagraph(pas.PassengerIdentityDocumentTypeDisplay); row.Cells[8].AddParagraph(pas.PassengerIdentityDocumentId ?? ""); - row.Cells[9].AddParagraph(pas.PassengerVisaNumber ?? ""); - row.Cells[10].AddParagraph(pas.PassengerPortOfEmbarkation ?? ""); - row.Cells[11].AddParagraph(pas.PassengerPortOfDisembarkation ?? ""); - row.Cells[12].AddParagraph(pas.PassengerInTransit ?? false ? "X" : ""); + row.Cells[9].AddParagraph(pas.PassengerIdentityDocumentIssuingState ?? ""); + row.Cells[10].AddParagraph(pas.PassengerIdentityDocumentExpiryDateDisplay); + row.Cells[11].AddParagraph(pas.PassengerVisaNumber ?? ""); + row.Cells[12].AddParagraph(pas.PassengerPortOfEmbarkation ?? ""); + row.Cells[13].AddParagraph(pas.PassengerPortOfDisembarkation ?? ""); + row.Cells[14].AddParagraph(pas.PassengerInTransit ?? false ? "X" : ""); + row.Cells[15].AddParagraph(pas.EmergencyCare ?? ""); + row.Cells[16].AddParagraph(pas.EmergencyContactNumber ?? ""); } } #endregion diff --git a/bsmd.database/CREW.cs b/bsmd.database/CREW.cs index fdc96ecd..fe27cc12 100644 --- a/bsmd.database/CREW.cs +++ b/bsmd.database/CREW.cs @@ -122,13 +122,23 @@ namespace bsmd.database [MaxLength(2)] [ENI2Validation] public string CrewMemberIdentityDocumentIssuingState { get; set; } - - [ShowReport] - [ReportDisplayName("Expiry date")] + [Validation(ValidationCode.PAST_DATE)] [ENI2Validation] public DateTime? CrewMemberIdentityDocumentExpiryDate { get; set; } + [ShowReport] + [ReportDisplayName("Doc. Expiry date")] + public string CrewMemberIdentityDocumentExpiryDateDisplay + { + get + { + if (CrewMemberIdentityDocumentExpiryDate.HasValue) + return this.CrewMemberIdentityDocumentExpiryDate.Value.ToShortDateString(); + return string.Empty; + } + } + [ENI2Validation] [MaxLength(256)] public string Effects { get; set; } diff --git a/bsmd.database/PAS.cs b/bsmd.database/PAS.cs index e493fd67..fe524fa1 100644 --- a/bsmd.database/PAS.cs +++ b/bsmd.database/PAS.cs @@ -128,13 +128,23 @@ namespace bsmd.database [ENI2Validation] public string PassengerIdentityDocumentIssuingState { get; set; } - - [ShowReport] - [ReportDisplayName("Expiry date")] + [Validation(ValidationCode.PAST_DATE)] [ENI2Validation] public DateTime? PassengerIdentityDocumentExpiryDate { get; set; } + [ShowReport] + [ReportDisplayName("Expiry date")] + public string PassengerIdentityDocumentExpiryDateDisplay + { + get + { + if (this.PassengerIdentityDocumentExpiryDate.HasValue) + return this.PassengerIdentityDocumentExpiryDate.Value.ToShortDateString(); + return string.Empty; + } + } + [ENI2Validation] public bool? NotificationSchengen { get; set; }