using Npgsql; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace DatenDB { public class AuftragArtikel { private static string TABLE = "kundenverwaltung.auftrag_artikel"; private static string COLUMNS = "auftrag_artikel_id, auftrag_id, artikel_id, artikel_name, anzahl, erledigt"; public Kunde kunde; public AuftragArtikel() { } public static List GetList(int? auftragID) { DatenbankConnection.GetConnection().Open(); List resultList = new List(); NpgsqlCommand command = new NpgsqlCommand(); command.Connection = DatenbankConnection.GetConnection(); command.CommandText = $"select {COLUMNS} from {TABLE} where auftrag_id = {auftragID}"; NpgsqlDataReader reader = command.ExecuteReader(); while (reader.Read()) resultList.Add(new AuftragArtikel(reader, 1)); reader.Close(); DatenbankConnection.GetConnection().Close(); return resultList; } public static AuftragArtikel GetArtikel(int aufartid) { DatenbankConnection.GetConnection().Open(); AuftragArtikel result = new AuftragArtikel(); NpgsqlCommand command = new NpgsqlCommand(); command.Connection = DatenbankConnection.GetConnection(); command.CommandText = $"SELECT * from {TABLE} where auftrag_artikel_id = {aufartid}"; NpgsqlDataReader reader = command.ExecuteReader(); while (reader.Read()) result = new AuftragArtikel(reader, 1); reader.Close(); DatenbankConnection.GetConnection().Close(); return result; } public int Save() { DatenbankConnection.GetConnection().Open(); NpgsqlCommand command = new NpgsqlCommand(); command.Connection = DatenbankConnection.GetConnection(); if(this.AuftragArtikelID.HasValue & this.AuftragArtikelID != 0) { command.CommandText = $"update {TABLE} set auftrag_id = :p1, artikel_id = :p2, artikel_name = :p3, anzahl = :p4, erledigt = :p5 WHERE auftrag_artikel_id = :p0"; } else { command.CommandText = "select nextval('kundenverwaltung.auftrag_artikel_seq')"; this.AuftragArtikelID = (int)(long)command.ExecuteScalar(); command.CommandText = $"insert into {TABLE} ({COLUMNS}) values (:p0, :p1, :p2, :p3, :p4, :p5)"; } command.Parameters.AddWithValue("p0", this.AuftragArtikelID.Value); command.Parameters.AddWithValue("p1", this.AuftragID); command.Parameters.AddWithValue("p2", this.ArtikelID.Value); command.Parameters.AddWithValue("p3", string.IsNullOrWhiteSpace(this.ArtikelName) ? (object)DBNull.Value : this.ArtikelName); command.Parameters.AddWithValue("p4", this.Anzahl); command.Parameters.AddWithValue("p5", this.Erledigt); int result = command.ExecuteNonQuery(); DatenbankConnection.GetConnection().Close(); return result; } public AuftragArtikel(NpgsqlDataReader reader, int i) { if (i == 1) { this.AuftragArtikelID = reader.GetInt32(0); this.AuftragID = reader.GetInt32(1); this.ArtikelID = reader.GetInt32(2); this.ArtikelName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3); this.Anzahl = reader.GetInt32(4); this.Erledigt = reader.GetBoolean(5); } if (i == 2) { kunde = new Kunde(); this.ArtikelName = reader.GetString(0); this.Anzahl = reader.GetInt32(1); this.kunde.Suchtext = reader.GetString(2); } } public int? AuftragArtikelID { get; set; } public int? AuftragID { get; set; } public int? ArtikelID { get; set; } public string ArtikelName { get; set; } public int Anzahl { get; set; } public bool Erledigt { get; set; } } }