private void TableAppSubscriber_NotifyOrderEndedEvent(object sender, EndOrderModel endOrderModel) { if (!IsSomethingOrdered) //Z jakiegoś powodu wykonuje się dwukrotnie... { return; } var dispatcher = Application.Current.Dispatcher; var endOrderMessage = endOrderModel.OrderCancelled ? $"Your order was cancelled: {endOrderModel.OrderCancelledReason}" : "Your order was processed successfully."; Action showMessageAction = () => { ModernDialog.ShowMessage(endOrderMessage, "Order was closed", MessageBoxButton.OK, Application.Current.MainWindow); }; if (dispatcher == null || dispatcher.CheckAccess()) { showMessageAction.Invoke(); } else { dispatcher.Invoke(showMessageAction); } IsSomethingOrdered = false; AddedElements.Clear(); TotalPrice = 0; }
public void Order() { if (IsSomethingOrdered) { var notOrderedItems = AddedElements.Where(x => x.Ordered == false).ToArray(); _tableConnectionProvider.OrderMoreItems(notOrderedItems); foreach (var item in notOrderedItems) { //Zakomentowane, aby lepiej odzwierciedlić aktualny stan zamówienia. Ponadto, łatwiej tak będzie zaznaczyć konkretny element zamówienia jako gotowy. //AddedElements.Remove(item); //var sameTypeElement = AddedElements.FirstOrDefault(x => x.Title == item.Title); //if (sameTypeElement != null) // sameTypeElement.Quantities += item.Quantities; //else //{ item.Ordered = true; //AddedElements.Add(item); //} } } else { _tableConnectionProvider.MakeNewOrder(AddedElements); foreach (var element in AddedElements) { element.Ordered = true; } IsSomethingOrdered = true; } AddedElements.Refresh(); }
private void TableAppSubscriber_OrderItemStateChangedEvent(object sender, OrderItemState e) { var element = AddedElements.FirstOrDefault(omi => omi.Id == e.MenuItemId && omi.Quantities == e.Quantity && omi.Ready != e.Ready); //Może zamiast sprawdzania po menuitemid i quantities (nie gwarantuje unikalności), lepiej przekazywać menuitemquantityId i po tym sprawdzać ? if (element != null) { element.Ready = e.Ready; } AddedElements.Refresh(); }
private void TableAppSubscriberOnReservationOrderScheduledEvent(object sender, ReservationOrderScheduledModel reservationOrderScheduledModel) { //TODO: Przerwać trwające zamówienie IsSomethingOrdered = false; AddedElements.Clear(); TotalPrice = 0; foreach (var menuItem in reservationOrderScheduledModel.MenuItems) { var item = Elements.FirstOrDefault(el => el.MenuItemId == menuItem.MenuItemId); for (int i = 0; i < menuItem.Quantities; i++) //TODO: Napisać to mądrzej... { AddNewItem(item); } } ModernInputDialogMessageBoxResult result = null; Action showMessageAction = () => { result = ModernInputDialog.ShowInputMessage("Unlock code:", "RESERVATION", MessageBoxButton.OKCancel, Application.Current.MainWindow); }; var dispatcher = Application.Current.Dispatcher; do { if (dispatcher == null || dispatcher.CheckAccess()) { showMessageAction.Invoke(); } else { dispatcher.Invoke(showMessageAction); } } while (result.MessageBoxResult != MessageBoxResult.OK || !result.Input.Equals(reservationOrderScheduledModel.UnlockCode)); }
public void AddNewItem(MenuItemView addingMenuItem) { var element = AddedElements.FirstOrDefault(x => x.Id == addingMenuItem.MenuItemId && !x.Ordered); if (element != null) { element.Quantities++; AddedElements.Refresh(); } else { AddedElements.Add(new OrderMenuItemModel() { Id = addingMenuItem.MenuItemId, Price = addingMenuItem.Price, Ordered = false, Quantities = 1, Title = addingMenuItem.Title }); } TotalPrice += addingMenuItem.Price; }