using dcnsanplanung.shared.Model; using Npgsql; using Schnittstelle.Import.XML.v2013.Model; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace dcnsanplanung.DAL.Services.PostgresqlData { public class HaltungDataService : PostgresqlDataService { SchadenDataService schadenDataService; public HaltungDataService(string connectionstring) : base(connectionstring, "haltung") { schadenDataService = new SchadenDataService(connectionstring); } public async Task Create(Haltung entity) { string command = "INSERT INTO " + tableName + " (guid, ref_projekt_guid, objektbezeichnung, bewertungklasse) VALUES " + "(@1,@2,@3,@4) RETURNING id"; using (var cmd = new NpgsqlCommand(command, conn)) { cmd.Parameters.AddWithValue("1", entity.Guid.ToString()); cmd.Parameters.AddWithValue("2", entity.Ref_Projekt_Guid.ToString()); cmd.Parameters.AddWithValue("3", entity.Objektbezeichnung); cmd.Parameters.AddWithValue("4", NpgsqlTypes.NpgsqlDbType.Oid, entity.Bewertungklasse); using var reader = await cmd.ExecuteReaderAsync(); reader.Read(); entity.ID = reader.GetInt32(0); } await schadenDataService.InsertSchadenBulk(entity.Kodierungen); return entity; } public async Task> GetAllByProjekt(int projektID) { List result = new List(); //ISchachtDataService schachtDataService = new SchachtDataService(connString); //IEnumerable schaechte = await schachtDataService.GetAllByProjekt(projektID); string command = "SELECT * FROM " + tableName + ";";//" WHERE ref_projekt_id = @1"; using (var cmd = new NpgsqlCommand(command, conn)) { //cmd.Parameters.AddWithValue("1", projektID); using (var reader = await cmd.ExecuteReaderAsync()) { while (reader.Read()) { Haltung adding = parseHaltung(reader); result.Add(adding); } } } return result; } private Haltung parseHaltung(NpgsqlDataReader reader) { Haltung result = new Haltung() { ID = reader.GetInt32(0), Guid = Guid.Parse(reader.GetString(1)), Ref_Projekt_Guid = Guid.Parse(reader.GetString(2)), Objektbezeichnung = reader.GetString(3), Bewertungklasse = Convert.ToUInt32(reader.GetValue(4)), }; return result; } public async Task InsertHaltungBulk(List haltungen) { foreach (var item in haltungen) { await Create(item); } return true; } } }