From f969bb78500f10c86310c5995bc5d3bf5f0cadc4 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Sat, 3 Dec 2016 07:24:18 +0000 Subject: [PATCH] Woche in Buxtehude --- Stundensheet.xlsx | Bin 24638 -> 24713 bytes nsw/Dänemark/SafeSeaNetTest/App.config | 2 +- .../SafeSeaNetTest/SafeSeaNetTest.csproj | 2 +- nsw/Source/SQL/Update_3.1.3_To_3.5.sql | 59 ++++++++++++++++++ nsw/Source/bsmd.database/BPOL.cs | 9 ++- nsw/Source/bsmd.database/INFO.cs | 14 ++++- nsw/Source/bsmd.database/NOA_NOD.cs | 11 +++- nsw/Source/bsmd.database/PRE72H.cs | 18 ++++-- nsw/Source/bsmd.database/PortOfItinerary.cs | 16 +++-- nsw/Source/bsmd.database/SEC.cs | 16 +++-- nsw/Source/bsmd.database/STAT.cs | 28 +++++++-- nsw/Source/bsmd.database/WAS.cs | 14 +++-- 12 files changed, 156 insertions(+), 33 deletions(-) create mode 100644 nsw/Source/SQL/Update_3.1.3_To_3.5.sql diff --git a/Stundensheet.xlsx b/Stundensheet.xlsx index 85954c664718b88ff3ee9a23321ac835f8004d5a..fcbf57f274b611e44c8922a645dba6aeafd2cfad 100644 GIT binary patch delta 21408 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 A2><{9 delta 21242 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 diff --git a/nsw/Dänemark/SafeSeaNetTest/App.config b/nsw/Dänemark/SafeSeaNetTest/App.config index 45437954..877624ed 100644 --- a/nsw/Dänemark/SafeSeaNetTest/App.config +++ b/nsw/Dänemark/SafeSeaNetTest/App.config @@ -1,6 +1,6 @@ - + diff --git a/nsw/Dänemark/SafeSeaNetTest/SafeSeaNetTest.csproj b/nsw/Dänemark/SafeSeaNetTest/SafeSeaNetTest.csproj index dfd4a9d5..aa060fbb 100644 --- a/nsw/Dänemark/SafeSeaNetTest/SafeSeaNetTest.csproj +++ b/nsw/Dänemark/SafeSeaNetTest/SafeSeaNetTest.csproj @@ -9,7 +9,7 @@ Properties SafeSeaNetTest SafeSeaNetTest - v4.6.1 + v4.5 512 true diff --git a/nsw/Source/SQL/Update_3.1.3_To_3.5.sql b/nsw/Source/SQL/Update_3.1.3_To_3.5.sql new file mode 100644 index 00000000..abd510c6 --- /dev/null +++ b/nsw/Source/SQL/Update_3.1.3_To_3.5.sql @@ -0,0 +1,59 @@ +-- Dieses Update hebt die Datenbank auf DK Verarbeitung an ( Version 3.5) +-- Version 4.0 sind dann die Änderungen für NSW 2017 + +PRINT N'Altering [dbo].[NOA_NOD]...'; +GO +ALTER TABLE [dbo].[NOA_NOD] ADD [IsAnchored] BIT NULL; +GO + +PRINT N'Altering [dbo].[INFO]...'; +GO +ALTER TABLE [dbo].[INFO] ADD [PortFacility] NVARCHAR(10) NULL; +GO + +PRINT N'Altering [dbo].[PRE72H]...'; +GO +ALTER TABLE [dbo].[PRE72H] ADD [IsDueToInspection] BIT NULL; +ALTER TABLE [dbo].[PRE72H] ADD [PossibleAnchorage] BIT NULL; +GO + +PRINT N'Altering [dbo].[BPOL]...'; +GO +ALTER TABLE [dbo].[BPOL] ADD [CruiseShip] BIT NULL; +GO + +PRINT N'Altering [dbo].[PortOfItinerary]...'; +GO +ALTER TABLE [dbo].[PortOfItinerary] ADD [PortOfItineraryLocode] CHAR(5) NULL; +GO + +PRINT N'Altering [dbo].[WAS]...'; +GO +ALTER TABLE [dbo].[WAS] ADD [ConfirmationOfSufficiency] BIT NULL; +GO + +PRINT N'Altering [dbo].[SEC]...'; +GO +ALTER TABLE [dbo].[SEC] ADD [MatterToReport] NVARCHAR(1024) NULL; +GO + +PRINT N'Altering [dbo].[STAT]...'; +GO +ALTER TABLE [dbo].[STAT] ADD NetTonnage [FLOAT] NULL; +ALTER TABLE [dbo].[STAT] ADD RegistryDate [DATETIME] NULL; +ALTER TABLE [dbo].[STAT] ADD CertificateOfRegistryNumber NVARCHAR(64) NULL; +GO + +PRINT N'Creating [dbo].[STO]..'; +GO +CREATE TABLE [dbo].[STO] ( + [Id] UNIQUEIDENTIFIER CONSTRAINT [PK_PortArea_Id] DEFAULT (newid()) ROWGUIDCOL NOT NULL , + [MessageHeaderId] [uniqueidentifier] NULL, + [Name] [NVARCHAR] (255) NULL, + [Quantity] [INT] NULL, + [QuantityUnit] [NVARCHAR] (16) NULL, + [LocationOnBoard] [NVARCHAR] (64) NULL, + [OfficialUse] [NVARCHAR] (16) NULL +); +GO + diff --git a/nsw/Source/bsmd.database/BPOL.cs b/nsw/Source/bsmd.database/BPOL.cs index 40467e76..66559db7 100644 --- a/nsw/Source/bsmd.database/BPOL.cs +++ b/nsw/Source/bsmd.database/BPOL.cs @@ -30,6 +30,8 @@ namespace bsmd.database [Validation(ValidationCode.NOT_NULL)] public bool? StowawaysOnBoard { get; set; } + public bool? CruiseShip { get; set; } + public List PortOfItineraries { get { return this.poi; } } #endregion @@ -43,24 +45,25 @@ namespace bsmd.database scmd.Parameters.AddWithValue("@P1", this.MessageHeader.Id); scmd.Parameters.AddWithNullableValue("@P2", this.StowawaysOnBoard); + scmd.Parameters.AddWithNullableValue("@P3", this.CruiseShip); if (this.IsNew) { this.CreateId(); scmd.Parameters.AddWithValue("@ID", this.Id); - scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, StowawaysOnBoard) VALUES ( @ID, @P1, @P2 )", + scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, StowawaysOnBoard, CruiseShip) VALUES ( @ID, @P1, @P2, @P3 )", this.Tablename); } else { scmd.Parameters.AddWithValue(@"ID", this.Id); - scmd.CommandText = string.Format("UPDATE {0} SET StowawaysOnBoard = @P2 WHERE Id = @ID", this.Tablename); + scmd.CommandText = string.Format("UPDATE {0} SET StowawaysOnBoard = @P2, CruiseShip = @P3 WHERE Id = @ID", this.Tablename); } } public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { - string query = string.Format("SELECT Id, StowawaysOnBoard FROM {0}", this.Tablename); + string query = string.Format("SELECT Id, StowawaysOnBoard, CruiseShip FROM {0}", this.Tablename); switch (filter) { diff --git a/nsw/Source/bsmd.database/INFO.cs b/nsw/Source/bsmd.database/INFO.cs index e48080f2..8bd0fd2f 100644 --- a/nsw/Source/bsmd.database/INFO.cs +++ b/nsw/Source/bsmd.database/INFO.cs @@ -64,6 +64,10 @@ namespace bsmd.database [MaxLength(50)] public string SternThrusterPower { get; set; } + [MaxLength(4)] + [LookupName("INFO.PortFacility")] + public string PortFacility { get; set; } + #endregion #region DatabaseEntity implementation @@ -91,26 +95,29 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P8", this.PortArea); scmd.Parameters.AddWithNullableValue("@P9", this.BowThrusterPower); scmd.Parameters.AddWithNullableValue("@P10", this.SternThrusterPower); + scmd.Parameters.AddWithNullableValue("@P11", this.PortFacility); if (this.IsNew) { scmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, ShippingArea, RequestedPositionInPortOfCall, " + "SpecialRequirementsOfShipAtBerth, ConstructionCharacteristicsOfShip, FumigatedBulkCargo, DeplacementSummerDraught_TNE, " + - "PortArea, BowThrusterPower, SternThrusterPower) VALUES ( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10 )", this.Tablename); + "PortArea, BowThrusterPower, SternThrusterPower, PortFacility) VALUES ( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11 )", this.Tablename); } else { scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.CommandText = string.Format("UPDATE {0} SET ShippingArea = @P2, RequestedPositionInPortOfCall = @P3, " + "SpecialRequirementsOfShipAtBerth = @P4, ConstructionCharacteristicsOfShip = @P5, FumigatedBulkCargo = @P6," + - "DeplacementSummerDraught_TNE = @P7, PortArea = @P8, BowThrusterPower = @P9, SternThrusterPower = @P10 WHERE Id = @ID", this.Tablename); + "DeplacementSummerDraught_TNE = @P7, PortArea = @P8, BowThrusterPower = @P9, SternThrusterPower = @P10, " + + "PortFacility = @P11 WHERE Id = @ID", this.Tablename); } } public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { string query = string.Format("SELECT Id, ShippingArea, RequestedPositionInPortOfCall, SpecialRequirementsOfShipAtBerth, " + - "ConstructionCharacteristicsOfShip, FumigatedBulkCargo, DeplacementSummerDraught_TNE, PortArea, BowThrusterPower, SternThrusterPower FROM {0}", + "ConstructionCharacteristicsOfShip, FumigatedBulkCargo, DeplacementSummerDraught_TNE, PortArea, BowThrusterPower, " + + "SternThrusterPower, PortFacility FROM {0}", this.Tablename); switch (filter) @@ -146,6 +153,7 @@ namespace bsmd.database if (!reader.IsDBNull(7)) info.PortArea = reader.GetString(7); if (!reader.IsDBNull(8)) info.BowThrusterPower = reader.GetString(8); if (!reader.IsDBNull(9)) info.SternThrusterPower = reader.GetString(9); + if(!reader.IsDBNull(10)) info.PortFacility = reader.GetString(10); result.Add(info); } reader.Close(); diff --git a/nsw/Source/bsmd.database/NOA_NOD.cs b/nsw/Source/bsmd.database/NOA_NOD.cs index 1033abec..b04cdd07 100644 --- a/nsw/Source/bsmd.database/NOA_NOD.cs +++ b/nsw/Source/bsmd.database/NOA_NOD.cs @@ -61,6 +61,8 @@ namespace bsmd.database [ShowReport] public DateTime? ETAToNextPort { get; set; } + public bool? IsAnchored { get; set; } + #endregion #region abstract class implementation @@ -68,7 +70,7 @@ namespace bsmd.database public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { string query = string.Format("SELECT Id, ETAToPortOfCall, ETDFromPortOfCall, " + - "ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, NextPort, ETAToNextPort FROM {0}", this.Tablename); + "ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, NextPort, ETAToNextPort, IsAnchored FROM {0}", this.Tablename); switch (filter) { @@ -100,6 +102,7 @@ namespace bsmd.database if (!reader.IsDBNull(6)) nn.ETDFromLastPort = DateTime.SpecifyKind(reader.GetDateTime(6), DateTimeKind.Utc); if (!reader.IsDBNull(7)) nn.NextPort = reader.GetString(7); if (!reader.IsDBNull(8)) nn.ETAToNextPort = DateTime.SpecifyKind(reader.GetDateTime(8), DateTimeKind.Utc); + if (!reader.IsDBNull(9)) nn.IsAnchored = reader.GetBoolean(9); result.Add(nn); } reader.Close(); @@ -119,6 +122,7 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P7", this.ETDFromLastPort); scmd.Parameters.AddWithNullableValue("@P8", this.NextPort); scmd.Parameters.AddWithNullableValue("@P9", this.ETAToNextPort); + scmd.Parameters.AddWithNullableValue("@P10", this.IsAnchored); if (this.IsNew) { @@ -126,7 +130,8 @@ namespace bsmd.database scmd.Parameters.AddWithValue("@ID", this.Id); scmd.CommandText = string.Format("INSERT INTO {0} ( Id, MessageHeaderId, ETAToPortOfCall, ETDFromPortOfCall, " + "ETAToKielCanal, ETDFromKielCanal, LastPort, ETDFromLastPort, " + - "NextPort, ETAToNextPort) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9) ", this.Tablename); + "NextPort, ETAToNextPort, IsAnchored) VALUES (@ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10) ", + this.Tablename); } else { @@ -134,7 +139,7 @@ namespace bsmd.database scmd.CommandText = string.Format("UPDATE {0} SET ETAToPortOfCall = @P2, ETDFromPortOfCall = @P3, " + "ETAToKielCanal = @P4, ETDFromKielCanal = @P5, LastPort = @P6, ETDFromLastPort = @P7, " + - "NextPort = @P8, ETAToNextPort = @P9 WHERE Id = @ID", this.Tablename); + "NextPort = @P8, ETAToNextPort = @P9, IsAnchored = @P10 WHERE Id = @ID", this.Tablename); } } diff --git a/nsw/Source/bsmd.database/PRE72H.cs b/nsw/Source/bsmd.database/PRE72H.cs index 9ecd6d88..b99794d0 100644 --- a/nsw/Source/bsmd.database/PRE72H.cs +++ b/nsw/Source/bsmd.database/PRE72H.cs @@ -65,6 +65,12 @@ namespace bsmd.database [LookupName("PRE72H.PlannedPeriodOfStay_HUR")] public double? PlannedPeriodOfStay_HUR { get; set; } + [LookupName("PRE72H.IsDueToInspection")] + public bool? IsDueToInspection { get; set; } + + [LookupName("PRE72H.PossibleAnchorage")] + public bool? PossibleAnchorage { get; set; } + public override string Subtitle { get @@ -92,13 +98,15 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P8", this.PlannedWorks); scmd.Parameters.AddWithNullableValue("@P9", this.DateOfLastExpandedInspection); scmd.Parameters.AddWithNullableValue("@P10", this.PlannedPeriodOfStay_HUR); - + scmd.Parameters.AddWithNullableValue("@P11", this.IsDueToInspection); + scmd.Parameters.AddWithNullableValue("@P12", this.PossibleAnchorage); if (this.IsNew) { scmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, Tanker, TankerHullConfiguration, " + "ConditionCargoBallastTanks, NatureOfCargo, VolumeOfCargo, PlannedOperations, PlannedWorks, DateOfLastExpandedInspection, " + - "PlannedPeriodOfStay_HUR) VALUES ( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10 )", this.Tablename); + "PlannedPeriodOfStay_HUR, IsDueToInspection, PossibleAnchorage) VALUES ( @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12 )", + this.Tablename); } else { @@ -106,7 +114,7 @@ namespace bsmd.database scmd.CommandText = string.Format("UPDATE {0} SET Tanker = @P2, TankerHullConfiguration = @P3, " + "ConditionCargoBallastTanks = @P4, NatureOfCargo = @P5, VolumeOfCargo = @P6," + "PlannedOperations = @P7, PlannedWorks = @P8, DateOfLastExpandedInspection = @P9, " + - "PlannedPeriodOfStay_HUR = @P10 WHERE Id = @ID", this.Tablename); + "PlannedPeriodOfStay_HUR = @P10, IsDueToInspection = @P11, PossibleAnchorage = @P12 WHERE Id = @ID", this.Tablename); } } @@ -114,7 +122,7 @@ namespace bsmd.database { string query = string.Format("SELECT Id, Tanker, TankerHullConfiguration, ConditionCargoBallastTanks, " + "NatureOfCargo, VolumeOfCargo, PlannedOperations, PlannedWorks, DateOfLastExpandedInspection, " + - "PlannedPeriodOfStay_HUR FROM {0}", this.Tablename); + "PlannedPeriodOfStay_HUR, IsDueToInspection, PossibleAnchorage FROM {0}", this.Tablename); switch (filter) { @@ -149,6 +157,8 @@ namespace bsmd.database if (!reader.IsDBNull(7)) pre72h.PlannedWorks = reader.GetString(7); if (!reader.IsDBNull(8)) pre72h.DateOfLastExpandedInspection = reader.GetDateTime(8); if (!reader.IsDBNull(9)) pre72h.PlannedPeriodOfStay_HUR = (float) reader.GetDouble(9); + if (!reader.IsDBNull(10)) pre72h.IsDueToInspection = reader.GetBoolean(10); + if (!reader.IsDBNull(11)) pre72h.PossibleAnchorage = reader.GetBoolean(11); result.Add(pre72h); } reader.Close(); diff --git a/nsw/Source/bsmd.database/PortOfItinerary.cs b/nsw/Source/bsmd.database/PortOfItinerary.cs index 16060793..dcc1b202 100644 --- a/nsw/Source/bsmd.database/PortOfItinerary.cs +++ b/nsw/Source/bsmd.database/PortOfItinerary.cs @@ -35,6 +35,9 @@ namespace bsmd.database [Validation(ValidationCode.NOT_NULL)] public DateTime? PortOfItineraryETA { get; set; } + [Validation(ValidationCode.LOCODE)] + public string PortOfItineraryLocode { get; set; } + public string Identifier { get; set; } #endregion @@ -50,23 +53,25 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P2", this.PortOfItineraryName); scmd.Parameters.AddWithNullableValue("@P3", this.PortOfItineraryETA); scmd.Parameters.AddWithNullableValue("@P4", this.Identifier); + scmd.Parameters.AddWithNullableValue("@P5", this.PortOfItineraryLocode); if (this.IsNew) { - scmd.CommandText = string.Format("INSERT INTO {0} (BPOLId, PortOfItineraryName, PortOfItineraryETA, Identifier) " + - "VALUES ( @P1, @P2, @P3, @P4 )", this.Tablename); + scmd.CommandText = string.Format("INSERT INTO {0} (BPOLId, PortOfItineraryName, PortOfItineraryETA, Identifier, " + + "PortOfItineraryLocode) VALUES ( @P1, @P2, @P3, @P4, @P5 )", this.Tablename); } else { scmd.Parameters.AddWithValue(@"ID", this.Id); - scmd.CommandText = string.Format("UPDATE {0} SET PortOfItineraryName = @P2, PortOfItineraryETA = @P3 " + - "WHERE Id = @ID", this.Tablename); + scmd.CommandText = string.Format("UPDATE {0} SET PortOfItineraryName = @P2, PortOfItineraryETA = @P3, " + + "PortOfItineraryLocode = @P5 WHERE Id = @ID", this.Tablename); } } public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { - string query = string.Format("SELECT Id, PortOfItineraryName, PortOfItineraryETA, Identifier FROM {0}", this.Tablename); + string query = string.Format("SELECT Id, PortOfItineraryName, PortOfItineraryETA, Identifier, PortOfItineraryLocode FROM {0}", + this.Tablename); switch (filter) { @@ -95,6 +100,7 @@ namespace bsmd.database if (!reader.IsDBNull(1)) poi.PortOfItineraryName = reader.GetString(1); if (!reader.IsDBNull(2)) poi.PortOfItineraryETA = reader.GetDateTime(2); if (!reader.IsDBNull(3)) poi.Identifier = reader.GetString(3); + if (!reader.IsDBNull(4)) poi.PortOfItineraryLocode = reader.GetString(4); result.Add(poi); } reader.Close(); diff --git a/nsw/Source/bsmd.database/SEC.cs b/nsw/Source/bsmd.database/SEC.cs index 9d0f9416..28bd73af 100644 --- a/nsw/Source/bsmd.database/SEC.cs +++ b/nsw/Source/bsmd.database/SEC.cs @@ -118,6 +118,10 @@ namespace bsmd.database [Validation2(ValidationCode.NOT_NULL)] public byte? GeneralDescriptionOfCargo { get; set; } + [LookupName("SEC.MatterToReport")] + [MaxLength(1024)] + public string MatterToReport { get; set; } + public List LastTenPortFacilitesCalled { get { return this.ltpfc; } } public List ShipToShipActivitiesDuringLastTenPortFacilitiesCalled { get { return this.lsts; } } @@ -149,6 +153,7 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P16", this.PortFacilityOfArrival); scmd.Parameters.AddWithNullableValue("@P17", this.GeneralDescriptionOfCargo); scmd.Parameters.AddWithNullableValue("@P18", this.CSOFax); + scmd.Parameters.AddWithNullableValue("@P19", this.MatterToReport); if (this.IsNew) { @@ -157,8 +162,9 @@ 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) " + - "VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, @P17, @P18 )", this.Tablename); + "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport) " + + "VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, @P12, @P13, @P14, @P15, @P16, " + + "@P17, @P18, @P19 )", this.Tablename); } else { @@ -168,7 +174,7 @@ 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 WHERE Id = @ID", this.Tablename); + "GeneralDescriptionOfCargo = @P17, CSOFax = @P18, MatterToReport = @P19 WHERE Id = @ID", this.Tablename); } } @@ -177,7 +183,7 @@ 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 FROM {0}", this.Tablename); + "CurrentShipSecurityLevel, PortFacilityOfArrival, GeneralDescriptionOfCargo, CSOFax, MatterToReport FROM {0}", this.Tablename); switch (filter) { @@ -220,6 +226,8 @@ namespace bsmd.database if (!reader.IsDBNull(15)) sec.PortFacilityOfArrival = reader.GetString(15); 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); + result.Add(sec); } reader.Close(); diff --git a/nsw/Source/bsmd.database/STAT.cs b/nsw/Source/bsmd.database/STAT.cs index 34a7db89..02c8c5dd 100644 --- a/nsw/Source/bsmd.database/STAT.cs +++ b/nsw/Source/bsmd.database/STAT.cs @@ -138,6 +138,16 @@ namespace bsmd.database } } + [LookupName("STAT.NetTonnage")] + public double? NetTonnage { get; set; } + + [LookupName("STAT.RegistryDate")] + public DateTime? RegistryDate { get; set; } + + [LookupName("STAT.CertificateOfRegistryNumber")] + [MaxLength(35)] + public string CertificateOfRegistryNumber { get; set; } + #endregion #region abstract class implementation @@ -146,7 +156,8 @@ namespace bsmd.database { string query = string.Format("SELECT Id, ShipName, Callsign, MMSINumber, Flag, LengthOverall_MTR, Beam_MTR, " + "GrossTonnage, PortOfRegistry, InmarsatCallNumber, ShipType, ISMCompanyName, ISMCompanyId, ISMCompanyStreetAndNumber, " + - "ISMCompanyPostalCode, ISMCompanyCity, ISMCompanyCountry, TransportMode FROM {0} ", this.Tablename); + "ISMCompanyPostalCode, ISMCompanyCity, ISMCompanyCountry, TransportMode, NetTonnage, RegistryDate, " + + "CertificateOfRegistryNumber FROM {0} ", this.Tablename); switch (filter) { @@ -189,6 +200,9 @@ namespace bsmd.database if (!reader.IsDBNull(15)) stat.ISMCompanyCity = reader.GetString(15); if (!reader.IsDBNull(16)) stat.ISMCompanyCountry = reader.GetString(16); if (!reader.IsDBNull(17)) stat.TransportMode = reader.GetString(17); + if (!reader.IsDBNull(18)) stat.NetTonnage = (float) reader.GetDouble(18); + if (!reader.IsDBNull(19)) stat.RegistryDate = reader.GetDateTime(19); + if (!reader.IsDBNull(20)) stat.CertificateOfRegistryNumber = reader.GetString(20); result.Add(stat); } @@ -235,22 +249,26 @@ namespace bsmd.database else scmd.Parameters.AddWithValue("@P17", DBNull.Value); if (this.TransportMode != null) scmd.Parameters.AddWithValue("@P18", this.TransportMode); else scmd.Parameters.AddWithValue("@P18", DBNull.Value); + scmd.Parameters.AddWithNullableValue("@P19", this.NetTonnage); + scmd.Parameters.AddWithNullableValue("@P20", this.RegistryDate); + scmd.Parameters.AddWithNullableValue("@P21", this.CertificateOfRegistryNumber); if (this.IsNew) { cmd.CommandText = string.Format("INSERT INTO {0} (MessageHeaderId, ShipName, CallSign, MMSINumber, " + "Flag, LengthOverall_MTR, Beam_MTR, GrossTonnage, PortOfRegistry, InmarsatCallNumber, ShipType, " + "ISMCompanyName, ISMCompanyId, ISMCompanyStreetAndNumber, ISMCompanyPostalCode, ISMCompanyCity, " + - "ISMCompanyCountry, TransportMode) VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, " + - " @P12, @P13, @P14, @P15, @P16, @P17, @P18)", this.Tablename); + "ISMCompanyCountry, TransportMode, NetTonnage, RegistryDate, CertificateOfRegistryNumber) " + + "VALUES (@P1, @P2, @P3, @P4, @P5, @P6, @P7, @P8, @P9, @P10, @P11, " + + " @P12, @P13, @P14, @P15, @P16, @P17, @P18, @P19, @P20, @P21)", this.Tablename); } else { cmd.CommandText = string.Format("UPDATE {0} SET ShipName = @P2, CallSign = @P3, MMSINumber = @P4, Flag = @P5, " + "LengthOverall_MTR = @P6, Beam_MTR = @P7, GrossTonnage = @P8, PortOfRegistry = @P9, InmarsatCallNumber = @P10, " + "ShipType = @P11, ISMCompanyName = @P12, ISMCompanyId = @P13, ISMCompanyStreetAndNumber = @P14, " + - "ISMCompanyPostalCode = @P15, ISMCompanyCity = @P16, ISMCompanyCountry = @P17, TransportMode = @P18 " + - "WHERE Id = @ID", this.Tablename); + "ISMCompanyPostalCode = @P15, ISMCompanyCity = @P16, ISMCompanyCountry = @P17, TransportMode = @P18, " + + "NetTonnage = @P19, RegistryDate = @P20, CertificateOfRegistryNumber = @P21 WHERE Id = @ID", this.Tablename); scmd.Parameters.AddWithValue("@ID", this.Id); } diff --git a/nsw/Source/bsmd.database/WAS.cs b/nsw/Source/bsmd.database/WAS.cs index 21e19e83..2864a41a 100644 --- a/nsw/Source/bsmd.database/WAS.cs +++ b/nsw/Source/bsmd.database/WAS.cs @@ -51,6 +51,9 @@ namespace bsmd.database [Validation2(ValidationCode.NOT_NULL)] public byte? WasteDisposalDelivery { get; set; } + [LookupName("WAS.ConfirmationOfSufficiency")] + public bool? ConfirmationOfSufficiency { get; set; } + public List Waste { get { return this.waste; } } public List WasteDisposalServiceProvider { get { return this.wdsp; } } @@ -70,27 +73,29 @@ namespace bsmd.database scmd.Parameters.AddWithNullableValue("@P4", this.ConfirmationOfCorrectness); scmd.Parameters.AddWithNullableValue("@P5", this.LastWasteDisposalDate); scmd.Parameters.AddWithNullableValue("@P6", this.WasteDisposalDelivery); + scmd.Parameters.AddWithNullableValue("@P7", this.ConfirmationOfSufficiency); if (this.IsNew) { this.CreateId(); scmd.Parameters.AddWithValue("@ID", this.Id); scmd.CommandText = string.Format("INSERT INTO {0} (Id, MessageHeaderId, WasteDisposalValidExemption, " + - "LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, WasteDisposalDelivery) " + - "VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6 )", this.Tablename); + "LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, WasteDisposalDelivery, " + + "ConfirmationOfSufficiency) VALUES ( @ID, @P1, @P2, @P3, @P4, @P5, @P6, @P7 )", this.Tablename); } else { scmd.Parameters.AddWithValue(@"ID", this.Id); scmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalValidExemption = @P2, LastWasteDisposalPort = @P3, " + - "ConfirmationOfCorrectness = @P4, LastWasteDisposalDate = @P5, WasteDisposalDelivery = @P6 " + + "ConfirmationOfCorrectness = @P4, LastWasteDisposalDate = @P5, WasteDisposalDelivery = @P6, ConfirmationOfSufficiency = @P7 " + "WHERE Id = @ID", this.Tablename); } } public override void PrepareLoadCommand(System.Data.IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { - string query = string.Format("SELECT Id, WasteDisposalValidExemption, LastWasteDisposalPort, ConfirmationOfCorrectness, LastWasteDisposalDate, WasteDisposalDelivery " + + string query = string.Format("SELECT Id, WasteDisposalValidExemption, LastWasteDisposalPort, ConfirmationOfCorrectness, " + + "LastWasteDisposalDate, WasteDisposalDelivery, ConfirmationOfSufficiency " + "FROM {0} ", this.Tablename); switch (filter) @@ -122,6 +127,7 @@ namespace bsmd.database if (!reader.IsDBNull(3)) was.ConfirmationOfCorrectness = reader.GetBoolean(3); if (!reader.IsDBNull(4)) was.LastWasteDisposalDate = reader.GetDateTime(4); if (!reader.IsDBNull(5)) was.WasteDisposalDelivery = reader.GetByte(5); + if (!reader.IsDBNull(6)) was.ConfirmationOfSufficiency = reader.GetBoolean(6); result.Add(was); } reader.Close();