private void Button_Click(object sender, RoutedEventArgs e)
        {
            if (criterion.Text == "Название запчасти")
            {
                if (searchCriterion.Text != CheckSparePart.CheckSparePartName(searchCriterion.Text))
                {
                    MessageBox.Show(CheckSparePart.CheckSparePartName(searchCriterion.Text));
                    return;
                }
            }
            else if (criterion.Text == "Название автомобиля")
            {
                if (searchCriterion.Text != CheckSparePart.CheckCarName(searchCriterion.Text))
                {
                    MessageBox.Show(CheckSparePart.CheckCarName(searchCriterion.Text));
                    return;
                }
            }
            else if (criterion.Text == "Дата изготовления")
            {
                if (searchCriterion.Text != CheckSparePart.CheckCreationDate(searchCriterion.Text))
                {
                    MessageBox.Show(CheckSparePart.CheckCreationDate(searchCriterion.Text));
                    return;
                }
            }
            else if (criterion.Text == "Стоимость одной детали")
            {
                if (searchCriterion.Text != CheckSparePart.CheckSparePartCost(searchCriterion.Text))
                {
                    MessageBox.Show(CheckSparePart.CheckSparePartCost(searchCriterion.Text));
                    return;
                }
            }
            else
            {
                MessageBox.Show("Вы не выбрали критерий поиска.");
                return;
            }
            StreamWriter writeCriterion = new StreamWriter("Criterion.txt"); // записываем критерий поиска в файл

            writeCriterion.Write(criterion.Text);
            writeCriterion.Close();

            StreamWriter writeSearchCriterion = new StreamWriter("SearchCriterion.txt"); // записываем искомую информацию в файл

            writeSearchCriterion.Write(searchCriterion.Text);
            writeSearchCriterion.Close();

            Search search = new Search();

            search.Show();
            this.Close();
        }
        private void SaveChanges(object sender, RoutedEventArgs e)
        {
            if (criterion.Text != string.Empty && searchCriterion.Text != string.Empty)
            {
                int sprPrtCode = Convert.ToInt32(searchCriterion.Text);
                if (criterion.Text == "Название запчасти")
                {
                    if (changingCriterion.Text != CheckSparePart.CheckSparePartName(changingCriterion.Text))
                    {
                        MessageBox.Show(CheckSparePart.CheckSparePartName(changingCriterion.Text));
                        return;
                    }
                    string        selectIdSprPrt = @"SELECT IDSparePartN FROM SparePartName WHERE SparePartN = '" + changingCriterion.Text + "'";
                    int           idSparePartN   = 0;
                    SqlConnection sqlConnection  = new SqlConnection(connectionString);
                    sqlConnection.Open();
                    SqlCommand    sqlCommand    = new SqlCommand(selectIdSprPrt, sqlConnection);
                    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
                    if (sqlDataReader.HasRows) // находим id-шник нового названия запчасти в базе
                    {
                        while (sqlDataReader.Read())
                        {
                            idSparePartN = Convert.ToInt32(sqlDataReader[0].ToString());
                        }
                    }
                    else
                    {
                        MessageBox.Show("В базе нет данных с таким названием запчасти.");
                        return;
                    }
                    sqlDataReader.Close();
                    using (SqlConnection updateRow = new SqlConnection(connectionString))
                        using (SqlCommand lastCommnd = updateRow.CreateCommand()) // обновляем информацию
                        {
                            lastCommnd.CommandText = "UPDATE SparePart SET IDSparePartN = @name WHERE SparePartNumber = @number";

                            lastCommnd.Parameters.AddWithValue("@name", idSparePartN);
                            lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);

                            updateRow.Open();
                            lastCommnd.ExecuteNonQuery();
                            updateRow.Close();
                        }
                    sqlConnection.Close();
                }
                else if (criterion.Text == "Название автомобиля")
                {
                    if (changingCriterion.Text != CheckSparePart.CheckCarName(changingCriterion.Text))
                    {
                        MessageBox.Show(CheckSparePart.CheckCarName(changingCriterion.Text));
                        return;
                    }
                    string        selectIdSprPrt = @"SELECT IDCarModel FROM CarModel WHERE CarModelName = '" + changingCriterion.Text + "'";
                    int           idCarModel     = 0;
                    SqlConnection sqlConnection  = new SqlConnection(connectionString);
                    sqlConnection.Open();
                    SqlCommand    sqlCommand    = new SqlCommand(selectIdSprPrt, sqlConnection);
                    SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
                    if (sqlDataReader.HasRows) // находим id-шник нового названия автомобиля в базе
                    {
                        while (sqlDataReader.Read())
                        {
                            idCarModel = Convert.ToInt32(sqlDataReader[0].ToString());
                        }
                    }
                    else
                    {
                        MessageBox.Show("В базе нет данных с таким названием автомобиля.");
                        return;
                    }
                    sqlDataReader.Close();
                    using (SqlConnection updateRow = new SqlConnection(connectionString))
                        using (SqlCommand lastCommnd = updateRow.CreateCommand()) // обновляем информацию
                        {
                            lastCommnd.CommandText = "UPDATE SparePart SET IDCarModel = @name WHERE SparePartNumber = @number";

                            lastCommnd.Parameters.AddWithValue("@name", idCarModel);
                            lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);

                            updateRow.Open();
                            lastCommnd.ExecuteNonQuery();
                            updateRow.Close();
                        }
                    sqlConnection.Close();
                }
                else if (criterion.Text == "Дата изготовления")
                {
                    if (changingCriterion.Text != CheckSparePart.CheckCreationDate(changingCriterion.Text))
                    {
                        MessageBox.Show(CheckSparePart.CheckCreationDate(changingCriterion.Text));
                        return;
                    }
                    using (SqlConnection updateRow = new SqlConnection(connectionString))
                        using (SqlCommand lastCommnd = updateRow.CreateCommand()) // обновляем информацию
                        {
                            lastCommnd.CommandText = "UPDATE SparePart SET SparePartCreation = @date WHERE SparePartNumber = @number";
                            lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);
                            lastCommnd.Parameters.AddWithValue("@date", changingCriterion.Text);

                            updateRow.Open();
                            lastCommnd.ExecuteNonQuery();
                            updateRow.Close();
                        }
                }
                else if (criterion.Text == "Стоимость одной детали")
                {
                    if (changingCriterion.Text != CheckSparePart.CheckSparePartCost(changingCriterion.Text))
                    {
                        MessageBox.Show(CheckSparePart.CheckSparePartCost(changingCriterion.Text));
                        return;
                    }
                    using (SqlConnection updateRow = new SqlConnection(connectionString))
                        using (SqlCommand lastCommnd = updateRow.CreateCommand()) // обновляем информацию
                        {
                            lastCommnd.CommandText = "UPDATE SparePart SET SparePartCost = @cost WHERE SparePartNumber = @number";
                            lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);
                            lastCommnd.Parameters.AddWithValue("@cost", Convert.ToDouble(changingCriterion.Text));

                            updateRow.Open();
                            lastCommnd.ExecuteNonQuery();
                            updateRow.Close();
                        }
                }
                else if (criterion.Text == "Количество")
                {
                    if (changingCriterion.Text != CheckSparePart.CheckSparePartCount(changingCriterion.Text))
                    {
                        MessageBox.Show(CheckSparePart.CheckSparePartCount(changingCriterion.Text));
                        return;
                    }
                    using (SqlConnection updateRow = new SqlConnection(connectionString)) // обновляем информацию
                        using (SqlCommand lastCommnd = updateRow.CreateCommand())
                        {
                            lastCommnd.CommandText = "UPDATE SparePart SET SparePartCount = @count, IDStatus = (SELECT IDStatus FROM SparePartStatus WHERE StateName  = @status) WHERE SparePartNumber = @number";
                            if (Convert.ToInt32(changingCriterion.Text) == 0) // если новое кол-во 0, меняем статус на "нет в наличии"
                            {
                                lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);
                                lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(changingCriterion.Text));
                                lastCommnd.Parameters.AddWithValue("@status", "Нет в наличии");
                            }
                            else
                            {
                                lastCommnd.Parameters.AddWithValue("@number", sprPrtCode);
                                lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(changingCriterion.Text));
                                lastCommnd.Parameters.AddWithValue("@status", "Есть в наличии");
                            }

                            updateRow.Open();
                            lastCommnd.ExecuteNonQuery();
                            updateRow.Close();
                        }
                }
            }
            else
            {
                MessageBox.Show("Вы не выбрали данные для изменения.");
                return;
            }
            MessageBoxResult mboxResult = MessageBox.Show("Данные обновлены. Желаете изменить что-нибудь еще?", "Предупреждение", MessageBoxButton.YesNo);

            if (mboxResult == MessageBoxResult.No)
            {
                ChangeSparePartsData changeSparePartsData = new ChangeSparePartsData();
                changeSparePartsData.Show();
                this.Close();
            }
        }
        private void AddButton_Click(object sender, RoutedEventArgs e)
        {
            int           sparePartNameID = 0;
            int           carModelID      = 0;
            int           stateID         = 0;
            SqlConnection connection      = new SqlConnection(connectionString);

            connection.Open();

            if (sparePartName.Text != CheckSparePart.CheckSparePartName(sparePartName.Text))
            {
                MessageBox.Show(CheckSparePart.CheckSparePartName(sparePartName.Text));
                return;
            }
            string        findSparePart = "SELECT IDSparePartN FROM SparePartName WHERE SparePartN = '" + sparePartName.Text + "'";
            SqlCommand    command       = new SqlCommand(findSparePart, connection);
            SqlDataReader firstReader   = command.ExecuteReader(); //ищем id-шник названия детальки, если такое имеется

            if (firstReader.Read())
            {
                sparePartNameID = Convert.ToInt32(firstReader[0].ToString());
            }
            else //если нет, тогда это название добавляем
            {
                string     AddSparePartName = "INSERT INTO SparePartName (SparePartN) VALUES ('" + sparePartName.Text + "')";
                SqlCommand AddCommnd        = new SqlCommand(AddSparePartName, connection);
                firstReader.Close();
                AddCommnd.ExecuteNonQuery();
            }
            firstReader.Close();

            if (carName.Text != CheckSparePart.CheckCarName(carName.Text))
            {
                MessageBox.Show(CheckSparePart.CheckCarName(carName.Text));
                return;
            }
            string        findCar      = "SELECT IDCarModel FROM CarModel WHERE CarModelName = '" + carName.Text + "'";
            SqlCommand    command1     = new SqlCommand(findCar, connection);
            SqlDataReader secondReader = command1.ExecuteReader(); //ищем id-шник названия автомобиля, если такое имеется

            if (secondReader.Read())
            {
                carModelID = Convert.ToInt32(secondReader[0].ToString());
                secondReader.Close();
            }
            else //если нет, тогда это название добавляем
            {
                string     AddCarModelName = "INSERT INTO CarModel (CarModelName) VALUES ('" + carName.Text + "')";
                SqlCommand AddCommnd       = new SqlCommand(AddCarModelName, connection);
                secondReader.Close();
                AddCommnd.ExecuteNonQuery();
            }

            if (creationDate.Text != CheckSparePart.CheckCreationDate(creationDate.Text))
            {
                MessageBox.Show(CheckSparePart.CheckCreationDate(creationDate.Text));
                return;
            }

            string state = string.Empty;

            if (count.Text != CheckSparePart.CheckSparePartCount(count.Text))
            {
                MessageBox.Show(CheckSparePart.CheckSparePartCount(count.Text));
                return;
            }
            else
            {
                if (Convert.ToInt32(count.Text) > 0)
                {
                    state = "Есть в наличии";
                }
                else
                {
                    if (Convert.ToInt32(count.Text) == 0)
                    {
                        state = "Нет в наличии";
                    }
                }
            }

            string        findStateID        = "SELECT IDStatus FROM SparePartStatus WHERE StateName = '" + state + "'";
            SqlCommand    FindStateIDCommand = new SqlCommand(findStateID, connection);
            SqlDataReader readIDState        = FindStateIDCommand.ExecuteReader(); // берем id-шник названия статуса

            if (readIDState.Read())
            {
                stateID = Convert.ToInt32(readIDState[0].ToString());
                readIDState.Close();
            }

            if (cost.Text != CheckSparePart.CheckSparePartCost(cost.Text))
            {
                MessageBox.Show(CheckSparePart.CheckSparePartCost(cost.Text));
                return;
            }

            string        ID         = "SELECT IDSparePartN, IDCarModel FROM SparePartName, CarModel WHERE SparePartN = '" + sparePartName.Text + "' AND CarModelName = '" + carName.Text + "'";
            SqlCommand    sqlCommand = new SqlCommand(ID, connection);
            SqlDataReader readID     = sqlCommand.ExecuteReader();

            if (readID.HasRows)
            {
                while (readID.Read())
                {
                    sparePartNameID = Convert.ToInt32(readID[0].ToString());
                    carModelID      = Convert.ToInt32(readID[1].ToString());
                }
            }
            readID.Close();

            double currentCost = 0;

            string        findReplays        = "SELECT SparepartCost, IDSparePartN, IDCarModel, SparePartCreation FROM SparePart WHERE IDSparePartN = " + sparePartNameID + "AND IDCarModel = " + carModelID + "AND SparePartCreation = '" + creationDate.Text + "'";
            SqlCommand    findReplaysCommand = new SqlCommand(findReplays, connection);
            SqlDataReader replaysReader      = findReplaysCommand.ExecuteReader();

            if (replaysReader.HasRows)                                           //проверка на наличие данных. если соответствия есть - будем обновлять кол-во и стоимость
            {
                while (replaysReader.Read())                                     //переходы к последующим записям
                {
                    currentCost = Convert.ToDouble(replaysReader[0].ToString()); //текущая стоимость
                    if (currentCost < Convert.ToDouble(cost.Text))               //если текущая стоимость меньше той стоимости, которую указали при добавлении новой детали, указываем новую
                    {
                        using (SqlConnection changeSum = new SqlConnection(connectionString))
                            using (SqlCommand lastCommnd = changeSum.CreateCommand())
                            {
                                lastCommnd.CommandText = "UPDATE SparePart SET SparePartCost = @sum, SparePartCount = SparePartCount + @count, IDStatus = (SELECT IDStatus FROM SparePartStatus WHERE StateName  = 'Есть в наличии') WHERE IDSparePartN = " + sparePartNameID + "AND IDCarModel = " + carModelID + "AND SparePartCreation = '" + creationDate.Text + "'";
                                lastCommnd.Parameters.AddWithValue("@sum", Convert.ToDouble(cost.Text));
                                lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(count.Text));

                                changeSum.Open();
                                lastCommnd.ExecuteNonQuery();
                                changeSum.Close();
                            }
                    }
                    else //если текущая стоимость больше той стоимости, которую указали при добавлении новой детали, оставляем старую
                    {
                        using (SqlConnection changeSum = new SqlConnection(connectionString))
                            using (SqlCommand lastCommnd = changeSum.CreateCommand())
                            {
                                lastCommnd.CommandText = "UPDATE SparePart SET SparePartCount = SparePartCount + @count, IDStatus = (SELECT IDStatus FROM SparePartStatus WHERE StateName  = 'Есть в наличии') WHERE IDSparePartN = " + sparePartNameID + "AND IDCarModel = " + carModelID + "AND SparePartCreation = '" + creationDate.Text + "'";
                                lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(count.Text));

                                changeSum.Open();
                                lastCommnd.ExecuteNonQuery();
                                changeSum.Close();
                            }
                    }
                }
            }
            else //если соответствий нет - добавляем новую запчасть на склад
            {
                using (SqlConnection changeSum = new SqlConnection(connectionString))
                    using (SqlCommand lastCommnd = changeSum.CreateCommand())
                    {
                        lastCommnd.CommandText = "INSERT INTO SparePart (IDSparePartN, IDCarModel, IDStatus, SparePartCreation, SparePartCost, SparePartCount) VALUES (@name, @car, @state, @date, @sum, @count)";

                        lastCommnd.Parameters.AddWithValue("@name", Convert.ToInt32(sparePartNameID));
                        lastCommnd.Parameters.AddWithValue("@car", Convert.ToInt32(carModelID));
                        lastCommnd.Parameters.AddWithValue("@state", Convert.ToInt32(stateID));
                        lastCommnd.Parameters.AddWithValue("@date", creationDate.Text);
                        lastCommnd.Parameters.AddWithValue("@sum", Convert.ToDouble(cost.Text));
                        lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(count.Text));

                        changeSum.Open();
                        lastCommnd.ExecuteNonQuery();
                        changeSum.Close();
                    }
            }
            MessageBox.Show("Автозапчасть добавлена на склад.");
        }