Programm_Wirl/AA-Klassen/AuftragArtikel.cs

126 lines
4.6 KiB
C#

using BrightIdeasSoftware;
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, gesamt";
private static string ACOLUMNS = "a.auftrag_artikel_id, a.auftrag_id, a.artikel_id, a.artikel_name, a.anzahl, a.erledigt, a.gesamt";
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 {ACOLUMNS} from {TABLE} a 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 {COLUMNS} 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, gesamt = :p6 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, :p6)";
}
command.Parameters.AddWithValue("p0", this.AuftragArtikelID.Value);
command.Parameters.AddWithValue("p1", this.AuftragID);
command.Parameters.AddWithValue("p2", this.ArtikelID.HasValue ? this.ArtikelID.Value : (object)DBNull.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);
command.Parameters.AddWithValue("p6", this.Gesamt);
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.IsDBNull(2) ? (int?)null : reader.GetInt32(2);
this.ArtikelName = reader.IsDBNull(3) ? string.Empty : reader.GetString(3);
this.Anzahl = reader.GetInt32(4);
this.Erledigt = reader.GetBoolean(5);
this.Gesamt = reader.IsDBNull(6) ? 0 : reader.GetInt32(6);
}
if (i == 2)
{
kunde = new Kunde();
this.ArtikelName = reader.GetString(0);
this.Anzahl = reader.GetInt32(1);
this.kunde.Suchtext = reader.GetString(2);
}
}
[OLVIgnore]
public int? AuftragArtikelID { get; set; }
[OLVIgnore]
public int? AuftragID { get; set; }
[OLVIgnore]
public int? ArtikelID { get; set; }
[OLVColumn(DisplayIndex = 1, IsEditable = false)]
public string ArtikelName { get; set; }
[OLVColumn("Anzahl", DisplayIndex = 3, TextAlign = HorizontalAlignment.Center)]
public int Anzahl { get; set; }
[OLVColumn("Erledigt", DisplayIndex = 0, CheckBoxes = true)]
public bool Erledigt { get; set; }
[OLVColumn("Offen", DisplayIndex = 2, TextAlign = HorizontalAlignment.Center, IsEditable = false)]
public int Gesamt { get; set; }
}
}