// Copyright (c) 2023- schick Informatik // Description: Model class for berth entity using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace brecal.model { public class Berth : DbEntity { #region Properties public string? Name { get; set; } public bool? Lock { get; set; } public uint? Owner_Id { get; set; } public uint? Authority_Id { get; set; } public Participant? Owner { get; set; } public Participant? Authority { get; set; } public string? Terminal { get { if (Owner != null) return Owner.Name; else return "n/a"; } } public string? Authority_Text { get { if (Authority != null) return Authority.Name; else return "n/a"; } } public int? Deleted { get; set; } #endregion #region public static methods public static async Task> LoadAll(IDBManager manager) { List loadResultList = await manager.Load(SetLoadQuery, LoadElems); List result = new(); foreach (Berth b in loadResultList.Cast()) result.Add(b); return result; } public static void SetLoadQuery(IDbCommand cmd, params object?[] list) { cmd.CommandText = "SELECT id, name, owner_id, authority_id, `lock`, created, modified, deleted FROM berth"; } public static List LoadElems(IDataReader reader) { List result = new List(); while (reader.Read()) { Berth b = new(); b.Id = (uint)reader.GetInt32(0); if (!reader.IsDBNull(1)) b.Name = reader.GetString(1); if (!reader.IsDBNull(2)) b.Owner_Id = (uint) reader.GetInt32(2); if (!reader.IsDBNull(3)) b.Authority_Id = (uint) reader.GetInt32(3); if (!reader.IsDBNull(4)) b.Lock = reader.GetBoolean(4); if (!reader.IsDBNull(5)) b.Created = reader.GetDateTime(5); if (!reader.IsDBNull(6)) b.Modified = reader.GetDateTime(6); if (!reader.IsDBNull(7)) b.Deleted = reader.GetInt16(7); result.Add(b); } return result; } #endregion #region DbEntity implementation public override void SetCreate(IDbCommand cmd) { cmd.CommandText = "INSERT INTO berth (owner_id, authority_id, name, `lock`) VALUES ( @PID, @AID, @NAME, @LOCK)"; this.SetParameters(cmd); } public override void SetDelete(IDbCommand cmd) { cmd.CommandText = "UPDATE berth 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 berth SET name = @NAME, owner_id = @PID, authority_id = @AID, `lock` = @LOCK WHERE id = @ID"; this.SetParameters(cmd); } #endregion #region private methods private void SetParameters(IDbCommand cmd) { IDbDataParameter id = cmd.CreateParameter(); id.ParameterName = "ID"; id.Value = this.Id; cmd.Parameters.Add(id); IDbDataParameter pid = cmd.CreateParameter(); pid.ParameterName = "PID"; pid.Value = this.Owner_Id; cmd.Parameters.Add(pid); IDbDataParameter aid = cmd.CreateParameter(); aid.ParameterName = "AID"; aid.Value = this.Authority_Id; cmd.Parameters.Add(aid); IDbDataParameter name = cmd.CreateParameter(); name.ParameterName = "NAME"; name.Value = this.Name; cmd.Parameters.Add(name); IDbDataParameter lockparam = cmd.CreateParameter(); lockparam.ParameterName = "LOCK"; lockparam.Value = this.Lock; cmd.Parameters.Add(lockparam); } #endregion } }