Beispiel #1
0
        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;
        }
Beispiel #2
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();
        }
Beispiel #3
0
        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();
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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;
        }