278 lines
11 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|