git_brcal/src/brecal.model/Role.cs

110 lines
3.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace brecal.model
{
public class Role : DbEntity
{
#region Properties
public string? Name { get; set; }
public string? Description { get; set; }
#endregion
#region public static methods
public static async Task<List<Role>> LoadAll(IDBManager manager)
{
List<DbEntity> loadResultList = await manager.Load(SetLoadQuery, LoadElems);
List<Role> result = new();
foreach (Role r in loadResultList.Cast<Role>())
result.Add(r);
return result;
}
public static void SetLoadQuery(IDbCommand cmd, params object?[] list)
{
cmd.CommandText = "SELECT id, name, description, created, modified FROM role";
}
public static List<DbEntity> LoadElems(IDataReader reader)
{
List<DbEntity> result = new List<DbEntity>();
while (reader.Read())
{
Role r = new();
r.Id = (uint)reader.GetInt32(0);
if (!reader.IsDBNull(1)) r.Name = reader.GetString(1);
if (!reader.IsDBNull(2)) r.Description = reader.GetString(2);
if (!reader.IsDBNull(3)) r.Created = reader.GetDateTime(3);
if (!reader.IsDBNull(4)) r.Modified = reader.GetDateTime(4);
result.Add(r);
}
return result;
}
#endregion
#region overrides
public override void SetUpdate(IDbCommand cmd)
{
cmd.CommandText = "UPDATE role set name = @NAME, description = @DESC WHERE id = @ID";
this.SetParameters(cmd);
}
public override void SetCreate(IDbCommand cmd)
{
cmd.CommandText = "INSERT INTO role (name, description) VALUES ( @NAME, @DESC)";
this.SetParameters(cmd);
}
public override void SetDelete(IDbCommand cmd)
{
cmd.CommandText = "DELETE FROM role WHERE id = @ID";
IDataParameter idParam = cmd.CreateParameter();
idParam.ParameterName = "ID";
idParam.Value = this.Id;
cmd.Parameters.Add(idParam);
}
public override string ToString()
{
return this.Name ?? $"{base.Id} - {this.GetType().Name}";
}
#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 = "DESC";
desc.Value = this.Description;
cmd.Parameters.Add(desc);
IDataParameter idParam = cmd.CreateParameter();
idParam.ParameterName = "ID";
idParam.Value = this.Id;
cmd.Parameters.Add(idParam);
}
#endregion
}
}