private void nextDayButton_Click(object sender, RoutedEventArgs e) // клик по кнопке "следующий день работы" { if (CurrentDayOfWork < SystemOfBookStore.NumberOfDays) // если день работы меньше числа дней работы магазина { RequestToPublisher request = DetermineWhichBooksAreRequired(); // создание заявки if (request.rangeOfBooks.Count > 0) { SystemOfBookStore.NotifyPublishers(request); // уведомление издательств о новой заявке (получается, что заявка как бы отправляется в конце дня работы магазина) } CurrentDayOfWork++; if (CurrentDayOfWork == SystemOfBookStore.NumberOfDays) { nextDay.Visibility = Visibility.Hidden; // если последний день работы, то кнопка "следующий день работы" скрывается, resultOfTheWork.Visibility = Visibility.Visible; // а кнопка "результат работы" отображается } currentDay.Text = CurrentDayOfWork.ToString(); MessageBox.Show("Next day of work of the bookstore."); foreach (RequestToPublisher req in SystemOfBookStore.requests.ToArray()) { foreach (var book in req.rangeOfBooks.Keys.ToArray()) { if (req.rangeOfBooks[book][1] == CurrentDayOfWork) // просмотр заявок, если день привоза книги в заявке совпадает с текущим днем,то { MessageBox.Show(req.rangeOfBooks[book][0] + " copies of the book " + "''" + book.Name + "''" + " " + "of " + book.Author + " are received."); // делается сообщение о привозе экземпляров книги SystemOfBookStore.booksInStore[book] += req.rangeOfBooks[book][0]; // увеличивается число экземляров книги в магазине на число привезенных экземпляров req.rangeOfBooks.Remove(book); // удаление книги из невыполненной заявки (она уже привезена) if (req.rangeOfBooks.Count == 0) { SystemOfBookStore.requests.Remove(req); // если в заявке больше нет книг, то она удаляется } } } } rangeOfBookstore.Clear(); foreach (Book book in SystemOfBookStore.booksInStore.Keys) { rangeOfBookstore.Text += book.ToString() + "number of copies: " + SystemOfBookStore.booksInStore[book] + "\r\n" + "\r\n"; // обновление информации о книгах в TextBox } foreach (var order in SystemOfBookStore.outstandingOrders.ToArray()) // просмотр невыполненных заказов сразу после привоза книг { SellBooks(order); // продать книги заказчику if (order.OrderedBoooks.Count == 0) { SystemOfBookStore.outstandingOrders.Remove(order); } // если в заказе больше нет книг, то он удаляется из списка невыполненных заказов } } }
private RequestToPublisher DetermineWhichBooksAreRequired() // метод , определяющий, какие книги и сколько нужно закупить у издательств { RequestToPublisher newRequest = new RequestToPublisher(); // формирование новой заявки newRequest.DayWhenRequestWasMade = int.Parse(currentDay.Text); // определение дня отправления заявки foreach (Book book in SystemOfBookStore.booksInStore.Keys) { if (SystemOfBookStore.booksInStore[book] < SystemOfBookStore.NumberOfCopiesForRequest) // если число экземпляров книги меньше минимального и нужно заказать проивоз дополнительных экземпляров { bool flag = true; foreach (var request in SystemOfBookStore.requests) { if (request.rangeOfBooks.ContainsKey(book)) // если данная книга находится в невыполненных заявках, то заявку на нее снова не делаем { flag = false; break; } } if (flag) { newRequest.rangeOfBooks.Add(book, new int[] { 5, 100 }); // иначе добавляем в заявку информацию о книге (5-число заказываемых экземпляров, 100 - первоначальная установка дня привоза книги) if (SystemOfBookStore.booksInStore[book] == 0) { foreach (var order in SystemOfBookStore.outstandingOrders) { if (order.DayWhenOrderWasMade == int.Parse(currentDay.Text)) // кроме того, если книга, которой недостаточно в магазине, присутствует еще и в невыполненном заказе, { if (order.OrderedBoooks.ContainsKey(book)) { newRequest.rangeOfBooks[book][0] += order.OrderedBoooks[book]; // то прибавляем нужное для привоза кол-во экземпляров } } } } } } } return(newRequest); // метод возвращает заявку }