Files
dcnsanplanung/dcnsanplanung.DAL/Services/PostgresqlData/SchadenDataService.cs

93 lines
3.4 KiB
C#

using dcnsanplanung.shared.Model;
using Npgsql;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace dcnsanplanung.DAL.Services.PostgresqlData
{
public class SchadenDataService : PostgresqlDataService
{
public SchadenDataService(string connectionstring) : base(connectionstring, "schaden")
{
}
public async Task<IEnumerable<Schaden>> GetAllByHaltung(Haltung haltung)
{
return await GetAllByHaltung(haltung.Guid.ToString());
}
public async Task<IEnumerable<Schaden>> GetAllByHaltung(string haltungs_guid)
{
List<Schaden> result = new List<Schaden>();
string command = "SELECT * FROM " + tableName + " WHERE ref_haltung_guid = @1;";
using (var cmd = new NpgsqlCommand(command, conn))
{
cmd.Parameters.AddWithValue("1", haltungs_guid);
using (var reader = await cmd.ExecuteReaderAsync())
{
while (reader.Read())
{
Schaden adding = parseSchaden(reader);
result.Add(adding);
}
}
}
return result;
}
private Schaden parseSchaden(NpgsqlDataReader reader)
{
return new Schaden()
{
ID = reader.GetInt32(0),
Guid = Guid.Parse(reader.GetString(1)),
Ref_Haltung_Guid = Guid.Parse(reader.GetString(2)),
Entfernung = reader.GetDecimal(3),
Hauptcode = reader.GetString(4),
CH1 = reader.GetString(5),
CH2 = reader.GetString(6),
Q1 = reader.GetString(7),
Q2 = reader.GetString(8),
KD = reader.GetDataTypeOID(9),
KB = reader.GetDataTypeOID(10),
KS = reader.GetDataTypeOID(11),
};
}
public async Task<Schaden> Create(Schaden entity)
{
string command = "INSERT INTO " + tableName + " (guid, ref_haltung_guid, entfernung, hauptcode, ch1,ch2,q1,q2) VALUES " +
"(@1,@2,@3,@4,@5,@6,@7,@8) RETURNING id";
using(var cmd = new NpgsqlCommand(command,conn))
{
cmd.Parameters.AddWithValue("1", entity.Guid.ToString());
cmd.Parameters.AddWithValue("2", entity.Ref_Haltung_Guid.ToString());
cmd.Parameters.AddWithValue("3", entity.Entfernung);
cmd.Parameters.AddWithValue("4", entity.Hauptcode);
cmd.Parameters.AddWithValue("5", entity.CH1);
cmd.Parameters.AddWithValue("6", entity.CH2);
cmd.Parameters.AddWithValue("7", entity.Q1);
cmd.Parameters.AddWithValue("8", entity.Q2);
//cmd.Parameters.AddWithValue("5", NpgsqlTypes.NpgsqlDbType.Oid, entity.Schadensklasse);
using var reader = await cmd.ExecuteReaderAsync();
reader.Read();
entity.ID = reader.GetInt32(0);
}
return entity;
}
public async Task<bool> InsertSchadenBulk(List<Schaden> schaden)
{
foreach(var item in schaden)
{
await Create(item);
}
return true;
}
}
}