private void Button_Click_2(object sender, RoutedEventArgs e) // Кнопка "Добавить товар" { try { int i_id = Convert.ToInt32(item_id.Text); // Считываем id товара и его количество int i_count = Convert.ToInt32(item_count.Text); if (i_id > 0 && i_count > 0) // Если поля заполнены корректно { using (ADOmodel db = new ADOmodel(conString)) { bool ItemExist = db.Items.Any(i => i.id_Item == i_id); // Если товар существует if (ItemExist) { discount = db.Loyality_card.Where(lc => lc.id_Loyality_card == client.id_Loyality_card).Select(lc => lc.Loyality_discount).FirstOrDefault(); // Считываем скидку Item_list new_item = new Item_list() { id_Order = or_id, id_Item = i_id, Quantity = i_count }; // Создаем новый товар new_order_list.Add(new_item); // И заносим его в список для БД string i_name = db.Items.Where(i => i.id_Item == i_id).Select(i => i.Name).FirstOrDefault().ToString(); // Запоминаем имя товара int i_price = (int)db.Items.Where(i => i.id_Item == i_id).Select(i => i.Price).FirstOrDefault(); // И его стоимость PrintList pr_item = new PrintList() { id = i_id, ItemName = i_name, Quantity = i_count, CostTotal = i_price * i_count, CostOne = i_price }; // Заносим данные в список для вывода list_for_print.Add(pr_item); total_cost += pr_item.CostTotal; // Расчет стоимости costWithDiscount = total_cost - (total_cost / 100 * discount); order_cost.Content = total_cost + " руб."; // Вывод стоимости order_discountCost.Content = costWithDiscount + " руб."; } else { MessageBox.Show("Товар не найден!", "Информация", MessageBoxButton.OK, MessageBoxImage.Information); } } } else { MessageBox.Show("Корректно заполните поля 'id Товара' и 'Кол-во'!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning); } } catch (Exception) { MessageBox.Show("Корректно заполните поля 'id Товара' и 'Кол-во'!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning); } }
private void createOrder_btn_Click(object sender, RoutedEventArgs e) // Кнопка оформления заказа { bool canSend = true; // Переменная для контроля корректности заполнения данных if (empl_position.SelectedItem == null || empl_fullName.SelectedItem == null) // Проверки на правильную заполненность полей { MessageBox.Show("Выберите сотрудника!", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Warning); canSend = false; } if (new_order_list.Count() == 0 || list_for_print.Count() == 0) { MessageBox.Show("Нельзя оформить пустой заказ!", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Warning); canSend = false; } if (new_order_list.Count() != list_for_print.Count()) { MessageBox.Show("Ошибка в формировании списков заказа!", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Warning); canSend = false; } if (item_certificate.Text == "") { MessageBox.Show("Поле 'Номинал' блока 'Сертификат' должно содержать значение!\n(0, 5000, 30000, 50000)", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Warning); canSend = false; } if (delivery_cb.IsChecked == true && delivery_type.IsEnabled == true && delivery_select_btn.IsEnabled == true) { MessageBox.Show("Подтвердите тип доставки!", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Warning); canSend = false; } if (canSend) // Если все заполнено корректно, то начинаем отправлять данные в БД { using (ADOmodel db = new ADOmodel(conString)) { int id_cert = 0; // Идентификатор нового сертификата int id_deliv = 0; // Идентификатор новой доставки if (Convert.ToInt32(item_certificate.Text) != 0) // Если был применен сертификат, то создаем запись о сертификате { id_cert = db.Certificates.Select(c => c.id_Certificate).Max() + 1; int certificateValue = Convert.ToInt32(item_certificate.Text); Certificate new_certificate = new Certificate() { id_Certificate = id_cert, Value = certificateValue }; db.Certificates.Add(new_certificate); db.SaveChanges(); } if (delivery_cb.IsChecked == true) // Если была выбрана доставка, то создаем запись по доставке { id_deliv = db.Deliveries.Select(d => d.id_Delivery).Max() + 1; Delivery new_delivery = new Delivery() { id_Delivery = id_deliv, id_Type = devType_id, Cost = devCost }; db.Deliveries.Add(new_delivery); db.SaveChanges(); } if (delivery_cb.IsChecked == false && devCost > 0 && delivery_select_btn.IsEnabled == false) // Если доставка была сначала выбрана и применена, но потом чекбокс доставки был снят { total_cost -= devCost; // Убираем из стоимости заказа доставку costWithDiscount = total_cost - (total_cost / 100 * discount); // И пересчитываем стоимость заказа с учетом КЛ } Orders new_order; if (id_cert != 0 && id_deliv != 0) // Формирование заказа с сертификатом и доставкой { new_order = new Orders() { id_Order = or_id, id_Client = cl_id, id_Employee = em_id, Date = DateTime.Now, Order_cost = (decimal)costWithDiscount, Discount = discount, id_Certificate = id_cert, id_Delivery = id_deliv }; db.Orders.Add(new_order); } else if (id_cert == 0 && id_deliv != 0) // Формирование заказа без сертификата, но с доставкой { new_order = new Orders() { id_Order = or_id, id_Client = cl_id, id_Employee = em_id, Date = DateTime.Now, Order_cost = (decimal)costWithDiscount, Discount = discount, id_Delivery = id_deliv }; db.Orders.Add(new_order); } else if (id_cert != 0 && id_deliv == 0) // Формирование заказа с сертификатом, но без доставки { new_order = new Orders() { id_Order = or_id, id_Client = cl_id, id_Employee = em_id, Date = DateTime.Now, Order_cost = (decimal)costWithDiscount, Discount = discount, id_Certificate = id_cert, }; db.Orders.Add(new_order); } else // Формирование заказа без сертификата и без доставки { new_order = new Orders() { id_Order = or_id, id_Client = cl_id, id_Employee = em_id, Date = DateTime.Now, Order_cost = (decimal)costWithDiscount, Discount = discount, }; db.Orders.Add(new_order); } foreach (var item in new_order_list) // Добавление товаров заказа в таблицу Item_list { int il_id = item.id_Item; int il_quant = item.Quantity; Item_list il = new Item_list() { id_Order = or_id, id_Item = il_id, Quantity = il_quant }; db.Item_list.Add(il); } db.SaveChanges(); MessageBox.Show("Заказ успешно добавлен!", "Оформление заказа", MessageBoxButton.OK, MessageBoxImage.Information); this.Close(); } } }