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 fachFreigeber = null; private List alternativeKonditionsFreigeber = null; private List vereinfachteFreigabeFreigeber = null; private int fachMinimumWertgrenze = 0; private bool tEEinbinden = true; private int tEMinimumWertgrenze = 0; private DateTime gültigBis = DateTime.MaxValue; private List zugeordneteUser = null; private bool firmenFilter = false; private bool istFachBereichOhneFreigabe = false; private bool istFachBereichMitVereinfachterFreigabe = false; private int kennungZusatzTextAufBestellung = 0; public FachBereich() { fachFreigeber = new List(); alternativeKonditionsFreigeber = new List(); vereinfachteFreigabeFreigeber = new List(); zugeordneteUser = new List(); } public FachBereich(List fachFreigeber) { this.fachFreigeber = fachFreigeber; alternativeKonditionsFreigeber = new List(); zugeordneteUser = new List(); } 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 FachFreigeber { get { return fachFreigeber; } set { fachFreigeber = value; } } public int FachMinimumWertgrenze { get { return fachMinimumWertgrenze; } set { fachMinimumWertgrenze = value; } } public List 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 ZugeordneteUser { get { return zugeordneteUser; } set { zugeordneteUser = value; } } public bool IstFachBereichMitVereinfachterFreigabe { get => istFachBereichMitVereinfachterFreigabe; set => istFachBereichMitVereinfachterFreigabe = value; } public List 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); } } }