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> GetAllByHaltung(Haltung haltung) { return await GetAllByHaltung(haltung.Guid.ToString()); } public async Task> GetAllByHaltung(string haltungs_guid) { List result = new List(); 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 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 InsertSchadenBulk(List schaden) { foreach(var item in schaden) { await Create(item); } return true; } } }