using Npgsql; using SewerStammGen.Shared.Contracts; using SewerStammGen.Shared.Domain; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace SewerStammGen.DAL.Services.PostgresqlData { public class AuftraggeberDataService : PostgresqlDataService, IAuftraggeberDataService { public AuftraggeberDataService(string connectionstring) : base(connectionstring,"Auftraggebers") { } public async Task Create(Auftraggeber entity) { string command = "INSERT INTO "+tableName+" (\"Name\", \"Strasse\", \"Ort\", \"Postleitzahl\", \"Ansprechpartner\", \"Telefonnummer\") " + "VALUES(@1,@2,@3,@4,@5,@6) RETURNING \"Id\""; await using (var cmd = new NpgsqlCommand(command, conn)) { cmd.Parameters.AddWithValue("1", entity.Name); cmd.Parameters.AddWithValue("2", entity.Strasse); cmd.Parameters.AddWithValue("3", entity.Ort); cmd.Parameters.AddWithValue("4", entity.Postleitzahl); cmd.Parameters.AddWithValue("5", entity.Ansprechpartner); cmd.Parameters.AddWithValue("6", entity.Telefonnummer); using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); entity.Id = reader.GetInt32(0); } return entity; } public async Task Get(int id) { Auftraggeber result = new Auftraggeber(); using (var cmd = new NpgsqlCommand($"SELECT * FROM "+tableName+" WHERE \"Id\" = @1", conn)) { cmd.Parameters.AddWithValue("1", id); using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); result = parseAuftraggeber(reader); } return result; } private Auftraggeber parseAuftraggeber(NpgsqlDataReader reader) { return new Auftraggeber() { Id = reader.GetInt32(0), Name = reader.IsDBNull(1) ? "" : reader.GetString(1), Strasse = reader.IsDBNull(2) ? "" : reader.GetString(2), Ort = reader.IsDBNull(3) ? "" : reader.GetString(3), Postleitzahl = reader.IsDBNull(4) ? "" : reader.GetString(4), Ansprechpartner = reader.IsDBNull(5) ? "" : reader.GetString(5), Telefonnummer = reader.IsDBNull(6) ? "" : reader.GetString(6) }; } public async Task> GetAll() { List result = new List(); using (var cmd = new NpgsqlCommand($"SELECT * FROM "+tableName, conn)) using (var reader = await cmd.ExecuteReaderAsync()) { while (reader.Read()) { result.Add(parseAuftraggeber(reader)); } } return result; } public Task Update(Auftraggeber entity) { throw new NotImplementedException(); } } }