Entwicklung_BLAZOR/InterneDLLs/LambertzPortalODAL/FachBereich.cs
2025-08-23 19:30:21 +02:00

278 lines
11 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using De.Lambertz.Tools;
namespace De.Lambertz.ODAL
{
public class FachBereich : Bereich
{
private int firma = 0;
private List<int> fachFreigeber = null;
private List<int> alternativeKonditionsFreigeber = null;
private List<int> vereinfachteFreigabeFreigeber = null;
private int fachMinimumWertgrenze = 0;
private bool tEEinbinden = true;
private int tEMinimumWertgrenze = 0;
private DateTime gültigBis = DateTime.MaxValue;
private List<int> zugeordneteUser = null;
private bool firmenFilter = false;
private bool istFachBereichOhneFreigabe = false;
private bool istFachBereichMitVereinfachterFreigabe = false;
private int kennungZusatzTextAufBestellung = 0;
public FachBereich()
{
fachFreigeber = new List<int>();
alternativeKonditionsFreigeber = new List<int>();
vereinfachteFreigabeFreigeber = new List<int>();
zugeordneteUser = new List<int>();
}
public FachBereich(List<int> fachFreigeber)
{
this.fachFreigeber = fachFreigeber;
alternativeKonditionsFreigeber = new List<int>();
zugeordneteUser = new List<int>();
}
public void WerteÜbernehmen(FachBereich fb)
{
firma = fb.Firma;
Bezeichnung = fb.Bezeichnung;
fachFreigeber = fb.FachFreigeber;
fachMinimumWertgrenze = fb.FachMinimumWertgrenze;
tEEinbinden = fb.TEEinbinden;
tEMinimumWertgrenze = fb.TEMinimumWertgrenze;
gültigBis = fb.GültigBis;
zugeordneteUser = fb.ZugeordneteUser;
}
public bool IstFachBereichOhneFreigabe
{
get { return istFachBereichOhneFreigabe; }
set { istFachBereichOhneFreigabe = value; }
}
public int Firma
{
get { return firma; }
set { firma = value; }
}
public bool FirmenFilter
{
get { return firmenFilter; }
set { firmenFilter = value; }
}
public String GetBezeichnungOhneFirma()
{
String result = "";
if (!String.IsNullOrEmpty(this.Bezeichnung))
{
if (this.Bezeichnung.EndsWith(")") && this.Bezeichnung.Contains("("))
{
result = this.Bezeichnung.Substring(0, this.Bezeichnung.IndexOf("(")).Trim();
}
else
{
result = this.Bezeichnung;
}
}
return result;
}
public List<int> FachFreigeber
{
get { return fachFreigeber; }
set { fachFreigeber = value; }
}
public int FachMinimumWertgrenze
{
get { return fachMinimumWertgrenze; }
set { fachMinimumWertgrenze = value; }
}
public List<int> AlternativeKonditionsFreigeber
{
get { return alternativeKonditionsFreigeber; }
set { alternativeKonditionsFreigeber = value; }
}
public bool TEEinbinden
{
get { return tEEinbinden; }
set { tEEinbinden = value; }
}
public int TEMinimumWertgrenze
{
get { return tEMinimumWertgrenze; }
set { tEMinimumWertgrenze = value; }
}
public DateTime GültigBis
{
get { return gültigBis; }
set { gültigBis = value; }
}
public List<int> ZugeordneteUser
{
get { return zugeordneteUser; }
set { zugeordneteUser = value; }
}
public bool IstFachBereichMitVereinfachterFreigabe { get => istFachBereichMitVereinfachterFreigabe; set => istFachBereichMitVereinfachterFreigabe = value; }
public List<int> VereinfachteFreigabeFreigeber { get => vereinfachteFreigabeFreigeber; set => vereinfachteFreigabeFreigeber = value; }
public int KennungZusatzTextAufBestellung { get => kennungZusatzTextAufBestellung; set => kennungZusatzTextAufBestellung = value; }
public void Save()
{
this.Save(false);
}
public void Save(bool updateWennVorhanden)
{
using (SqlConnection con = new SqlConnection(DBTools.ConnectionStringODAL()))
{
con.Open();
//prüfen ob Neuanlage oder Update
bool update = true;
String sql;
if (this.ID == 0)
{
update = false;
sql = "select BEID from ODAL.FACHBEREICHE where BEZEICHNUNG = @p1";
SqlCommand cmdTestRead = new SqlCommand(sql, con);
cmdTestRead.Parameters.AddWithValue("@p1", this.Bezeichnung);
using (SqlDataReader testReader = cmdTestRead.ExecuteReader())
{
if (testReader.Read())
{
if (updateWennVorhanden)
{
this.ID = DBTools.DBGetInt(testReader, 0);
update = true;
}
else
{
throw new ODALException("Ein Fachbereich mit dieser Bezeichnung existiert bereits.");
}
}
}
}
if (update)
{
sql = "update ODAl.FACHBEREICHE set FIRMA = @p7, BEZEICHNUNG = @p2, FACHMINWERT = @p3, TE = @p4, TEMINWERT = @p5, GÜLTIGBIS = @p6, FIFI = @p8, OHNEFREIGABE = @p9, [VEREINFACHTEFG] = @p10, [TEXTAUFBEST] = @p11 where BEID = @p1";
}
else
{
this.ID = IDFactory.GetInstance().GetID(IDFactory.KEY_FACHBEREICH);
sql = "insert into ODAL.FACHBEREICHE (BEID, FIRMA, BEZEICHNUNG, FACHMINWERT, TE, TEMINWERT, GÜLTIGBIS, FIFI, OHNEFREIGABE, [VEREINFACHTEFG], TEXTAUFBEST) values (@p1, @p7, @p2, @p3, @p4, @p5, @p6, @p8, @p9, @p10, @p11)";
}
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.Parameters.AddWithValue("@p2", this.Bezeichnung);
cmd.Parameters.AddWithValue("@p3", this.fachMinimumWertgrenze);
cmd.Parameters.AddWithValue("@p4", this.tEEinbinden);
cmd.Parameters.AddWithValue("@p5", this.tEMinimumWertgrenze);
if (this.gültigBis == DateTime.MaxValue)
{
cmd.Parameters.AddWithValue("@p6", DBNull.Value);
}
else
{
cmd.Parameters.AddWithValue("@p6", this.gültigBis);
}
cmd.Parameters.AddWithValue("@p7", this.firma);
cmd.Parameters.AddWithValue("@p8", this.firmenFilter);
cmd.Parameters.AddWithValue("@p9", this.istFachBereichOhneFreigabe);
cmd.Parameters.AddWithValue("@p10", this.istFachBereichMitVereinfachterFreigabe);
cmd.Parameters.AddWithValue("@p11", this.kennungZusatzTextAufBestellung);
//
cmd.ExecuteNonQuery();
//
//Zugeordnete User Speichern
if (update)
{
sql = "delete from ODAL.ANWENDER_X_FACHBEREICH where FBID = @p1";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.ExecuteNonQuery();
}
foreach (int userNr in this.zugeordneteUser)
{
sql = "insert into ODAL.ANWENDER_X_FACHBEREICH (USERNR, FBID) values (@p1, @p2)";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", userNr);
cmd.Parameters.AddWithValue("@p2", this.ID);
cmd.ExecuteNonQuery();
}
//Freigeber Speichern
if (update)
{
sql = "delete from ODAl.FACHBEREICH_FREIGEBER where FBID = @p1";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.ExecuteNonQuery();
}
foreach (int userNr in this.FachFreigeber)
{
sql = "insert into ODAl.FACHBEREICH_FREIGEBER (FBID, USERID) values (@p1, @p2)";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.Parameters.AddWithValue("@p2", userNr);
cmd.ExecuteNonQuery();
}
//Alternative Konditionsprüfer Speichern
if (update)
{
sql = "delete from ODAl.FACHBEREICH_KONDI where FBID = @p1";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.ExecuteNonQuery();
}
foreach (int userNr in this.AlternativeKonditionsFreigeber)
{
sql = "insert into ODAl.FACHBEREICH_KONDI (FBID, USERID) values (@p1, @p2)";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.Parameters.AddWithValue("@p2", userNr);
cmd.ExecuteNonQuery();
}
//DirekteFreigeber
if (update)
{
sql = "delete from ODAl.FACHBEREICH_DIREKT_FREI where FBID = @p1";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.ExecuteNonQuery();
}
foreach (int userNr in this.VereinfachteFreigabeFreigeber)
{
sql = "insert into ODAl.FACHBEREICH_DIREKT_FREI (FBID, USERID) values (@p1, @p2)";
cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@p1", this.ID);
cmd.Parameters.AddWithValue("@p2", userNr);
cmd.ExecuteNonQuery();
}
}
}
public override string ToString()
{
return this.GetÜbersetzteBezeichnung(ÜbersetzerSingelton.ART_FACHBEREICH);
}
}
}