From 8151ceaa5be6513758dfc0fb3dc6da46a99cacf9 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 23 Jun 2021 05:09:45 +0000 Subject: [PATCH] Vor Umstellung der Pop 3 Library zum Testen des ExcelAbrufs --- ENI-2/ENI2/ENI2/LocalizedLookup.cs | 2 +- Stundensheet.xlsx | Bin 46962 -> 47160 bytes nsw/Source/CoreDeleteTool/Main.cs | 12 +- nsw/Source/bsmd.ReportGenerator/App.config | 18 +- .../bsmd.ReportGenerator/BSMDDocument.cs | 383 +++++++++++------- .../Properties/Settings.Designer.cs | 58 +-- .../Properties/Settings.settings | 18 +- nsw/Source/bsmd.database/BPOL.cs | 2 + nsw/Source/bsmd.database/DatabaseEntity.cs | 2 +- nsw/Source/bsmd.database/Message.cs | 7 + .../PortOfCallLast30DaysCrewJoinedShip.cs | 2 +- nsw/Source/misc/report.db | Bin 16384 -> 16384 bytes 12 files changed, 314 insertions(+), 190 deletions(-) diff --git a/ENI-2/ENI2/ENI2/LocalizedLookup.cs b/ENI-2/ENI2/ENI2/LocalizedLookup.cs index 293c5bb5..94ca1163 100644 --- a/ENI-2/ENI2/ENI2/LocalizedLookup.cs +++ b/ENI-2/ENI2/ENI2/LocalizedLookup.cs @@ -92,7 +92,7 @@ namespace ENI2 if (!reader.IsDBNull(0)) code = reader.GetString(0); if (!reader.IsDBNull(1)) name = reader.GetString(1); if ((code != null) && (name != null)) - result[code] = name; // string.Format("{0} {1}", code, name); + result[code] = string.Format("{0} {1}", code, name); } reader.Close(); return result; diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 5976d1a8c30f0134f6759c2a918773500a9097b8..da412df0ed7ea4b4289490b5c10f231660d212da 100644 GIT binary patch delta 34934 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 VfY}Dcj7{q&3+zy0)7}gc1prX1K#c$Z diff --git a/nsw/Source/CoreDeleteTool/Main.cs b/nsw/Source/CoreDeleteTool/Main.cs index 5bfcc848..1311e32c 100644 --- a/nsw/Source/CoreDeleteTool/Main.cs +++ b/nsw/Source/CoreDeleteTool/Main.cs @@ -45,6 +45,7 @@ namespace CoreDeleteTool { this.toolStripProgressBar.Maximum = this.dataGridView.SelectedRows.Count; this.toolStripStatusLabel.Text = string.Format("Removing {0} items..", this.dataGridView.SelectedRows.Count); + int total = this.dataGridView.SelectedRows.Count; for (int i = 0; i < this.dataGridView.SelectedRows.Count; i++) { @@ -54,6 +55,8 @@ namespace CoreDeleteTool DBManager.Instance.DeleteCore(selectedCore); this.messageCores.Remove(selectedCore); this.toolStripProgressBar.Value = i; + this.toolStripStatusLabel.Text = string.Format("Removed {0}/{1}", (i + 1), total); + Application.DoEvents(); } } } @@ -100,18 +103,19 @@ namespace CoreDeleteTool if (MessageBox.Show("Delete all items?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { Application.UseWaitCursor = true; - this.toolStripProgressBar.Maximum = this.messageCores.Count; - this.toolStripStatusLabel.Text = string.Format("Removing {0} items..", this.messageCores.Count); + int total = this.messageCores.Count; + this.toolStripProgressBar.Maximum = this.messageCores.Count; for (int i = 0; i < this.messageCores.Count; i++) { MessageCore selectedCore = this.messageCores[i]; - DBManager.Instance.DeleteCore(selectedCore); - this.messageCores.Remove(selectedCore); + DBManager.Instance.DeleteCore(selectedCore); this.toolStripProgressBar.Value = i; + this.toolStripStatusLabel.Text = string.Format("Removed {0}/{1}", (i + 1), total); Application.DoEvents(); } Application.UseWaitCursor = false; + this.messageCores.Clear(); } } } diff --git a/nsw/Source/bsmd.ReportGenerator/App.config b/nsw/Source/bsmd.ReportGenerator/App.config index a8a4c6c1..a6a6e091 100644 --- a/nsw/Source/bsmd.ReportGenerator/App.config +++ b/nsw/Source/bsmd.ReportGenerator/App.config @@ -10,12 +10,6 @@ - - Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False - - - E:\temp> - 300 @@ -42,12 +36,18 @@ donotreply@bsmd.de - - E:\svnlager\BSMD\nsw\Source\misc\EUREPORT.png - False + + Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False + + + E:\temp + + + E:\svnlager\BSMD\nsw\Source\misc\Logo.gif + \ No newline at end of file diff --git a/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs b/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs index d15e3643..efa1163f 100644 --- a/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs +++ b/nsw/Source/bsmd.ReportGenerator/BSMDDocument.cs @@ -26,7 +26,51 @@ using bsmd.database; namespace bsmd.ReportGenerator { public class BSMDDocument - { + { + #region static lookup helpers + + private static Dictionary _cargoCodesNST = null; + + private static Dictionary cargoCodesNST + { + get + { + if(_cargoCodesNST == null) + { + _cargoCodesNST = LocalizedLookup.getCargoCodesNST(); + } + return _cargoCodesNST; + } + } + + public static Dictionary Edifact8025 = new Dictionary { + {1, "Cargo operations" }, + {2, "Passenger movement" }, + {3, "Taking bunkers" }, + {4, "Changing crew" }, + {5, "Goodwill visit" }, + {6, "Taking supplies" }, + {7, "Repair" }, + {8, "Laid-up" }, + {9, "Awaiting orders" }, + {10, "Miscellaneous" }, + {11, "Crew movement" }, + {12, "Cruise, leisure and recreation" }, + {13, "Under government order" }, + {14, "Quarantine inspection" }, + {15, "Refuge" }, + {16, "Unloading cargo" }, + {17, "Loading cargo" }, + {18, "Repair in dry dock" }, + {19, "Repair in wet dock" }, + {20, "Cargo tank cleaning" }, + {21, "Means of transport customs clearance" }, + {22, "De-gassing" }, + {23, "Waste disposal" }, + {98, "Pass through" } + }; + + #endregion #region create document @@ -369,7 +413,7 @@ namespace bsmd.ReportGenerator /// Defines page setup, headers, and footers. /// public static void DefineContentSection(Document document, Orientation orientation, bool isInitialSection) - { + { Section section = document.AddSection(); section.PageSetup.OddAndEvenPagesHeaderFooter = true; if(isInitialSection) @@ -487,9 +531,63 @@ namespace bsmd.ReportGenerator #endregion + #region NOA_NOD + + if ((message != null) && (message.MessageNotificationClass == Message.NotificationClass.NOA_NOD)) + { + + NOA_NOD noa_nod = message.Elements[0] as NOA_NOD; + + Table table = document.LastSection.AddTable(); + table.Rows.VerticalAlignment = VerticalAlignment.Center; + table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; + + table.AddColumn(290); + table.AddColumn(200); + + Row row = table.AddRow(); + + if (noa_nod.ETAToPortOfCall.HasValue) + { + row.Cells[0].AddParagraph("Estimated time of arrival (ETA) at port of call"); + row.Cells[1].AddParagraph(noa_nod.ETAToPortOfCall.Value.ToLocalTime().ToString("g")); + row = table.AddRow(); + row.Cells[0].AddParagraph("Estimated time of departure (ETD) from port of call"); + row.Cells[1].AddParagraph(noa_nod.ETDFromPortOfCall.HasValue ? noa_nod.ETDFromPortOfCall.Value.ToLocalTime().ToString("g") : ""); + } + else // Kiel passage + { + row.Cells[0].AddParagraph("Estimated time of arrival (ETA) at Kiel Canal entrance (Transit)"); + row.Cells[1].AddParagraph(noa_nod.ETAToKielCanal.HasValue ? noa_nod.ETAToKielCanal.Value.ToLocalTime().ToString("g") : ""); + row = table.AddRow(); + row.Cells[0].AddParagraph("Estimated time of departure (ETD) from Kiel Canal (Transit)"); + row.Cells[1].AddParagraph(noa_nod.ETDFromKielCanal.HasValue ? noa_nod.ETDFromKielCanal.Value.ToLocalTime().ToString("g") : ""); + } + + row = table.AddRow(); + row.Cells[0].AddParagraph("Last port"); + row.Cells[1].AddParagraph(LocodeDB.PortNameFromLocode(noa_nod.LastPort) ?? ""); + row = table.AddRow(); + row.Cells[0].AddParagraph("Estimated time of departure from last port"); + row.Cells[1].AddParagraph(noa_nod.ETDFromLastPort.HasValue ? noa_nod.ETDFromLastPort.Value.ToLocalTime().ToString("g") : ""); + + row = table.AddRow(); + row.Cells[0].AddParagraph("Next port"); + row.Cells[1].AddParagraph(LocodeDB.PortNameFromLocode(noa_nod.NextPort) ?? ""); + row = table.AddRow(); + row.Cells[0].AddParagraph("Estimated time of arrival at next port"); + row.Cells[1].AddParagraph(noa_nod.ETAToNextPort.HasValue ? noa_nod.ETAToNextPort.Value.ToLocalTime().ToString("g") : ""); + + BSMDDocument.CreateCallPurposeTable(document, message); + return; + } + + #endregion + #region BKRD - if((message != null) && (message.MessageNotificationClass == Message.NotificationClass.BKRD)) + if ((message != null) && (message.MessageNotificationClass == Message.NotificationClass.BKRD)) { BSMDDocument.CreateBKRDTable(document, message); return; @@ -539,17 +637,7 @@ namespace bsmd.ReportGenerator return; } - #endregion - - #region NOA_NOD - - if ((message != null) && (message.MessageNotificationClass == Message.NotificationClass.NOA_NOD)) - { - BSMDDocument.CreateCallPurposeTable(document, message); - return; - } - - #endregion + #endregion #region BPOL @@ -591,6 +679,7 @@ namespace bsmd.ReportGenerator { Table table = document.LastSection.AddTable(); table.Rows.VerticalAlignment = VerticalAlignment.Center; + table.Borders.Color = Colors.LightGray; table.Borders.Visible = true; Column column = table.AddColumn(); @@ -602,9 +691,9 @@ namespace bsmd.ReportGenerator column = table.AddColumn(); column.Width = Unit.FromCentimeter(3); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(2); + column.Width = Unit.FromCentimeter(2.5); column = table.AddColumn(); - column.Width = Unit.FromCentimeter(2); + column.Width = Unit.FromCentimeter(1.5); column = table.AddColumn(); column.Width = Unit.FromCentimeter(1); column = table.AddColumn(); @@ -653,6 +742,7 @@ namespace bsmd.ReportGenerator Table table = document.LastSection.AddTable(); table.Rows.VerticalAlignment = VerticalAlignment.Center; table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; Column column = table.AddColumn(); column.Width = Unit.FromCentimeter(0.8); @@ -727,17 +817,13 @@ namespace bsmd.ReportGenerator Table table = document.LastSection.AddTable(); table.Rows.VerticalAlignment = VerticalAlignment.Center; table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; - Column column = table.AddColumn(); - column.Width = Unit.FromCentimeter(0.8); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(2); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1.2); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(9); + table.AddColumn(20); + table.AddColumn(80); + table.AddColumn(70); + table.AddColumn(100); + table.AddColumn(220); Row hRow = table.AddRow(); @@ -763,15 +849,12 @@ namespace bsmd.ReportGenerator Table table = document.LastSection.AddTable(); table.Rows.VerticalAlignment = VerticalAlignment.Center; table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; - Column column = table.AddColumn(); - column.Width = Unit.FromCentimeter(0.8); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(2); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1.5); + table.AddColumn(20); + table.AddColumn(200); + table.AddColumn(200); + table.AddColumn(70); Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Type"); @@ -798,13 +881,11 @@ namespace bsmd.ReportGenerator Table table = document.LastSection.AddTable(); table.Rows.VerticalAlignment = VerticalAlignment.Center; table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; - Column column = table.AddColumn(); - column.Width = Unit.FromCentimeter(0.8); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(3); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(2); + table.AddColumn(20); + table.AddColumn(400); + table.AddColumn(70); Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Port"); @@ -870,7 +951,8 @@ namespace bsmd.ReportGenerator LADG ladg = message.Elements[i] as LADG; row.Cells[0].AddParagraph((i + 1).ToString()); row.Cells[1].AddParagraph(ladg.CargoHandlingType.HasValue ? (ladg.CargoHandlingType.Value == 0) ? "Load" : "Discharge" : ""); - row.Cells[2].AddParagraph(ladg.CargoCodeNST ?? ""); + if(!ladg.CargoCodeNST.IsNullOrEmpty() && cargoCodesNST.ContainsKey(ladg.CargoCodeNST)) + row.Cells[2].AddParagraph(cargoCodesNST[ladg.CargoCodeNST].Substring(3)); row.Cells[3].AddParagraph(ladg.CargoNumberOfItems.HasValue ? ladg.CargoNumberOfItems.Value.ToString() : ""); row.Cells[4].AddParagraph(ladg.CargoGrossQuantity_TNE.HasValue ? ladg.CargoGrossQuantity_TNE.Value.ToString("N2") : ""); } @@ -1038,7 +1120,11 @@ namespace bsmd.ReportGenerator row.Cells[4].AddParagraph(s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.HasValue ? s2sActivity.ShipToShipActivityLocationCoordinatesLongitude.ToString() : ""); row.Cells[5].AddParagraph(s2sActivity.ShipToShipActivityDateFrom.HasValue ? s2sActivity.ShipToShipActivityDateFrom.Value.ToShortDateString() : ""); row.Cells[6].AddParagraph(s2sActivity.ShipToShipActivityDateTo.HasValue ? s2sActivity.ShipToShipActivityDateTo.Value.ToShortDateString() : ""); - row.Cells[7].AddParagraph(s2sActivity.ShipToShipActivityType ?? ""); + if(!s2sActivity.ShipToShipActivityType.IsNullOrEmpty()) + { + if (Int32.TryParse(s2sActivity.ShipToShipActivityType, out int s2sCode) && Edifact8025.ContainsKey(s2sCode)) + row.Cells[7].AddParagraph(Edifact8025[s2sCode]); + } row.Cells[8].AddParagraph(s2sActivity.ShipToShipActivitySecurityMattersToReport ?? ""); } @@ -1052,17 +1138,13 @@ namespace bsmd.ReportGenerator table.Format.Font.Size = 8; table.Rows.VerticalAlignment = VerticalAlignment.Center; table.Borders.Visible = true; + table.Borders.Color = Colors.LightGray; - Column column = table.AddColumn(); - column.Width = Unit.FromCentimeter(0.8); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(5); - column = table.AddColumn(); - column.Width = Unit.FromCentimeter(1.5); - column = table.AddColumn(); + table.AddColumn(20); + table.AddColumn(350); + table.AddColumn(120); - Row hRow = table.AddRow(); - hRow.Cells[0].AddParagraph("No."); + Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Name"); hRow.Cells[2].AddParagraph("ETA"); @@ -1161,8 +1243,8 @@ namespace bsmd.ReportGenerator row = table.AddRow(); row.Cells[0].AddParagraph("Last port where waste or cargo residues were discharged"); row.Cells[1].AddParagraph("Date of last disposal"); - row = table.AddRow(); - row.Cells[0].AddParagraph(was.LastWasteDisposalPort ?? ""); + row = table.AddRow(); + row.Cells[0].AddParagraph(LocodeDB.PortNameFromLocode(was.LastWasteDisposalPort) ?? ""); if(was.LastWasteDisposalDate.HasValue) row.Cells[1].AddParagraph(was.LastWasteDisposalDate?.ToShortDateString()); row = table.AddRow(); @@ -1266,7 +1348,7 @@ namespace bsmd.ReportGenerator row.Cells[2].AddParagraph(waste.WasteDisposalAmount_MTQ.HasValue ? waste.WasteDisposalAmount_MTQ.Value.ToString("N3") : ""); row.Cells[3].AddParagraph(waste.WasteCapacity_MTQ.HasValue ? waste.WasteCapacity_MTQ.Value.ToString("N3") : ""); row.Cells[4].AddParagraph(waste.WasteAmountRetained_MTQ.HasValue ? waste.WasteAmountRetained_MTQ.Value.ToString("N3") : ""); - row.Cells[5].AddParagraph(waste.WasteDisposalPort ?? ""); + row.Cells[5].AddParagraph(LocodeDB.PortNameFromLocode(waste.WasteDisposalPort) ?? ""); row.Cells[6].AddParagraph(waste.WasteAmountGeneratedTillNextPort_MTQ.HasValue ? waste.WasteAmountGeneratedTillNextPort_MTQ.Value.ToString("N3") : ""); } } @@ -1285,7 +1367,13 @@ namespace bsmd.ReportGenerator table.AddColumn(20); // lfd. Nr. table.AddColumn(50); // Name - table.AddColumn(30); // Flag + table.AddColumn(30); // Flag + table.AddColumn(30); // Gross ton + table.AddColumn(30); // Length + table.AddColumn(30); // Beam + table.AddColumn(60); // Purpose of call + table.AddColumn(35); // Draft + table.AddColumn(70); // Remarks table.AddColumn(60); // Company table.AddColumn(70); // Street table.AddColumn(40); // Postal code @@ -1293,34 +1381,28 @@ namespace bsmd.ReportGenerator table.AddColumn(60); // Phone table.AddColumn(60); // Fax table.AddColumn(70); // EMail - table.AddColumn(30); // Gross ton - table.AddColumn(30); // Length - table.AddColumn(30); // Beam - table.AddColumn(60); // Purpose of call - table.AddColumn(35); // Draft - table.AddColumn(70); // Remarks // 770 Row opRow = table.AddRow(); - opRow.Cells[2].AddParagraph("Operator"); - opRow.Cells[2].MergeRight = 8; + opRow.Cells[9].AddParagraph("Operator"); + opRow.Cells[9].MergeRight = 6; Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Name"); - hRow.Cells[2].AddParagraph("Flag"); - hRow.Cells[3].AddParagraph("Company name"); - hRow.Cells[4].AddParagraph("Street / No."); - hRow.Cells[5].AddParagraph("Postal Code"); - hRow.Cells[6].AddParagraph("Co."); - hRow.Cells[7].AddParagraph("Phone"); - hRow.Cells[8].AddParagraph("Fax"); - hRow.Cells[9].AddParagraph("Email"); - hRow.Cells[10].AddParagraph("Gross ton."); - hRow.Cells[11].AddParagraph("Len (m)"); - hRow.Cells[12].AddParagraph("Beam (m)"); - hRow.Cells[13].AddParagraph("Purpose of call"); - hRow.Cells[14].AddParagraph("Dr. (m)"); - hRow.Cells[15].AddParagraph("Remarks"); + hRow.Cells[2].AddParagraph("Flag"); + hRow.Cells[3].AddParagraph("Gross ton."); + hRow.Cells[4].AddParagraph("Len (m)"); + hRow.Cells[5].AddParagraph("Beam (m)"); + hRow.Cells[6].AddParagraph("Purpose of call"); + hRow.Cells[7].AddParagraph("Draft (dm)"); + hRow.Cells[8].AddParagraph("Remarks"); + hRow.Cells[9].AddParagraph("Company name"); + hRow.Cells[10].AddParagraph("Street / No."); + hRow.Cells[11].AddParagraph("Postal Code"); + hRow.Cells[12].AddParagraph("Co."); + hRow.Cells[13].AddParagraph("Phone"); + hRow.Cells[14].AddParagraph("Fax"); + hRow.Cells[15].AddParagraph("Email"); for (int i = 0; i < message.Elements.Count; i++) { @@ -1328,20 +1410,20 @@ namespace bsmd.ReportGenerator Row row = table.AddRow(); row.Cells[0].AddParagraph((i + 1).ToString()); row.Cells[1].AddParagraph(towa.TowageOnArrivalName ?? ""); - row.Cells[2].AddParagraph(towa.TowageOnArrivalFlag ?? ""); - row.Cells[3].AddParagraph(towa.TowageOnArrivalOperatorCompanyName ?? ""); - row.Cells[4].AddParagraph(towa.TowageOnArrivalOperatorStreetNameAndNumber); - row.Cells[5].AddParagraph(towa.TowageOnArrivalOperatorPostalCode); - row.Cells[6].AddParagraph(towa.TowageOnArrivalOperatorCountry ?? ""); - row.Cells[7].AddParagraph(towa.TowageOnArrivalOperatorPhone); - row.Cells[8].AddParagraph(towa.TowageOnArrivalOperatorFax ?? ""); - row.Cells[9].AddParagraph(towa.TowageOnArrivalOperatorEmail ?? ""); - row.Cells[10].AddParagraph(towa.TowageOnArrivalGrossTonnage.HasValue ? towa.TowageOnArrivalGrossTonnage.Value.ToString() : ""); - row.Cells[11].AddParagraph(towa.TowageOnArrivalLengthOverall_MTR.HasValue ? towa.TowageOnArrivalLengthOverall_MTR.Value.ToString("N1") : ""); - row.Cells[12].AddParagraph(towa.TowageOnArrivalBeam_MTR.HasValue ? towa.TowageOnArrivalBeam_MTR.Value.ToString("N1") : ""); - row.Cells[13].AddParagraph(towa.TowageOnArrivalPurposeOfCall ?? ""); - row.Cells[14].AddParagraph(towa.TowageOnArrivalDraught_DMT.HasValue ? towa.TowageOnArrivalDraught_DMT.Value.ToString("N1") : ""); - row.Cells[15].AddParagraph(towa.TowageOnArrivalRemarks ?? ""); + row.Cells[2].AddParagraph(towa.TowageOnArrivalFlag ?? ""); + row.Cells[3].AddParagraph(towa.TowageOnArrivalGrossTonnage.HasValue ? towa.TowageOnArrivalGrossTonnage.Value.ToString() : ""); + row.Cells[4].AddParagraph(towa.TowageOnArrivalLengthOverall_MTR.HasValue ? towa.TowageOnArrivalLengthOverall_MTR.Value.ToString("N1") : ""); + row.Cells[5].AddParagraph(towa.TowageOnArrivalBeam_MTR.HasValue ? towa.TowageOnArrivalBeam_MTR.Value.ToString("N1") : ""); + row.Cells[6].AddParagraph(towa.TowageOnArrivalPurposeOfCall ?? ""); + row.Cells[7].AddParagraph(towa.TowageOnArrivalDraught_DMT.HasValue ? towa.TowageOnArrivalDraught_DMT.Value.ToString("N1") : ""); + row.Cells[8].AddParagraph(towa.TowageOnArrivalRemarks ?? ""); + row.Cells[9].AddParagraph(towa.TowageOnArrivalOperatorCompanyName ?? ""); + row.Cells[10].AddParagraph(towa.TowageOnArrivalOperatorStreetNameAndNumber); + row.Cells[11].AddParagraph(towa.TowageOnArrivalOperatorPostalCode); + row.Cells[12].AddParagraph(towa.TowageOnArrivalOperatorCountry ?? ""); + row.Cells[13].AddParagraph(towa.TowageOnArrivalOperatorPhone); + row.Cells[14].AddParagraph(towa.TowageOnArrivalOperatorFax ?? ""); + row.Cells[15].AddParagraph(towa.TowageOnArrivalOperatorEmail ?? ""); } } @@ -1358,38 +1440,38 @@ namespace bsmd.ReportGenerator table.AddColumn(20); // lfd. Nr. table.AddColumn(50); // Name - table.AddColumn(30); // Flag - table.AddColumn(60); // Company - table.AddColumn(70); // Street - table.AddColumn(40); // Postal code - table.AddColumn(25); // Country - table.AddColumn(60); // Phone - table.AddColumn(60); // Fax - table.AddColumn(70); // EMail + table.AddColumn(30); // Flag table.AddColumn(30); // Length table.AddColumn(30); // Beam table.AddColumn(35); // Draft - table.AddColumn(160); // Remarks + table.AddColumn(120); // Remarks + table.AddColumn(60); // Company + table.AddColumn(70); // Street + table.AddColumn(40); // Postal code + table.AddColumn(65); // Country + table.AddColumn(60); // Phone + table.AddColumn(60); // Fax + table.AddColumn(70); // EMail // 770 Row opRow = table.AddRow(); - opRow.Cells[2].AddParagraph("Operator"); - opRow.Cells[2].MergeRight = 8; + opRow.Cells[7].AddParagraph("Operator"); + opRow.Cells[7].MergeRight = 6; Row hRow = table.AddRow(); hRow.Cells[1].AddParagraph("Name"); - hRow.Cells[2].AddParagraph("Flag"); - hRow.Cells[3].AddParagraph("Company Name"); - hRow.Cells[4].AddParagraph("Street / No."); - hRow.Cells[5].AddParagraph("Postal Code"); - hRow.Cells[6].AddParagraph("Co."); - hRow.Cells[7].AddParagraph("Phone"); - hRow.Cells[8].AddParagraph("Fax"); - hRow.Cells[9].AddParagraph("Email"); - hRow.Cells[10].AddParagraph("Len (m)"); - hRow.Cells[11].AddParagraph("Beam (m)"); - hRow.Cells[12].AddParagraph("Dr. (m)"); - hRow.Cells[13].AddParagraph("Remarks"); + hRow.Cells[2].AddParagraph("Flag"); + hRow.Cells[3].AddParagraph("Len (m)"); + hRow.Cells[4].AddParagraph("Beam (m)"); + hRow.Cells[5].AddParagraph("Draft (dm)"); + hRow.Cells[6].AddParagraph("Remarks"); + hRow.Cells[7].AddParagraph("Company Name"); + hRow.Cells[8].AddParagraph("Street / No."); + hRow.Cells[9].AddParagraph("Postal Code"); + hRow.Cells[10].AddParagraph("Co."); + hRow.Cells[11].AddParagraph("Phone"); + hRow.Cells[12].AddParagraph("Fax"); + hRow.Cells[13].AddParagraph("Email"); for (int i = 0; i < message.Elements.Count; i++) { @@ -1397,18 +1479,18 @@ namespace bsmd.ReportGenerator Row row = table.AddRow(); row.Cells[0].AddParagraph((i + 1).ToString()); row.Cells[1].AddParagraph(towd.TowageOnDepartureName ?? ""); - row.Cells[2].AddParagraph(towd.TowageOnDepartureFlag ?? ""); - row.Cells[3].AddParagraph(towd.TowageOnDepartureOperatorCompanyName ?? ""); - row.Cells[4].AddParagraph(towd.TowageOnDepartureOperatorStreetNameAndNumber); - row.Cells[5].AddParagraph(towd.TowageOnDepartureOperatorPostalCode); - row.Cells[6].AddParagraph(towd.TowageOnDepartureOperatorCountry ?? ""); - row.Cells[7].AddParagraph(towd.TowageOnDepartureOperatorPhone); - row.Cells[8].AddParagraph(towd.TowageOnDepartureOperatorFax ?? ""); - row.Cells[9].AddParagraph(towd.TowageOnDepartureOperatorEmail ?? ""); - row.Cells[10].AddParagraph(towd.TowageOnDepartureLengthOverall_MTR.HasValue ? towd.TowageOnDepartureLengthOverall_MTR.Value.ToString() : ""); - row.Cells[11].AddParagraph(towd.TowageOnDepartureBeam_MTR.HasValue ? towd.TowageOnDepartureBeam_MTR.Value.ToString() : ""); - row.Cells[12].AddParagraph(towd.TowageOnDepartureDraught_DMT.HasValue ? towd.TowageOnDepartureDraught_DMT.Value.ToString() : ""); - row.Cells[13].AddParagraph(towd.TowageOnDepartureRemarks ?? ""); + row.Cells[2].AddParagraph(towd.TowageOnDepartureFlag ?? ""); + row.Cells[3].AddParagraph(towd.TowageOnDepartureLengthOverall_MTR.HasValue ? towd.TowageOnDepartureLengthOverall_MTR.Value.ToString() : ""); + row.Cells[4].AddParagraph(towd.TowageOnDepartureBeam_MTR.HasValue ? towd.TowageOnDepartureBeam_MTR.Value.ToString() : ""); + row.Cells[5].AddParagraph(towd.TowageOnDepartureDraught_DMT.HasValue ? towd.TowageOnDepartureDraught_DMT.Value.ToString() : ""); + row.Cells[6].AddParagraph(towd.TowageOnDepartureRemarks ?? ""); + row.Cells[7].AddParagraph(towd.TowageOnDepartureOperatorCompanyName ?? ""); + row.Cells[8].AddParagraph(towd.TowageOnDepartureOperatorStreetNameAndNumber); + row.Cells[9].AddParagraph(towd.TowageOnDepartureOperatorPostalCode); + row.Cells[10].AddParagraph(towd.TowageOnDepartureOperatorCountry ?? ""); + row.Cells[11].AddParagraph(towd.TowageOnDepartureOperatorPhone); + row.Cells[12].AddParagraph(towd.TowageOnDepartureOperatorFax ?? ""); + row.Cells[13].AddParagraph(towd.TowageOnDepartureOperatorEmail ?? ""); } } @@ -1476,8 +1558,8 @@ namespace bsmd.ReportGenerator Row row = table.AddRow(); Cell cell = row.Cells[0]; Paragraph aParagraph = cell.AddParagraph(elem.Key); - if (elem.Value.IsNullOrEmpty()) - aParagraph.Style = "Gray"; + // if (elem.Value.IsNullOrEmpty()) // 14.6.21: CH: nichts ausgrauen + // aParagraph.Style = "Gray"; string val = elem.Value; // funktioniert leider nicht, müsste das auf PDFsharp umstellen (http://www.pdfsharp.net/wiki/Unicode-sample.ashx) if (val == "True") val = "Yes"; // @"\u2611"; // unicode ballot box with check @@ -1525,6 +1607,11 @@ namespace bsmd.ReportGenerator // ACHTUNG! Die Name (propertyName) sind die bereits in report.db *ersetzten* Namen, d.h. ändert man dort // wieder etwas funktioniert es ggf. hier nicht mehr. Das ist leider aufwändig zu ändern, man müsste die Report // Erzeugung komplett umbauen + + if(propertyName.Contains("fumigated", StringComparison.OrdinalIgnoreCase)) + { + int bla = 23; + } switch(propertyName) { @@ -1543,9 +1630,12 @@ namespace bsmd.ReportGenerator } } break; - case "Ship Type": - if (LocalizedLookup.getVesselTypes().ContainsKey(value)) - result = string.Format("{0} - {1}", value, LocalizedLookup.getVesselTypes()[value]); + case "ShipType": + if (LocalizedLookup.getVesselTypes().ContainsKey(value)) + { + string codeAndText = LocalizedLookup.getVesselTypes()[value]; + result = codeAndText.Substring(codeAndText.IndexOf(' ')); // snip off the code + } break; case "INFShipClass": case "INF-Ship-Class": @@ -1582,7 +1672,7 @@ namespace bsmd.ReportGenerator } } break; - case "General Description of Cargo": + case "GeneralDescriptionOfCargo": { switch(value) { @@ -1620,13 +1710,33 @@ namespace bsmd.ReportGenerator } } break; + case "TankerHullConfiguration": + { + switch (value) + { + case "0": result = "Single hull"; break; + case "1": result = "Single hull with SBT"; break; + case "2": result = "Double hull"; break; + } + } + break; + case "ConditionCargoBallastTanks": + { + switch(value) + { + case "0": result = "Full"; break; + case "1": result = "Empty"; break; + case "2": result = "Inerted"; break; + } + } + break; default: break; - } + } if(propertyName.Contains("flag", StringComparison.OrdinalIgnoreCase)) if (LocalizedLookup.getNationalities().ContainsKey(value)) - result = LocalizedLookup.getNationalities()[value]; + result = LocalizedLookup.getNationalities()[value].Substring(3); // remove code from result if(propertyName.Contains("port", StringComparison.OrdinalIgnoreCase)) { @@ -1639,9 +1749,8 @@ namespace bsmd.ReportGenerator } if (propertyName.Contains("nst2007", StringComparison.OrdinalIgnoreCase)) - if (LocalizedLookup.getCargoCodesNST().ContainsKey(value)) - result = LocalizedLookup.getCargoCodesNST()[value]; - + if (cargoCodesNST.ContainsKey(value)) + result = cargoCodesNST[value]; return result; } diff --git a/nsw/Source/bsmd.ReportGenerator/Properties/Settings.Designer.cs b/nsw/Source/bsmd.ReportGenerator/Properties/Settings.Designer.cs index abf8e5aa..39d80d17 100644 --- a/nsw/Source/bsmd.ReportGenerator/Properties/Settings.Designer.cs +++ b/nsw/Source/bsmd.ReportGenerator/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace bsmd.ReportGenerator.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); @@ -23,24 +23,6 @@ namespace bsmd.ReportGenerator.Properties { } } - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("replace me!")] - public string ConnectionString { - get { - return ((string)(this["ConnectionString"])); - } - } - - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string OutputDirectory { - get { - return ((string)(this["OutputDirectory"])); - } - } - [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("300")] @@ -106,15 +88,6 @@ namespace bsmd.ReportGenerator.Properties { } } - [global::System.Configuration.ApplicationScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LogoPath { - get { - return ((string)(this["LogoPath"])); - } - } - [global::System.Configuration.ApplicationScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("False")] @@ -123,5 +96,34 @@ namespace bsmd.ReportGenerator.Properties { return ((bool)(this["DeleteFileAfterSend"])); } } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=E:\\DATA\\DB\\NSW.MDF;Integrated " + + "Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;Appl" + + "icationIntent=ReadWrite;MultiSubnetFailover=False")] + public string ConnectionString { + get { + return ((string)(this["ConnectionString"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("E:\\temp")] + public string OutputDirectory { + get { + return ((string)(this["OutputDirectory"])); + } + } + + [global::System.Configuration.ApplicationScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("E:\\svnlager\\BSMD\\nsw\\Source\\misc\\Logo.gif")] + public string LogoPath { + get { + return ((string)(this["LogoPath"])); + } + } } } diff --git a/nsw/Source/bsmd.ReportGenerator/Properties/Settings.settings b/nsw/Source/bsmd.ReportGenerator/Properties/Settings.settings index da3a5781..cc86f5e3 100644 --- a/nsw/Source/bsmd.ReportGenerator/Properties/Settings.settings +++ b/nsw/Source/bsmd.ReportGenerator/Properties/Settings.settings @@ -2,12 +2,6 @@ - - replace me! - - - - 300 @@ -32,11 +26,17 @@ donotreply@bsmd.de - - - False + + Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=E:\DATA\DB\NSW.MDF;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False + + + E:\temp + + + E:\svnlager\BSMD\nsw\Source\misc\Logo.gif + \ No newline at end of file diff --git a/nsw/Source/bsmd.database/BPOL.cs b/nsw/Source/bsmd.database/BPOL.cs index 3d023069..bf7462fa 100644 --- a/nsw/Source/bsmd.database/BPOL.cs +++ b/nsw/Source/bsmd.database/BPOL.cs @@ -173,6 +173,7 @@ namespace bsmd.database } } + /* public override List ChildParagraphs { get @@ -183,6 +184,7 @@ namespace bsmd.database return result; } } + */ #endregion diff --git a/nsw/Source/bsmd.database/DatabaseEntity.cs b/nsw/Source/bsmd.database/DatabaseEntity.cs index 907a94ea..6854cc38 100644 --- a/nsw/Source/bsmd.database/DatabaseEntity.cs +++ b/nsw/Source/bsmd.database/DatabaseEntity.cs @@ -401,7 +401,7 @@ namespace bsmd.database } else { - value = ((DateTime)propValue).ToLocalTime().ToString(); // perform UTC-LocalTime Conversion + value = ((DateTime)propValue).ToLocalTime().ToString("g"); // perform UTC-LocalTime Conversion (no seconds) } } else diff --git a/nsw/Source/bsmd.database/Message.cs b/nsw/Source/bsmd.database/Message.cs index 595b2d24..1f64e107 100644 --- a/nsw/Source/bsmd.database/Message.cs +++ b/nsw/Source/bsmd.database/Message.cs @@ -705,6 +705,13 @@ namespace bsmd.database public void DeleteElements() { + foreach (MessageError me in ErrorList) + DBManager.Instance.Delete(me); + foreach (MessageViolation mv in ViolationList) + DBManager.Instance.Delete(mv); + foreach (SystemError se in SystemErrorList) + DBManager.Instance.Delete(se); + foreach (DatabaseEntity dbEntity in this.Elements) { if (dbEntity is ISublistContainer sublistContainer) diff --git a/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs b/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs index f4bb32c1..28ed7077 100644 --- a/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs +++ b/nsw/Source/bsmd.database/PortOfCallLast30DaysCrewJoinedShip.cs @@ -88,7 +88,7 @@ namespace bsmd.database break; } - query += " ORDER BY CAST(Identifier AS INT)"; + query += " ORDER BY TRY_CAST(Identifier AS INT)"; cmd.CommandText = query; } diff --git a/nsw/Source/misc/report.db b/nsw/Source/misc/report.db index 4a19fd4025558c07e4f947e68bb780a3ff8fd5f5..06cad67990aac5c3323e165277208cce29bb8628 100644 GIT binary patch delta 132 zcmZo@U~Fh$oFL7pJyFJ4P@6%|eFZNA0|OJY6$A59W~