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 5976d1a8..da412df0 100644 Binary files a/Stundensheet.xlsx and b/Stundensheet.xlsx differ 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 4a19fd40..06cad679 100644 Binary files a/nsw/Source/misc/report.db and b/nsw/Source/misc/report.db differ