112 lines
3.8 KiB
C#
112 lines
3.8 KiB
C#
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<AuftragArtikel> GetList(int? auftragID)
|
|
{
|
|
DatenbankConnection.GetConnection().Open();
|
|
List<AuftragArtikel> resultList = new List<AuftragArtikel>();
|
|
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; }
|
|
|
|
|
|
}
|
|
}
|