From 01e48f0d1b14c494fd1c8b258609af0729a275b8 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Wed, 18 Feb 2026 15:31:56 +0100 Subject: [PATCH] Adding saving to port area entity --- bsmd.database/DBManager.cs | 32 ++++++++++++--------- bsmd.database/PortArea.cs | 58 ++++++++++++++++++++++++++++++++------ 2 files changed, 67 insertions(+), 23 deletions(-) diff --git a/bsmd.database/DBManager.cs b/bsmd.database/DBManager.cs index ced838c5..2bfed380 100644 --- a/bsmd.database/DBManager.cs +++ b/bsmd.database/DBManager.cs @@ -629,8 +629,8 @@ namespace bsmd.database this.Delete(messageCore); } - public void Save(DatabaseEntity entity) - { + public void Save(DatabaseEntity entity) + { List truncatedFields = new List(); List fieldNames = new List(); entity.TruncateFields(truncatedFields, fieldNames); @@ -646,24 +646,28 @@ namespace bsmd.database entity.PrepareSave(cmd); int queryResult = this.PerformNonQuery(cmd); this.LogNonQueryResult(cmd.CommandText, queryResult); - this.CreateEntityHistoryEntry(entity); + this.CreateEntityHistoryEntry(entity); + if (entity is PortArea) + DBManager.allPortAreas = null; + + if (this._closeConnectionAfterUse) this.Disconnect(); + } - if (this._closeConnectionAfterUse) this.Disconnect(); - } - - public void Delete(DatabaseEntity entity) - { + public void Delete(DatabaseEntity entity) + { if (!entity.IsNew) { using (SqlCommand cmd = new SqlCommand()) { entity.PrepareDelete(cmd); - int queryResult = this.PerformNonQuery(cmd); - this.LogNonQueryResult(cmd.CommandText, queryResult); - } - } - if (this._closeConnectionAfterUse) this.Disconnect(); - } + int queryResult = this.PerformNonQuery(cmd); + this.LogNonQueryResult(cmd.CommandText, queryResult); + } + } + if (entity is PortArea) + DBManager.allPortAreas = null; + if (this._closeConnectionAfterUse) this.Disconnect(); + } public void DeleteMessageErrors(Message message) { diff --git a/bsmd.database/PortArea.cs b/bsmd.database/PortArea.cs index 4a2d6305..d5673a58 100644 --- a/bsmd.database/PortArea.cs +++ b/bsmd.database/PortArea.cs @@ -1,10 +1,10 @@ // Copyright (c) 2015-2017 schick Informatik // Description: -using System; -using System.Collections.Generic; -using System.Data; -using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; namespace bsmd.database { @@ -38,6 +38,18 @@ namespace bsmd.database [ENI2Validation] public string Name { get; set; } + [MaxLength(255)] + public string Agency { get; set; } + + [MaxLength(255)] + public string Berth { get; set; } + + [MaxLength(255)] + public string Ships { get; set; } + + [MaxLength(255)] + public string Remarks { get; set; } + #endregion #region abstract method implementation @@ -53,6 +65,10 @@ namespace bsmd.database if (!reader.IsDBNull(3)) portArea.Port = reader.GetString(3); if (!reader.IsDBNull(4)) portArea.Code = reader.GetString(4); if (!reader.IsDBNull(5)) portArea.Name = reader.GetString(5); + if (!reader.IsDBNull(6)) portArea.Agency = reader.GetString(6); + if (!reader.IsDBNull(7)) portArea.Berth = reader.GetString(7); + if (!reader.IsDBNull(8)) portArea.Ships = reader.GetString(8); + if (!reader.IsDBNull(9)) portArea.Remarks = reader.GetString(9); result.Add(portArea); } reader.Close(); @@ -61,7 +77,7 @@ namespace bsmd.database public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { - string query = string.Format("SELECT Id, Country, Locode, Port, Code, Name FROM {0} ", this.Tablename); + string query = string.Format("SELECT Id, Country, Locode, Port, Code, Name, Agency, Berth, Ships, Remarks FROM {0} ", this.Tablename); switch (filter) { @@ -74,10 +90,34 @@ namespace bsmd.database cmd.CommandText = query; } - public override void PrepareSave(IDbCommand cmd) - { - throw new NotImplementedException(); - } + public override void PrepareSave(IDbCommand cmd) + { + SqlCommand scmd = cmd as SqlCommand; + + scmd.Parameters.AddWithNullableValue("@COUNTRY", this.Country); + scmd.Parameters.AddWithNullableValue("@LOCODE", this.Locode); + scmd.Parameters.AddWithNullableValue("@PORT", this.Port); + scmd.Parameters.AddWithNullableValue("@CODE", this.Code); + scmd.Parameters.AddWithNullableValue("@NAME", this.Name); + scmd.Parameters.AddWithNullableValue("@AGENCY", this.Agency); + scmd.Parameters.AddWithNullableValue("@BERTH", this.Berth); + scmd.Parameters.AddWithNullableValue("@SHIPS", this.Ships); + scmd.Parameters.AddWithNullableValue("@REMARKS", this.Remarks); + + if (this.IsNew) + { + this.CreateId(); + scmd.Parameters.AddWithValue("@ID", this.Id); + scmd.CommandText = string.Format("INSERT INTO {0} (Id, Country, Locode, Port, Code, Name, Agency, Berth, Ships, Remarks) " + + "VALUES (@ID, @COUNTRY, @LOCODE, @PORT, @CODE, @NAME, @AGENCY, @BERTH, @SHIPS, @REMARKS)", this.Tablename); + } + else + { + scmd.Parameters.AddWithValue("@ID", this.Id); + scmd.CommandText = string.Format("UPDATE {0} SET Country = @COUNTRY, Locode = @LOCODE, Port = @PORT, Code = @CODE, Name = @NAME, " + + "Agency = @AGENCY, Berth = @BERTH, Ships = @SHIPS, Remarks = @REMARKS WHERE Id = @ID", this.Tablename); + } + } #endregion