public void SellBooks(BookOrdering order) // клик по кнопке "Продажа книг" { foreach (Book book in order.OrderedBoooks.Keys.ToArray()) { if (SystemOfBookStore.booksInStore[book] >= order.OrderedBoooks[book]) // если экземпляров книги в магазине больше (или равно), чем нужно заказчику { MessageBox.Show(order.OrderedBoooks[book] + " copies of the book " + "''" + book.Name + "''" + " " + "of " + book.Author + " are sold."); // сообщение о продаже книги SystemOfBookStore.booksInStore[book] -= order.OrderedBoooks[book]; // уменьшение числа экземпляров книги в магазине на количество проданных экземпляров книги if (!SystemOfBookStore.soldBooks.ContainsKey(book)) { SystemOfBookStore.soldBooks.Add(book, order.OrderedBoooks[book]); } // занесение книги в список проданных книг else { SystemOfBookStore.soldBooks[book] += order.OrderedBoooks[book]; } order.OrderedBoooks.Remove(book); // удаление книги из заказа (заказ на нее выполнен, она продана) } else if (SystemOfBookStore.booksInStore[book] < order.OrderedBoooks[book] && SystemOfBookStore.booksInStore[book] > 0) // если экземпляров книги в магазине меньше, чем нужно заказчику { int count = SystemOfBookStore.booksInStore[book]; MessageBox.Show(SystemOfBookStore.booksInStore[book] + " copies of the book " + "''" + book.Name + "''" + " " + "of " + book.Author + " are sold."); // cообщение о продаже экземпляров книги, всех, что имеются в магазине SystemOfBookStore.booksInStore[book] = 0; // число экземляров книги в магазине стало 0 if (!SystemOfBookStore.soldBooks.ContainsKey(book)) { SystemOfBookStore.soldBooks.Add(book, count); } // занесение книги в список проданных книг else { SystemOfBookStore.soldBooks[book] += count; } order.OrderedBoooks[book] -= count; // удаление числа проданных экземпляров книги } } int maxNumbersOfSoldCopies = (from p in SystemOfBookStore.soldBooks select p.Value).Max(); // поиск максимального числа проданных экземпляров книги foreach (var book in SystemOfBookStore.booksInStore.Keys) { if (SystemOfBookStore.soldBooks.ContainsKey(book)) { book.Rating = Math.Round(SystemOfBookStore.soldBooks[book] * 5.0 / maxNumbersOfSoldCopies, 1); // меняем рейтинг книг после совершенной продажи в списке книг в магазине foreach (Book p in SystemOfBookStore.soldBooks.Keys) { if (p.Name == book.Name) { p.Rating = book.Rating; // устанавливаем полученный рейтинг для книги в списке проданных книг break; } } } else { book.Rating = 0; } } rangeOfBookstore.Clear(); foreach (Book book in SystemOfBookStore.booksInStore.Keys) { rangeOfBookstore.Text += book.ToString() + "number of copies: " + SystemOfBookStore.booksInStore[book] + "\r\n" + "\r\n"; } // отображение изменений в элементе TextBox информации о книге(изменение кол-ва экземпляров и рейтинга после продажи) }
private void PlaceTheOrder_Click(object sender, RoutedEventArgs e) // клик по кнопке "разместить заказ" { bool flag = true; char[] delimitors = new char[] { ' ' }; if (TypeOfOrder == "OrderInStore") { OrderOfCustomer = new OrderInStore(); // создание заказа определенного типа } else if (TypeOfOrder == "OrderByPhone") { OrderOfCustomer = new OrderByPhone(); } else if (TypeOfOrder == "OrderByEmail") { OrderOfCustomer = new OrderByEmail(); } if (surnameOfTheCuctomer.Text != null) { OrderOfCustomer.SurnameOfTheCustomer = surnameOfTheCuctomer.Text; // добавление введенной пользователем фамилии заказчика } else { MessageBox.Show("Enter the surname of the customer"); flag = false; } if (phoneNumber.Text != null) { OrderOfCustomer.phoneNumber = phoneNumber.Text; // добавление номера телефона } else { MessageBox.Show("Enter the phone number of the customer"); flag = false; } if (emailAdress.Text != null && TypeOfOrder == "OrderByEmail") // добавление адреса эл. почты, если заказ сделан по эл. почте { var Order = (OrderByEmail)OrderOfCustomer; Order.Email = emailAdress.Text; OrderOfCustomer = Order; } else if (TypeOfOrder == "OrderByEmail") { MessageBox.Show("Enter email of the customer"); flag = false; } for (int i = 0; i < authors.Count; i++) { if (authors[i].Visibility == Visibility.Visible && authors[i].Text != null && names[i].Text != null && numbersOfCopies[i].Text != null) { Book book = null; string[] initialsOfAuthor = authors[i].Text.Split(delimitors, StringSplitOptions.RemoveEmptyEntries); if (initialsOfAuthor.Length > 1) { for (int l = 1; l < initialsOfAuthor.Length; l++) { initialsOfAuthor[0] += ' ' + initialsOfAuthor[l]; } } string author = initialsOfAuthor[0]; // автор, введенный в TextBox foreach (Book p in SystemOfBookStore.booksInStore.Keys) { string[] elements = p.Author.Split(' '); if (p.Author == author) // сопоставление этого автора с авторами имеющихся в магазине книг { book = p; break; } else { foreach (string el in elements) { if (el == author) { book = p; break; } } if (book != null) { break; } } if (i == (authors.Count - 1) && book == null) { flag = false; MessageBox.Show("Books of this author are not found."); } } string[] partsOfNameOfTheBook = names[i].Text.Split(delimitors, StringSplitOptions.RemoveEmptyEntries); if (partsOfNameOfTheBook.Length > 1) { for (int k = 1; k < partsOfNameOfTheBook.Length; k++) { partsOfNameOfTheBook[0] += ' ' + partsOfNameOfTheBook[k]; } } string nameOfTheBook = partsOfNameOfTheBook[0]; // название книги из TextBox if (nameOfTheBook != "new") { if (book != null && book.Name != nameOfTheBook) { bool flag1 = false; foreach (Book p in SystemOfBookStore.booksInStore.Keys) { if (p.Author == book.Author && p.Name == nameOfTheBook) { flag1 = true; // сравнение полученного названия книги с имеющимися в магазине, определение заказываемой книги book = p; break; } } if (!flag1) { flag = false; MessageBox.Show("Check that the book information you entered is correct!"); break; } } } else if (nameOfTheBook == "new" && book != null) { foreach (Book p in SystemOfBookStore.booksInStore.Keys) // определение новой книги автора { if (book.Author == p.Author && p.YearOfEdition > book.YearOfEdition) { book = p; } } } if (book != null) { if (!OrderOfCustomer.OrderedBoooks.ContainsKey(book)) { OrderOfCustomer.OrderedBoooks.Add(book, int.Parse(numbersOfCopies[i].Text)); // добавление полученной книги в список заказываемых книг текущего заказа } else { OrderOfCustomer.OrderedBoooks[book] += int.Parse(numbersOfCopies[i].Text); // если книга уже есть в списке, то добавление кол-ва ее экземпляров } } } else if (authors[i].Visibility == Visibility.Visible) { flag = false; MessageBox.Show("Check that the book information you entered is correct!"); break; } } WorkOfSystem work = this.Owner as WorkOfSystem; if (work != null && flag == true) { OrderOfCustomer.DayWhenOrderWasMade = int.Parse(work.currentDay.Text); // получения дня, когда заказ был сделан this.Close(); work.WindowStartupLocation = WindowStartupLocation.CenterOwner; // закрытие окна заказа, возвращение к окну WorkOfSystem work.Show(); work.SellBooks(OrderOfCustomer); // продажа книг в текущем заказе, если они есть в наличии if (OrderOfCustomer.OrderedBoooks.Count == 0) { work.SystemOfBookStore.outstandingOrders.Remove(OrderOfCustomer); // если все книги уже куплены заказчиком, то его заказ удаляется } else { work.SystemOfBookStore.outstandingOrders.Add(OrderOfCustomer); // добавление заказа в список невыполненных заказов } } }