コード例 #1
0
        private async Task ProcessSelectedTableAsync(Table tableSelected)
        {
            tableSelected.IsOccupied = true;

            //Change what the app's current table is.
            OrderManager.Instance.UpdateCurrentTable(tableSelected);

            var dbTable = await WcfServicesProxy.Instance.GetTableAsync((int)tableSelected.TableId);

            //var dbTable = WcfServicesProxy.Instance.GetTable((int)tableSelected.TableId);

            tableSelected.DatabaseTable = dbTable;

            if (dbTable.Guests != null)
            {
                Tables.AllTables[tableSelected.IndexInAllTables] = tableSelected;
                if (dbTable.Guests.Count > 0)
                {
                    List <GuestItem>      guestItems      = new List <GuestItem>();
                    List <GuestComboItem> comboGuestItems = new List <GuestComboItem>();

                    decimal[] guestIds = new decimal[2];
                    for (int i = 0; i < dbTable.Guests.Count; i++)
                    {
                        if (i <= 1)
                        {
                            guestIds[i] = dbTable.Guests[i].ID;
                        }
                        guestItems.AddRange(dbTable.Guests[i].Items);
                        comboGuestItems.AddRange(dbTable.Guests[i].ComboItems);
                    }

                    Order openOrder = null;
                    if (guestItems.Count > 0 || comboGuestItems.Count > 0)
                    {
                        openOrder = DataConversion.ConvertDbGuestsToOrder(guestIds, guestItems, comboGuestItems, tableSelected.TableId, tableSelected.IndexInAllTables);
                        OrderManager.Instance.OrderInProgress = openOrder;
                        if (!openOrder.AllItemsSent)
                        {
                            tableSelected.HasUnsentOrder = true;
                        }
                    }

                    //used just during testing so that orders can be looked at without sending to server
                    if (openOrder != null)
                    {
                        Tables.AllTables[tableSelected.IndexInAllTables].OpenOrder = openOrder;
                        DisplayOrderPage();
                        return;
                    }
                }
            }

            //used just during testing so that orders can be looked at without sending to server.
            //Only if no orders on server, see if OpenOrders for this table on this phone...
            var orderForThisTable = Tables.AllTables[tableSelected.IndexInAllTables].OpenOrder;

            if (orderForThisTable != null)
            {
                if (!orderForThisTable.AllItemsSent)
                {
                    tableSelected.HasUnsentOrder = true;
                }
                OrderManager.Instance.OrderInProgress = orderForThisTable;
                DisplayOrderPage();
            }
            else
            //if no open orders out there for this table, start a new order.
            {
                OrderManager.Instance.InitializeOrderInProgress();
                try
                {
                    DisplayDrinksPage();
                }
                catch (Exception ex)
                {
                    var error = ex.InnerException;
                    throw;
                }
            }

            //else if (await TableHasOpenChecks(tableSelected.TableId))
            //Are there checks on server for that table (not on phone)?  If, so
            //load that order and bring up summary.
            //{
            //    var checks = await WcfServicesProxy.Instance.GetOpenChecksAsync(tableSelected.TableId);
            //    foreach (var check in checks)
            //    {
            //        var openOrder = DataConversion.ConvertDbCheckToOrder(check, tableSelected.TableId);
            //        Tables.AllTables[tableSelected.IndexInAllTables].OpenOrders.Add(openOrder);
            //    }

            //    OrderManager.Instance.OrderInProgress = ordersForThisTable[0];
            //    DisplayOrderPage();
            //}
        }