From dc0a79bd1dc5c314e2ef5a7a16c4c23177c9d5e7 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Mon, 23 Jan 2017 20:52:50 +0000 Subject: [PATCH] =?UTF-8?q?=C3=84nderungen=20Korrekturen=20Version=203.3.1?= =?UTF-8?q?0=20(SEC=20DB=20Erweiterung,..)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Stundensheet.xlsx | Bin 25914 -> 25941 bytes nsw/Source/SQL/Update_3.5.3_To_3.5.4.sql | 8 ++++ .../bsmd.ExcelReadService/ExcelReader.cs | 2 +- nsw/Source/bsmd.ExcelReadService/Util.cs | 41 +++++++++++++++++- .../Properties/AssemblyProductInfo.cs | 2 +- .../Properties/AssemblyProjectInfo.cs | 2 +- nsw/Source/bsmd.database/SEC.cs | 21 +++++++-- nsw/Source/bsmd.database/bsmd.database.csproj | 4 +- nsw/Source/bsmd.database/packages.config | 4 ++ 9 files changed, 75 insertions(+), 9 deletions(-) create mode 100644 nsw/Source/SQL/Update_3.5.3_To_3.5.4.sql create mode 100644 nsw/Source/bsmd.database/packages.config diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index cd26ef0ca9f7d7422f290bb343824a54f6c1d7a7..4aebca82e3157dc8c4be19774727133f9f04a6a4 100644 GIT binary patch delta 14656 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 VGXTw52tq!BFf6HHD^32R|3A|$X1@Rc delta 14626 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 I=s&Fg18B8Z#{d8T diff --git a/nsw/Source/SQL/Update_3.5.3_To_3.5.4.sql b/nsw/Source/SQL/Update_3.5.3_To_3.5.4.sql new file mode 100644 index 00000000..a5047332 --- /dev/null +++ b/nsw/Source/SQL/Update_3.5.3_To_3.5.4.sql @@ -0,0 +1,8 @@ +PRINT N'Altering [dbo].[SEC]...'; +GO +ALTER TABLE [dbo].[SEC] ADD [KielCanalPassagePlanned] BIT NULL; +ALTER TABLE [dbo].[SEC] ADD [KielCanalPassagePlannedIncomming] [datetime] NULL; +ALTER TABLE [dbo].[SEC] ADD [KielCanalPassagePlannedOutgoing] [datetime] NULL; +GO + + diff --git a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs index 3a9cb896..19509894 100644 --- a/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs +++ b/nsw/Source/bsmd.ExcelReadService/ExcelReader.cs @@ -475,7 +475,7 @@ namespace bsmd.ExcelReadService { DateTime date; if (DateTime.TryParseExact(val, "HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.NoCurrentDateDefault, out date)) - return date; + result = date; } if ((result == null) && (val != null)) diff --git a/nsw/Source/bsmd.ExcelReadService/Util.cs b/nsw/Source/bsmd.ExcelReadService/Util.cs index 778ad684..0cd49a5e 100644 --- a/nsw/Source/bsmd.ExcelReadService/Util.cs +++ b/nsw/Source/bsmd.ExcelReadService/Util.cs @@ -157,6 +157,12 @@ namespace bsmd.ExcelReadService } ATA ata = ataMessage.Elements[0] as ATA; Util.ScanMessage(ata, reader); + + if(!ata.ATAPortOfCall.HasValue) + { + reader.ReadDateTime("ATA.ATADatePortOfCall", "ATA.ATATimePortOfCall"); + } + if (!ata.ATAPortOfCall.HasValue && ataMessage.IsNew) messages.Remove(ataMessage); } @@ -176,7 +182,13 @@ namespace bsmd.ExcelReadService } ATD atd = atdMessage.Elements[0] as ATD; Util.ScanMessage(atd, reader); - if (!atd.ATDPortOfCall.HasValue && atdMessage.IsNew) + + if (!atd.ATDPortOfCall.HasValue) + { + reader.ReadDateTime("ATD.ATDDatePortOfCall", "ATD.ATDTimePortOfCall"); + } + + if (!atd.ATDPortOfCall.HasValue && atdMessage.IsNew) messages.Remove(atdMessage); } @@ -318,6 +330,13 @@ namespace bsmd.ExcelReadService Util.ScanMessage(poba, reader); if (((poba.TotalPersonsOnBoardUponArrival ?? 0) == 0) && poba.IsNew) messages.Remove(pobaMessage); + + reader.Conf.ConfirmNumber("POBA.TotalCrewMembersOnBoardUponArrival_DK", poba.TotalCrewMembersOnBoardUponArrival, + (poba.TotalCrewMembersOnBoardUponArrival.HasValue && poba.TotalCrewMembersOnBoardUponArrival > 0) ? + ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + + reader.Conf.ConfirmNumber("POBA.TotalPassengersOnBoardUponArrival_DK", poba.TotalPassengersOnBoardUponArrival, + ExcelReader.ReadState.OK); } #endregion @@ -338,7 +357,15 @@ namespace bsmd.ExcelReadService Util.ScanMessage(pobd, reader); if (((pobd.TotalPersonsOnBoardUponDeparture ?? 0) == 0) && pobd.IsNew) messages.Remove(pobdMessage); - } + + reader.Conf.ConfirmNumber("POBD.TotalCrewMembersOnBoardUponDeparture_DK", pobd.TotalCrewMembersOnBoardUponDeparture, + (pobd.TotalCrewMembersOnBoardUponDeparture.HasValue && pobd.TotalCrewMembersOnBoardUponDeparture > 0) ? + ExcelReader.ReadState.OK : ExcelReader.ReadState.WARN); + + reader.Conf.ConfirmNumber("POBD.TotalPassengersOnBoardUponDeparture_DK", pobd.TotalPassengersOnBoardUponDeparture, + ExcelReader.ReadState.OK); + + } #endregion @@ -1403,6 +1430,14 @@ namespace bsmd.ExcelReadService reader.Conf.ConfirmText("SEC.GeneralDescriptionOfCargo", genDescCargo, sec.GeneralDescriptionOfCargo.HasValue ? ExcelReader.ReadState.OK : ExcelReader.ReadState.FAIL); + bool? secKielArrival = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Arrival"); + bool? secKielDeparture = reader.ReadBoolean("SEC.KielCanalPassagePlanned_Departure"); + + sec.KielCanalPassagePlanned = (secKielArrival ?? false) || (secKielDeparture ?? false); + sec.KielCanalPassagePlannedIncomming = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedIncomming", "SEC.ETATimeKielCanalPassagePlannedIncomming"); + sec.KielCanalPassagePlannedOutgoing = reader.ReadDateTime("SEC.ETADateKielCanalPassagePlannedOutgoing", "SEC.ETATimeKielCanalPassagePlannedOutgoing"); + + // Last10PortFacilitesCalled for (int i = 1; i <= 10; i++) { @@ -2294,6 +2329,8 @@ namespace bsmd.ExcelReadService result.Portname = LocodeDB.PortNameFromLocode(poc); result.HerbergEmailContactReportingVessel = reader.ReadText("ShipMail"); + result.HerbergReportType = reader.ReadText("ReferenceNumber"); + reader.Conf.ConfirmText("ReferenceNumber", result.HerbergReportType, result.HerbergReportType.IsNullOrEmpty() ? ExcelReader.ReadState.FAIL : ExcelReader.ReadState.OK); if (result.IsTransit) result.ETAKielCanal = eta; diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs index f8c8cd52..778754f4 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProductInfo.cs @@ -2,6 +2,6 @@ [assembly: AssemblyCompany("Informatikbüro Daniel Schick")] [assembly: AssemblyProduct("BSMD NSW interface")] -[assembly: AssemblyInformationalVersion("3.3.9")] +[assembly: AssemblyInformationalVersion("3.3.10")] [assembly: AssemblyCopyright("Copyright © 2014-2016 Informatikbüro Daniel Schick. All rights reserved.")] [assembly: AssemblyTrademark("")] \ No newline at end of file diff --git a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs index 5a999ae8..d3eb6a97 100644 --- a/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs +++ b/nsw/Source/bsmd.database/Properties/AssemblyProjectInfo.cs @@ -1,4 +1,4 @@ using System.Reflection; -[assembly: AssemblyVersion("3.3.9.*")] +[assembly: AssemblyVersion("3.3.10.*")] diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 139a6a53..b5903042 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -120,6 +120,12 @@ namespace bsmd.database [LookupName("SEC.MatterToReport")] [MaxLength(1024)] public string MatterToReport { get; set; } + + public bool? KielCanalPassagePlanned { get; set; } + + public DateTime? KielCanalPassagePlannedIncomming { get; set; } + + public DateTime? KielCanalPassagePlannedOutgoing { get; set; } public List LastTenPortFacilitesCalled { get { return this.ltpfc; } } @@ -153,6 +159,9 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P17", this.GeneralDescriptionOfCargo); scmd.Parameters.AddWithNullableValue("@P18", this.CSOFax); scmd.Parameters.AddWithNullableValue("@P19", this.MatterToReport); + scmd.Parameters.AddWithNullableValue("@P20", this.KielCanalPassagePlanned); + scmd.Parameters.AddWithNullableValue("@P21", this.KielCanalPassagePlannedIncomming); + scmd.Parameters.AddWithNullableValue("@P22", this.KielCanalPassagePlannedOutgoing); if (this.IsNew) { @@ -161,7 +170,8 @@ namespace bsmd.database scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, SECSimplification, PortOfCallWhereCompleteSECNotified, " + "CSOLastName, CSOFirstName, CSOPhone, CSOEMail, ValidISSCOnBoard, ReasonsForNoValidISSC, " + "ISSCType, ISSCIssuerType, ISSCIssuerName,ISSCDateOfExpiration, ApprovedSecurityPlanOnBoard, " + - "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport) " + + "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport, " + + "KielCanalPassagePlanned, KielCanalPassagePlannedIncomming, KielCanalPassagePlannedOutgoing) " + "VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, " + "@P17, @P18, @P19 )", this.Tablename); } @@ -173,7 +183,8 @@ namespace bsmd.database "CSOEMail = @P7, ValidISSCOnBoard = @P8, ReasonsForNoValidISSC = @P9, " + "ISSCType = @P10, ISSCIssuerType = @P11, ISSCIssuerName = @P12, ISSCDateOfExpiration = @P13, " + "ApprovedSecurityPlanOnBoard = @P14, CurrentShipSecurityLevel = @P15, PortFacilityOfArrival = @P16, " + - "GeneralDescriptionOfCargo = @P17, CSOFax = @P18, MatterToReport = @P19 WHERE Id = @ID", this.Tablename); + "GeneralDescriptionOfCargo = @P17, CSOFax = @P18, MatterToReport = @P19, KielCanalPassagePlanned = @P20, " + + "KielCanalPassagePlannedIncomming = @P21, KielCanalPassagePlannedOutgoing = @P22 WHERE Id = @ID", this.Tablename); } } @@ -182,7 +193,8 @@ namespace bsmd.database string query = string.Format("SELECT Id, SECSimplification, PortOfCallWhereCompleteSECNotified, CSOLastName, " + "CSOFirstName, CSOPhone, CSOEMail, ValidISSCOnBoard, ReasonsForNoValidISSC, " + "ISSCType, ISSCIssuerType, ISSCIssuerName, ISSCDateOfExpiration, ApprovedSecurityPlanOnBoard, " + - "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport FROM {0}", this.Tablename); + "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport, " + + "KielCanalPassagePlanned, KielCanalPassagePlannedIncomming, KielCanalPassagePlannedOutgoing FROM {0}", this.Tablename); switch (filter) { @@ -226,6 +238,9 @@ namespace bsmd.database if (!reader.IsDBNull(16)) sec.GeneralDescriptionOfCargo = reader.GetByte(16); if (!reader.IsDBNull(17)) sec.CSOFax = reader.GetString(17); if (!reader.IsDBNull(18)) sec.MatterToReport = reader.GetString(18); + if (!reader.IsDBNull(19)) sec.KielCanalPassagePlanned = reader.GetBoolean(19); + if (!reader.IsDBNull(20)) sec.KielCanalPassagePlannedIncomming = reader.GetDateTime(20); + if (!reader.IsDBNull(21)) sec.KielCanalPassagePlannedOutgoing = reader.GetDateTime(21); result.Add(sec); } diff --git a/nsw/Source/bsmd.database/bsmd.database.csproj b/nsw/Source/bsmd.database/bsmd.database.csproj index 2a546aca..2cc17e46 100644 --- a/nsw/Source/bsmd.database/bsmd.database.csproj +++ b/nsw/Source/bsmd.database/bsmd.database.csproj @@ -125,7 +125,9 @@ - + + Designer + diff --git a/nsw/Source/bsmd.database/packages.config b/nsw/Source/bsmd.database/packages.config new file mode 100644 index 00000000..31743570 --- /dev/null +++ b/nsw/Source/bsmd.database/packages.config @@ -0,0 +1,4 @@ + + + + \ No newline at end of file