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(); //} }