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("Автозапчасть добавлена на склад."); }
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 MakeOrder_Click(object sender, RoutedEventArgs e) { if (SparePartName.Text != CheckSparePart.CheckSparePartName(SparePartName.Text)) { MessageBox.Show(CheckSparePart.CheckSparePartName(SparePartName.Text)); return; } if (CarName.Text != CheckSparePart.CheckCarName(CarName.Text)) { MessageBox.Show(CheckSparePart.CheckCarName(CarName.Text)); return; } if (SparePartCount.Text != CheckSparePart.CheckSparePartCount(SparePartCount.Text)) { MessageBox.Show(CheckSparePart.CheckSparePartCount(SparePartCount.Text)); return; } int sparePartID = 0; int carModelID = 0; string myConnectionString = @"Data Source=(local)\SQLEXPRESS; Initial Catalog=StockRoom; Integrated Security=True"; SqlConnection connection = new SqlConnection(myConnectionString); connection.Open(); string findOrderSparePartName = "SELECT IDSparePartN FROM SparePartName WHERE SparePartN = '" + SparePartName.Text + "'"; SqlCommand findSparePartName = new SqlCommand(findOrderSparePartName, connection); SqlDataReader sparePartNameReader = findSparePartName.ExecuteReader(); if (sparePartNameReader.Read()) // ищем id-шник названия запчасти в базе { sparePartID = Convert.ToInt32(sparePartNameReader[0].ToString()); sparePartNameReader.Close(); } else { MessageBox.Show("Такой автозапчасти нет на складе."); return; } sparePartNameReader.Close(); string findOrderCarName = "SELECT IDCarModel FROM CarModel WHERE CarModelName = '" + CarName.Text + "'"; SqlCommand findCarNameCommand = new SqlCommand(findOrderCarName, connection); SqlDataReader carNameReader = findCarNameCommand.ExecuteReader(); if (carNameReader.Read()) // ищем id-шник названия автомобиля в базе { carModelID = Convert.ToInt32(carNameReader[0].ToString()); carNameReader.Close(); } else { MessageBox.Show("Автозапчасти для такой марки автомобиля нет."); return; } StreamReader file = new StreamReader("UserLogin.txt"); string login = file.ReadLine(); file.Close(); int userCode = 0; string findUserCode = "SELECT UserCode FROM Users WHERE UserLogin = '******'"; SqlCommand findUC = new SqlCommand(findUserCode, connection); SqlDataReader UCReader = findUC.ExecuteReader(); if (UCReader.HasRows) // получаем id-шник пользователя { while (UCReader.Read()) { userCode = Convert.ToInt32(UCReader[0].ToString()); } } UCReader.Close(); double sparePartCost = 0; int currentCount = 0; int sparePartNumber = 0; string findOrderData = "SELECT SparePartNumber, SparePartCount, SparePartCost FROM SparePart WHERE IDSparePartN = " + sparePartID + " AND IDCarModel = " + carModelID + ""; SqlCommand findData = new SqlCommand(findOrderData, connection); SqlDataReader dataReader = findData.ExecuteReader(); if (dataReader.HasRows) { while (dataReader.Read()) // берем данные запчасти со склада: номер, кол-во, стоимость { sparePartNumber = Convert.ToInt32(dataReader[0].ToString()); currentCount = Convert.ToInt32(dataReader[1].ToString()); sparePartCost = Convert.ToDouble(dataReader[2].ToString()); } if (currentCount < Convert.ToInt32(SparePartCount.Text)) // если кол-во запчастей на складе меньше кол-ва запчастей в заказе { MessageBox.Show("Такого количества указанной автозапчасти на складе нет."); return; } else if (currentCount > Convert.ToInt32(SparePartCount.Text)) // если кол-во запчастей на складе больше кол-ва запчастей в заказе { using (SqlConnection changeCount = new SqlConnection(myConnectionString)) using (SqlCommand lastCommnd = changeCount.CreateCommand()) // уменьшаем кол-во запчастей на складе { lastCommnd.CommandText = "UPDATE SparePart SET SparePartCount = SparePartCount - @count WHERE SparePartNumber = " + sparePartNumber + ""; lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(SparePartCount.Text)); changeCount.Open(); lastCommnd.ExecuteNonQuery(); changeCount.Close(); } using (SqlConnection insertOrderData = new SqlConnection(myConnectionString)) using (SqlCommand lastCommnd = insertOrderData.CreateCommand()) // записываем данные заказа в базу данных { lastCommnd.CommandText = "INSERT SparePartOrder (UserCode, SparePartNumber, SparePartCount, GeneralSum) VALUES (@UC, @sprptNum, @count, @sum)"; lastCommnd.Parameters.AddWithValue("@UC", userCode); lastCommnd.Parameters.AddWithValue("@sprptNum", sparePartNumber); lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(SparePartCount.Text)); lastCommnd.Parameters.AddWithValue("@sum", Convert.ToDouble(SparePartCount.Text) * sparePartCost); insertOrderData.Open(); lastCommnd.ExecuteNonQuery(); insertOrderData.Close(); } } else if (currentCount == Convert.ToInt32(SparePartCount.Text)) // если кол-во запчастей на складе равно кол-ву запчастей в заказе { using (SqlConnection changeCount = new SqlConnection(myConnectionString)) using (SqlCommand lastCommnd = changeCount.CreateCommand()) { lastCommnd.CommandText = "UPDATE SparePart SET SparePartCount = SparePartCount - @count, IDStatus = (SELECT IDStatus FROM SparePartStatus WHERE StateName = @status) WHERE SparePartNumber = " + sparePartNumber + ""; lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(SparePartCount.Text)); lastCommnd.Parameters.AddWithValue("@status", "Нет в наличии"); changeCount.Open(); lastCommnd.ExecuteNonQuery(); changeCount.Close(); } using (SqlConnection insertOrderData = new SqlConnection(myConnectionString)) using (SqlCommand lastCommnd = insertOrderData.CreateCommand()) // записываем данные заказа в базу данных { lastCommnd.CommandText = "INSERT SparePartOrder (UserCode, SparePartNumber, SparePartCount, GeneralSum) VALUES (@UC, @sprptNum, @count, @sum)"; lastCommnd.Parameters.AddWithValue("@UC", userCode); lastCommnd.Parameters.AddWithValue("@sprptNum", sparePartNumber); lastCommnd.Parameters.AddWithValue("@count", Convert.ToInt32(SparePartCount.Text)); lastCommnd.Parameters.AddWithValue("@sum", Convert.ToDouble(SparePartCount.Text) * sparePartCost); insertOrderData.Open(); lastCommnd.ExecuteNonQuery(); insertOrderData.Close(); } } } else { MessageBox.Show("Нет подходящей автозапчасти для указанного автомобиля."); return; } dataReader.Close(); string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); // открываем Word try { Document doc = app.Documents.Open(System.IO.Path.GetFullPath(@"ШаблонЗаказ.docx")); // открыаем шаблон ReplaseWord("{OrderDate}", DateTime.Now.ToShortDateString(), doc); // записываем в метку дату заказа string query = "SELECT OrderNumber, CarModelName, SparePartN, SparePartCost, SparePartOrder.SparePartCount, UserName, UserSurname, UserLogin, GeneralSum FROM SparePartOrder, CarModel, SparePartName, SparePart, Users WHERE SparePartOrder.UserCode = Users.UserCode AND SparePartOrder.UserCode = " + userCode + " AND SparePartOrder.SparePartNumber = SparePart.SparePartNumber AND SparePartOrder.SparePartNumber = " + sparePartNumber + " AND SparePart.IDCarModel = CarModel.IDCarModel AND SparePart.IDSparePartN = SparePartName.IDSparePartN AND SparePartOrder.SparePartCount = " + Convert.ToInt32(SparePartCount.Text) + ""; SqlCommand sqlCommand = new SqlCommand(query, connection); SqlDataReader sqlDataReader = sqlCommand.ExecuteReader(); if (sqlDataReader.HasRows) // записываем в метки данные заказа { while (sqlDataReader.Read()) { ReplaseWord("{OrderNumber}", sqlDataReader[0].ToString() + "\n", doc); ReplaseWord("{SparePartN}", sqlDataReader[2].ToString() + "\n", doc); ReplaseWord("{CarModelName}", sqlDataReader[1].ToString() + "\n", doc); ReplaseWord("{SparePartCost}", sqlDataReader[3].ToString() + "\n", doc); ReplaseWord("{SparePartCount}", sqlDataReader[4].ToString() + "\n", doc); ReplaseWord("{UserName}", sqlDataReader[5].ToString() + "\n", doc); ReplaseWord("{UserSurname}", sqlDataReader[6].ToString() + "\n", doc); ReplaseWord("{UserLogin}", sqlDataReader[7].ToString() + "\n", doc); ReplaseWord("{GeneralSum}", sqlDataReader[8].ToString() + "\n", doc); path += @"\Отчет по заказу № " + sqlDataReader[0].ToString() + ".docx"; } } doc.SaveAs2(path); sqlDataReader.Close(); doc.Close(); connection.Close(); } catch (Exception q) { app.Quit(); MessageBox.Show(q.Message); } finally { app.Quit(); } MessageBoxResult mboxResult = MessageBox.Show("Заказ успешно выполнен. Желаете заказать что-нибудь еще?", "Предупреждение", MessageBoxButton.YesNo); if (mboxResult == MessageBoxResult.No) { MainMenuUser mainMenuUser = new MainMenuUser(); mainMenuUser.Show(); this.Close(); } connection.Close(); }