예제 #1
0
        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  информации о книге(изменение кол-ва экземпляров и рейтинга после продажи)
        }
예제 #2
0
        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);           // добавление заказа в список невыполненных заказов
                }
            }
        }