public FrmUserlist()
        {
            InitializeComponent();
            XMLInitializer initxml = new XMLInitializer();
            if(initxml.XMLStructureInitialized("users"))
            {

                XmlReader xmlFile = XmlReader.Create(xmlPath, new XmlReaderSettings());
                try
                {
                    ds.ReadXml(xmlFile);
                    xmlFile.Close();
                    lvUsers.ItemsSource = ds.Tables["user"].DefaultView;
                }
                catch(XmlException ex)
                {
                    MessageBox.Show("Die Benutzerdatenbank ist korrupt. Es wird nun eine neue Benutzerdatenbank angelegt." + Environment.NewLine + Environment.NewLine + "Die korrupte Benutzerdatenbank wird gesichert und der Administrator per eMail kontaktiert. Bitte einen Moment Geduld.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);

                    File.Move(xmlPath, xmlPath + ".corrupt");
                    File.Delete(xmlPath);
                    initxml.CreateXMLFileStructure("users");

                    ExceptionReporter ExReport = new ExceptionReporter(ex);
                    ExReport.ReportExceptionToAdmin(xmlPath + ".corrupt");
                }
            }
        }
Пример #2
0
        public FrmChangeDealer(string id)
        {
            InitializeComponent();

            _id = id;

            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();
                    var readRow = new SqlCommand("SELECT Vertrieb, eMail, Kundennummer FROM Dealers WHERE VertriebID = @paramPK", sqlConn);
                    readRow.Parameters.Add(new SqlParameter("@paramPK", id));
                    using(SqlDataReader dr = readRow.ExecuteReader())
                    {
                        while(dr.Read())
                        {
                            TbDealer.Text = dr["Vertrieb"].ToString();
                            TbMail.Text = dr["eMail"].ToString();
                            TbCustomerId.Text = dr["Kundennummer"].ToString();
                        }
                    }
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #3
0
        private static void AddDealerToDataBase(string dealerName, string mail, string cutomerID)
        {
            var connStringBuilder = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    IntegratedSecurity = true,
                    InitialCatalog = "AMAM"
                };

            using(var sqlConn = new SqlConnection(connStringBuilder.ToString()))
            {
                try
                {
                    sqlConn.Open();
                    var newRowCommand = new SqlCommand("INSERT INTO Dealers (Vertrieb, eMail, Kundennummer) "+
                                                       "VALUES(@paramVertrieb, @paramMail, @paramCustomerID)", sqlConn);

                    newRowCommand.Parameters.Add(new SqlParameter("@paramVertrieb", dealerName));
                    newRowCommand.Parameters.Add(new SqlParameter("@paramMail", mail));
                    newRowCommand.Parameters.Add(new SqlParameter("@paramCustomerID", cutomerID));

                    newRowCommand.ExecuteNonQuery();
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == System.Data.ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #4
0
        public FrmProductList()
        {
            InitializeComponent();

            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();
                    if(Sqlhelper.TableExists(sqlConn, "ProductNames") && Sqlhelper.TableExists(sqlConn, "ProductData") && Sqlhelper.TableExists(sqlConn, "Dealers"))
                    {
                        sqlConn.Close();
                        RefreshProductList();
                    }
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #5
0
        private void RefreshDataBase()
        {
            _dt.Clear();
            var connStringBuilder = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    IntegratedSecurity = true,
                    InitialCatalog = "AMAM"
                };

            using(var sqlConn = new SqlConnection(connStringBuilder.ToString()))
            {
                try
                {
                    sqlConn.Open();
                    if(Sqlhelper.TableExists(sqlConn, "Dealers"))
                    {
                        var dataAdapter = new SqlDataAdapter("SELECT * FROM Dealers", sqlConn);
                        dataAdapter.Fill(_dt);
                    }
                    else
                    {
                        var newTable = new SqlCommand("CREATE TABLE Dealers (VertriebID int IDENTITY(1,1 )CONSTRAINT pkVertriebID PRIMARY KEY, "+
                                                        "Vertrieb nvarchar(255) NOT NULL, "+
                                                        "eMail nvarchar(255) NOT NULL, " +
                                                        "Kundennummer nvarchar(255) NOT NULL)", sqlConn);
                        newTable.ExecuteNonQuery();

                        var dataAdapter = new SqlDataAdapter("SELECT * FROM Dealers;", sqlConn);
                        dataAdapter.Fill(_dt);
                    }
                    _dt.PrimaryKey = new[] { _dt.Columns["pkVertriebID"] };
                    DgDealers.DataContext = _dt;
                    DgDealers.SelectedValuePath = "VertriebID";
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #6
0
        private void SearchForDataBase()
        {
            var connStringBuilder = new SqlConnectionStringBuilder {DataSource = "localhost", IntegratedSecurity = true};

            using(var sqlConn = new SqlConnection(connStringBuilder.ToString()))
            {
                try
                {
                    sqlConn.Open();
                    DataTable tblDatabases = sqlConn.GetSchema("Databases");
                    sqlConn.Close();

                    tblDatabases.PrimaryKey = new[] {tblDatabases.Columns["database_name"]};
                    if(tblDatabases.Rows.Contains("AMAM"))
                    {
                        BtnAddDealer.IsEnabled = true;
                    }
                    else
                    {
                        try
                        {
                            sqlConn.Open();
                            var newDataBaseCommand = new SqlCommand("CREATE DATABASE AMAM", sqlConn);
                            newDataBaseCommand.ExecuteNonQuery();
                            tblDatabases = sqlConn.GetSchema("Databases");

                            tblDatabases.PrimaryKey = new[] { tblDatabases.Columns["database_name"] };
                            if(tblDatabases.Rows.Contains("AMAM"))
                            {
                                BtnAddDealer.IsEnabled = true;
                            }
                        }
                        catch(SqlException ex)
                        {
                            var reporter = new ExceptionReporter(ex);
                            reporter.ReportExceptionToAdmin();
                            MessageBox.Show("Auf den SQL-Server konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                        }
                        finally
                        {
                            if(sqlConn.State == ConnectionState.Open)
                            {
                                sqlConn.Close();
                            }
                        }
                    }
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf den SQL-Server konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
            }
        }
Пример #7
0
        private void RemoveDealer(object sender, RoutedEventArgs e)
        {
            MessageBoxResult executeRemove = MessageBox.Show("Sind Sie sicher, dass der Vertrieb " + DgDealers.SelectedValue + " gelöscht werden soll?", "Vertrieb löschen", MessageBoxButton.YesNo, MessageBoxImage.Question);
            if(executeRemove == MessageBoxResult.Yes)
            {
                var connStringBuilder = new SqlConnectionStringBuilder
                    {
                        DataSource = "localhost",
                        IntegratedSecurity = true,
                        InitialCatalog = "AMAM"
                    };

                using(var sqlConn = new SqlConnection(connStringBuilder.ToString()))
                {
                    try
                    {
                        sqlConn.Open();

                        var removeDealerCommand = new SqlCommand("DELETE FROM Dealers WHERE VertriebID = @paramPK", sqlConn);
                        removeDealerCommand.Parameters.Add(new SqlParameter("@paramPK", DgDealers.SelectedValue));

                        removeDealerCommand.ExecuteNonQuery();
                        RefreshDataBase();
                    }
                    catch(SqlException ex)
                    {
                        var reporter = new ExceptionReporter(ex);
                        reporter.ReportExceptionToAdmin();
                        MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    finally
                    {
                        if(sqlConn.State == ConnectionState.Open)
                        {
                            sqlConn.Close();
                        }
                    }
                }
            }
        }
Пример #8
0
        private void RefreshProductList()
        {
            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();

                    const string command = "SELECT ProductNames.Produktnummer, ProductNames.Produktname, Units.Einheit FROM ProductNames " +
                                           "INNER JOIN ProductData ON ProductData.Produktnummer = ProductNames.Produktnummer " +
                                           "INNER JOIN Units ON Units.EinheitID = ProductData.EinheitID " +
                                           "GROUP BY ProductNames.Produktnummer, ProductNames.Produktname, Units.Einheit";

                    var dataAdapter = new SqlDataAdapter(command, sqlConn);
                    _productsTable.Clear();
                    dataAdapter.Fill(_productsTable);

                    DgProducts.ItemsSource = _productsTable.DefaultView;
                    DgProducts.SelectedValuePath = "Produktnummer";

                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #9
0
        private void SelectedProductChanged(object sender, SelectionChangedEventArgs e)
        {
            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {

                    sqlConn.Open();

                    const string command = "SELECT Dealers.Vertrieb, ProductData.Artikelnummer, ProductData.Preis FROM ProductData " +
                                           "INNER JOIN Dealers ON ProductData.VertriebID = Dealers.VertriebID " +
                                           "INNER JOIN Units ON Units.Einheit = @paramEinheit " +
                                           "WHERE ProductData.Produktnummer = @paramProduktnummer " +
                                           "AND ProductData.EinheitID = Units.EinheitID";

                    var dataAdapter = new SqlDataAdapter {SelectCommand = new SqlCommand(command, sqlConn)};

                    if(DgProducts.SelectedItem != null)
                    {
                        var currentRowView = (DataRowView)DgProducts.SelectedItem;
                        DataRow row = currentRowView.Row;

                        dataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@paramProduktnummer", row["Produktnummer"].ToString()));
                        dataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@paramEinheit", row["Einheit"].ToString()));
                        var productDataTable = new DataTable();
                        dataAdapter.Fill(productDataTable);

                        DgProductData.DataContext = productDataTable.DefaultView;
                    }
                    else DgProductData.DataContext = null;

                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #10
0
        private void RemovePoduct(object sender, RoutedEventArgs e)
        {
            var currentRow = (DataRowView)DgProducts.SelectedItem;
            DataRow selectedRow = currentRow.Row;
            MessageBoxResult removeQuestion = MessageBox.Show("Sind Sie sicher, dass das Produkt " + selectedRow["Produktname"] + " gelöscht werden soll?", "Produkt löschen", MessageBoxButton.YesNo, MessageBoxImage.Question);
            if (removeQuestion != MessageBoxResult.Yes) return;

            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using (var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();

                    const string killFromProductNamesString =
                        "DELETE FROM ProductNames WHERE Produktnummer = @paramProduktNummer";
                    var killFromProductNamesCommand = new SqlCommand(killFromProductNamesString, sqlConn);
                    killFromProductNamesCommand.Parameters.Add(new SqlParameter("@paramProduktNummer",
                                                                                selectedRow["ProduktNummer"]));
                    killFromProductNamesCommand.ExecuteNonQuery();

                    RefreshProductList();
                }
                catch (SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show(
                        "Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.",
                        "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if (sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #11
0
        private void ChangeDealer(object sender, RoutedEventArgs e)
        {
            var validator = new Validator();

            TbDealer.Background = Brushes.White;
            TbDealer.Foreground = Brushes.Black;
            TbMail.Background = Brushes.White;
            TbMail.Foreground = Brushes.Black;
            TbCustomerId.Background = Brushes.White;
            TbCustomerId.Foreground = Brushes.Black;

            if(TbDealer.Text.Length > 0 && validator.IsMailValid(TbMail.Text) && TbCustomerId.Text.Length > 0)
            {
                var connString = new SqlConnectionStringBuilder
                    {
                        DataSource = "localhost",
                        InitialCatalog = "AMAM",
                        IntegratedSecurity = true
                    };

                using(var sqlConn = new SqlConnection(connString.ToString()))
                {
                    try
                    {
                        sqlConn.Open();
                        var changeCommand = new SqlCommand("UPDATE Dealers SET " +
                                                           "Vertrieb = @paramVertrieb, " +
                                                           "eMail = @paramMail, " +
                                                           "Kundennummer = @paramCustomerID " +
                                                           "WHERE VertriebID = @paramPK", sqlConn);

                        changeCommand.Parameters.Add(new SqlParameter("@paramVertrieb", TbDealer.Text));
                        changeCommand.Parameters.Add(new SqlParameter("@paramMail", TbMail.Text));
                        changeCommand.Parameters.Add(new SqlParameter("@paramCustomerID", TbCustomerId.Text));
                        changeCommand.Parameters.Add(new SqlParameter("@paramPK", _id));

                        changeCommand.ExecuteNonQuery();
                        Close();
                    }
                    catch(SqlException ex)
                    {
                        var reporter = new ExceptionReporter(ex);
                        reporter.ReportExceptionToAdmin();
                        MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                    finally
                    {
                        if(sqlConn.State == ConnectionState.Open)
                        {
                            sqlConn.Close();
                        }
                    }
                }
            }
            if(TbDealer.Text.Length == 0)
            {
                TbDealer.Background = Brushes.Red;
                TbDealer.Foreground = Brushes.Black;
                MessageBox.Show("Sie müssen einen Vertriebspartner eingeben.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            if(!validator.IsMailValid(TbMail.Text))
            {
                TbMail.Background = Brushes.Red;
                TbMail.Foreground = Brushes.Black;
                MessageBox.Show("Die eingegebene eMail-Adresse ist nicht gültig.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            if(TbCustomerId.Text.Length == 0)
            {
                TbCustomerId.Background = Brushes.Red;
                TbCustomerId.Foreground = Brushes.Black;
                MessageBox.Show("Sie müssen eine Kundennummer eingeben.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Пример #12
0
        private void ReadUnits()
        {
            CboPackageMass.Items.Clear();

            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();

                    if(Sqlhelper.TableExists(sqlConn, "Units"))
                    {
                        var dealerTable = new DataTable();
                        var dataAdapter = new SqlDataAdapter("SELECT EinheitID, Einheit FROM Units", sqlConn);
                        dealerTable.Clear();
                        dataAdapter.Fill(dealerTable);

                        CboPackageMass.ItemsSource = dealerTable.DefaultView;
                        CboPackageMass.DisplayMemberPath = "Einheit";
                        CboPackageMass.SelectedValuePath = "Einheit";
                        CboPackageMass.SelectedIndex = 0;

                        if(CboDealers.Items.Count == 0)
                        {
                            MessageBoxResult answer = MessageBox.Show("Es wurden keine Verpackungseinheiten gefunden. Möchten Sie jetzt eine neue Verpackungseinheit hinzufügen?", "Fehler", MessageBoxButton.YesNo, MessageBoxImage.Question);
                            if(answer == MessageBoxResult.Yes)
                            {
                                var dealerManager = new FrmDealersList();
                                dealerManager.ShowDialog();
                                ReadDealers();
                            }
                        }
                    }
                    else
                    {
                        MessageBoxResult answer = MessageBox.Show("Es wurden keine Verpackungseinheiten gefunden. Möchten Sie jetzt eine neue Verpackungseinheit hinzufügen?", "Fehler", MessageBoxButton.YesNo, MessageBoxImage.Question);
                        if(answer == MessageBoxResult.Yes)
                        {
                            var dealerManager = new FrmDealersList();
                            dealerManager.ShowDialog();
                            ReadDealers();
                        }
                    }
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #13
0
        public FrmAddProduct()
        {
            InitializeComponent();

            _productDataTable.Columns.Add(new DataColumn("VertriebID"));
            _productDataTable.Columns.Add(new DataColumn("Artikelnummer"));
            _productDataTable.Columns.Add(new DataColumn("Preis"));
            _productDataTable.Columns.Add(new DataColumn("Verpackungseinheit"));

            DgProductData.DataContext = _productDataTable.DefaultView;
            _productDataTable.PrimaryKey = new[] {_productDataTable.Columns["Artikelnummer"]};
            DgProductData.SelectedValuePath = "Artikelnummer";

            ReadDealers();

            #region Tabellenexistenz sicherstellen

            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using (var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();

                    if (!Sqlhelper.TableExists(sqlConn, "ProductNames"))
                    {
                        var newTable = new SqlCommand("CREATE TABLE ProductNames (Produktnummer int IDENTITY(1,1) PRIMARY KEY, " +
                                                      "Produktname nvarchar(255) NOT NULL)", sqlConn);
                        newTable.ExecuteNonQuery();
                    }
                    if (!Sqlhelper.TableExists(sqlConn, "Units"))
                    {
                        var newTable =
                            new SqlCommand("CREATE TABLE Units (EinheitID int IDENTITY(1,1) CONSTRAINT pkEinheitID PRIMARY KEY, " +
                                           "Einheit nvarchar(128) NOT NULL)", sqlConn);
                        newTable.ExecuteNonQuery();

                        var newRow =
                            new SqlCommand("INSERT INTO Units (Einheit) VALUES(@paramEinheit1), (@paramEinheit2), (@paramEinheit3)", sqlConn);
                        newRow.Parameters.Add(new SqlParameter("@paramEinheit1", "Stück"));
                        newRow.Parameters.Add(new SqlParameter("@paramEinheit2", "Packung"));
                        newRow.Parameters.Add(new SqlParameter("@paramEinheit3", "Originalpackung"));

                        newRow.ExecuteNonQuery();
                    }

                    if (!Sqlhelper.TableExists(sqlConn, "ProductData"))
                    {
                        var newTable =
                            new SqlCommand("CREATE TABLE ProductData (ProduktID int IDENTITY(1,1) CONSTRAINT pkProduktID PRIMARY KEY, " +
                                           "Produktnummer int NOT NULL CONSTRAINT fkProduktnummer FOREIGN KEY REFERENCES ProductNames(Produktnummer) ON DELETE CASCADE, " +
                                           "Artikelnummer nvarchar(255) NOT NULL, " +
                                           "VertriebID int NOT NULL CONSTRAINT fkVertriebID FOREIGN KEY REFERENCES Dealers(VertriebID) ON DELETE CASCADE, " +
                                           "Preis nvarchar(128) NOT NULL, " +
                                           "EinheitID int NOT NULL CONSTRAINT fkEinheitID FOREIGN KEY REFERENCES Units(EinheitID) ON DELETE CASCADE)", sqlConn);
                        newTable.ExecuteNonQuery();
                    }
                }
                catch (SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show(
                        "Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.",
                        "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if (sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }

            #endregion

            ReadUnits();
        }
Пример #14
0
        private void AddProductNameToDataBase()
        {
            TbProductName.Background = Brushes.White;
            TbProductName.Foreground = Brushes.Black;

            if(TbProductName.Text.Length > 0)
            {
                var connString = new SqlConnectionStringBuilder
                    {
                        DataSource = "localhost",
                        InitialCatalog = "AMAM",
                        IntegratedSecurity = true
                    };

                using(var sqlConn = new SqlConnection(connString.ToString()))
                {
                    try
                    {
                        sqlConn.Open();

                        var newRow = new SqlCommand("INSERT INTO ProductNames (Produktname) VALUES(@paramName)", sqlConn);
                        newRow.Parameters.Add(new SqlParameter("@paramName", TbProductName.Text));
                        newRow.ExecuteNonQuery();
                    }
                    catch(SqlException ex)
                    {
                        var reporter = new ExceptionReporter(ex);
                        reporter.ReportExceptionToAdmin();
                        MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                    }
                    finally
                    {
                        if(sqlConn.State == ConnectionState.Open)
                        {
                            sqlConn.Close();
                        }
                    }
                }
            }
            else
            {
                MessageBox.Show("Sie müssen einen Produktnamen eingeben.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                TbProductName.Background = Brushes.Red;
                TbProductName.Foreground = Brushes.Black;
            }
        }
Пример #15
0
        private void AddProductDataToDataBase()
        {
            var connString = new SqlConnectionStringBuilder
                {
                    DataSource = "localhost",
                    InitialCatalog = "AMAM",
                    IntegratedSecurity = true
                };

            using(var sqlConn = new SqlConnection(connString.ToString()))
            {
                try
                {
                    sqlConn.Open();

                    var newRow = new SqlCommand("INSERT INTO ProductData (Produktnummer, Artikelnummer, VertriebID, Preis, EinheitID) " +
                                                        "VALUES((SELECT Produktnummer FROM ProductNames WHERE ProductNames.Produktname = @paramName), " +
                                                        "@paramArtikelnummer, " +
                                                        "(SELECT VertriebID FROM Dealers WHERE Dealers.VertriebID = @paramVertriebID), " +
                                                        "@paramPreis, "+
                                                        "(SELECT EinheitID FROM Units WHERE Units.Einheit = @paramEinheit))", sqlConn);

                    foreach(DataRow row in _productDataTable.Rows)
                    {
                        newRow.Parameters.Add(new SqlParameter("@paramName", TbProductName.Text));
                        newRow.Parameters.Add(new SqlParameter("@paramArtikelnummer", row["Artikelnummer"]));
                        newRow.Parameters.Add(new SqlParameter("@paramVertriebID", row["VertriebID"]));
                        newRow.Parameters.Add(new SqlParameter("@paramPreis", row["Preis"]));
                        newRow.Parameters.Add(new SqlParameter("@paramEinheit", row["Verpackungseinheit"]));

                        newRow.ExecuteNonQuery();
                        newRow.Parameters.Clear();
                    }
                }
                catch(SqlException ex)
                {
                    var reporter = new ExceptionReporter(ex);
                    reporter.ReportExceptionToAdmin();
                    MessageBox.Show("Auf die Datenbank konnte nicht zugegriffen werden. Ein Fehlerbericht wurde an den Administrator gesendet.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
                }
                finally
                {
                    if(sqlConn.State == ConnectionState.Open)
                    {
                        sqlConn.Close();
                    }
                }
            }
        }
Пример #16
0
        /// <summary>
        /// Methode zum Laden der User-Daten in die Form
        /// </summary>
        private void InitUserTable()
        {
            CboUsername.Items.Clear();

            var xmlFile = XmlReader.Create(_xmlPath, new XmlReaderSettings());
            try
            {

                if(_ds.Tables.Count > 0)
                {
                    CboUsername.ItemsSource = _ds.Tables["user"].DefaultView;
                    CboUsername.SelectedIndex = 0;
                }
                else
                {
                    _ds.ReadXml(xmlFile);
                    xmlFile.Close();
                    if(_ds.Tables.Count > 0)
                    {
                        CboUsername.ItemsSource = _ds.Tables["user"].DefaultView;
                        CboUsername.SelectedIndex = 0;
                    }
                }
            }
            catch(XmlException ex)
            {
                MessageBox.Show("Die Benutzerdatenbank ist korrupt. Es wird nun eine neue Benutzerdatenbank angelegt." + Environment.NewLine + Environment.NewLine + "Die korrupte Benutzerdatenbank wird gesichert und der Administrator per eMail kontaktiert. Bitte einen Moment Geduld.", "Fehler", MessageBoxButton.OK, MessageBoxImage.Error);

                File.Move(_xmlPath, _xmlPath + ".corrupt");
                File.Delete(_xmlPath);
                _initxml.CreateXMLFileStructure("users");

                var exReport = new ExceptionReporter(ex);
                exReport.ReportExceptionToAdmin(_xmlPath + ".corrupt");
            }
            if(!CboUsername.HasItems)
            {
                MessageBoxResult messageResult = MessageBox.Show("Die Benutzerdatenbank enthält keinen Benutzer." + Environment.NewLine + "Sie müssen nun einen Benutzer anlegen um fortfahren zu können.", "Fehler", MessageBoxButton.OKCancel, MessageBoxImage.Error);
                if(messageResult == MessageBoxResult.OK)
                {
                    var addUser = new FrmAddUser(_ds);
                    addUser.ShowDialog();
                    _ds.WriteXml(_xmlPath);
                    CboUsername.ItemsSource = _ds.Tables["user"].DefaultView;
                    CboUsername.SelectedIndex = 0;
                }
                else
                {
                    Environment.Exit(1);
                }
            }
        }