93 lines
3.4 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|