// Copyright (c) 2023- schick Informatik // Description: Port entity using System.Data; namespace brecal.model { public class Port : DbEntity { #region Properties public string? Name { get; set; } public string? Locode { get; set; } public bool IsDeleted { get; set; } = false; #endregion #region overrides public override void SetCreate(IDbCommand cmd) { cmd.CommandText = "INSERT INTO port (name, locode) VALUES ( @NAME, @LOCODE)"; this.SetParameters(cmd); } public override void SetDelete(IDbCommand cmd) { cmd.CommandText = "UPDATE port SET deleted = 1 WHERE id = @ID"; IDataParameter idParam = cmd.CreateParameter(); idParam.ParameterName = "ID"; idParam.Value = this.Id; cmd.Parameters.Add(idParam); } public override void SetUpdate(IDbCommand cmd) { cmd.CommandText = "UPDATE port set name = @NAME, locode = @LOCODE WHERE id = @ID"; this.SetParameters(cmd); } #endregion #region public static methods public static async Task> LoadAll(IDBManager manager) { List loadResultList = await manager.Load(SetLoadQuery, LoadElems); List result = new(); foreach (Port p in loadResultList.Cast()) result.Add(p); return result; } public static void SetLoadQuery(IDbCommand cmd, params object?[] list) { cmd.CommandText = "SELECT id, name, locode, created, modified, deleted FROM port WHERE deleted = 0"; } public static List LoadElems(IDataReader reader) { List result = new(); while (reader.Read()) { Port p = new(); p.Id = (uint)reader.GetInt32(0); if (!reader.IsDBNull(1)) p.Name = reader.GetString(1); if (!reader.IsDBNull(2)) p.Locode = reader.GetString(2); if (!reader.IsDBNull(3)) p.Created = reader.GetDateTime(3); if (!reader.IsDBNull(4)) p.Modified = reader.GetDateTime(4); if (!reader.IsDBNull(5)) p.IsDeleted = reader.GetBoolean(5); result.Add(p); } return result; } #endregion #region private methods private void SetParameters(IDbCommand cmd) { IDbDataParameter name = cmd.CreateParameter(); name.ParameterName = "NAME"; name.Value = this.Name; cmd.Parameters.Add(name); IDbDataParameter desc = cmd.CreateParameter(); desc.ParameterName = "LOCODE"; desc.Value = this.Locode; cmd.Parameters.Add(desc); IDataParameter idParam = cmd.CreateParameter(); idParam.ParameterName = "ID"; idParam.Value = this.Id; cmd.Parameters.Add(idParam); } #endregion #region overrides public override string ToString() { return $"{Name} ({Locode})"; } #endregion } }