示例#1
0
        /* Send order to kitchen and subsequently clear order data */
        private void DialogBoxAcceptExecute(object parameter)
        {
            POSOrder order            = new POSOrder();
            int      numOfOrderItems  = 0;
            int      iterationCounter = 0;

            // prepare order for submission to service
            for (int i = 0; i < Enum.GetNames(typeof(menuItemType)).Length; i++)
            {
                foreach (MenuItem item in menuOrderLists[i])
                {
                    numOfOrderItems++;
                }
            }
            order.menuItems = new POSMenuItem[numOfOrderItems];
            for (int i = 0; i < Enum.GetNames(typeof(menuItemType)).Length; i++)
            {
                for (int j = 0; j < menuOrderLists[i].Count; j++)
                {
                    POSMenuItem item = new POSMenuItem();
                    item.Price       = menuOrderLists[i][j].Price;
                    item.Product     = menuOrderLists[i][j].Product;
                    item.ProductType = (POSMenuItemEnum)menuOrderLists[i][j].ProductType;
                    item.Quantity    = menuOrderLists[i][j].Quantity;
                    order.menuItems[iterationCounter++] = item;
                }
            }
            order.SubTotal = float.Parse(Subtotal.Substring(1, Subtotal.Length - 1), CultureInfo.InvariantCulture.NumberFormat);
            order.Total    = float.Parse(Total.Substring(1, Total.Length - 1), CultureInfo.InvariantCulture.NumberFormat);

            // send order information to service
            eventAggregator.GetEvent <PlaceOrderEvent>().Publish(order);

            // delete all items in current order
            foreach (ObservableCollection <MenuItem> list in orderModel.menuOrderLists)
            {
                list.Clear();
            }

            // reset selected indices
            for (int i = 0; i < POSConstants.NUM_MENU_ORDER_TYPES; i++)
            {
                menuOrderListsSelectedIndex[i] = -1;
            }

            // recalculate new order price
            calcOrderPrice();

            // increment number of orders
            incrementOrder();

            // recheck order data
            removeOrderItemBtnICommand.RaiseCanExecuteChanged();

            // hide gray overlay
            takeOrderGrayOverlay = Visibility.Hidden;
            OnPropertyChanged("takeOrderGrayOverlay");
        }