171 lines
5.6 KiB
C#
171 lines
5.6 KiB
C#
// 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<Dictionary<string, string>> getPortAreasForLocode(string locode)
|
|
{
|
|
Dictionary<string, string> result = new Dictionary<string, string>();
|
|
|
|
List<PortArea> 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<DatabaseEntity> LoadList(IDataReader reader)
|
|
{
|
|
List<DatabaseEntity> result = new List<DatabaseEntity>();
|
|
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
|
|
|
|
|
|
}
|
|
}
|