// Copyright (c) 2015-.. schick Informatik // Description: DB entity for port areas using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Threading.Tasks; namespace bsmd.database { public class PortArea : DatabaseEntity { public PortArea() { this.tablename = "[dbo].[PortArea]"; } #region Properties [MaxLength(10)] [ENI2Validation] public string Country { get; set; } [MaxLength(5)] [ENI2Validation] public string Locode { get; set; } [MaxLength(255)] [ENI2Validation] public string Port { get; set; } [MaxLength(10)] [ENI2Validation] public string Code { get; set; } [MaxLength(255)] [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 public static methods public static bool PortAreaExists(string locode, string code) { bool result = false; if(DBManagerAsync.GetPortAreaDict().TryGetValue(code, out PortArea portArea)) { if (portArea.Locode == locode) { result = true; } } return result; } public static async Task> getPortAreasForLocode(string locode) { Dictionary result = new Dictionary(); List portAreas = await DBManagerAsync.LoadPortAreasAsync(); foreach (PortArea portArea in portAreas) { if (portArea.Locode == locode) { result[portArea.Code] = portArea.Name; } } return result; } #endregion #region abstract method implementation public override List LoadList(IDataReader reader) { List result = new List(); while (reader.Read()) { PortArea portArea = new PortArea(); portArea.id = reader.GetGuid(0); if (!reader.IsDBNull(1)) portArea.Country = reader.GetString(1); if (!reader.IsDBNull(2)) portArea.Locode = reader.GetString(2); 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(); return result; } public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) { string query = string.Format("SELECT Id, Country, Locode, Port, Code, Name, Agency, Berth, Ships, Remarks FROM {0} ", this.Tablename); switch (filter) { case Message.LoadFilter.ALL: default: break; } cmd.CommandText = query; } 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 #region override public override string ToString() { return this.Name; } #endregion } }