async public Task <ServerStatus> GetUserAsync(WPPod.Models.User userSeed) { ServerStatus status = new ServerStatus( ServerStatus.NEST_RESULT_ERROR); if (IsBusy) { return(status); } IsBusy = true; try { status = await ResultSingle <WPPod.Models.User> .WaitForObjectAsync( false, userSeed, new CachedHttpRequest <WPPod.Models.User>( NesterControl.DeployedApp.QueryAsync), false); if (status.Code >= 0) { _user = status.PayloadToObject <WPPod.Models.User>(); OnPropertyChanged("EditUser"); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } return(status); }
async public Task <ServerStatus> SubmitOrderAsync() { ServerStatus status = new ServerStatus( ServerStatus.NEST_RESULT_ERROR); if (IsBusy) { return(status); } IsBusy = true; try { _order.User = _user; status = await ResultSingle <WPPod.Models.Order> .WaitForObjectAsync( false, _order, new CachedHttpRequest <WPPod.Models.Order>( NesterControl.DeployedApp.CreateAsync), false); if (status.Code >= 0) { var orderItems = _order.Items; _order = status.PayloadToObject <WPPod.Models.Order>(); foreach (var orderItem in orderItems) { orderItem.Order = _order; status = await ResultSingle <WPPod.Models.OrderItem> .WaitForObjectAsync( false, orderItem, new CachedHttpRequest <WPPod.Models.OrderItem>( NesterControl.DeployedApp.CreateAsync), false); if (status.Code < 0) { return(status); } } EditOrder.Items.Clear(); OnPropertyChanged("EditOrder"); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } return(status); }
async void OnLoginButtonClicked(object sender, EventArgs e) { try { if (!IsValidEmail(EmailEntry.Text)) { throw new Exception(); } var user = new User { Email = EmailEntry.Text, Pin = PinEntry.Text, UseEmailAsKey = true }; ServerStatus status = await _userViewModel.GetUserAsync(user); if (status.Code < 0) { status = await _userViewModel.CreateUserAsync(user); } OrderViewModel ordersViewModel = new OrderViewModel(); ordersViewModel.User = status.PayloadToObject <User>(); await ordersViewModel.LoadMenusAsync(); Navigation.InsertPageBefore(new WPPodUser.MainPage(ordersViewModel), this); await Navigation.PopAsync(); } catch { messageLabel.Text = "Login failed"; PinEntry.Text = string.Empty; } }
async public Task LoadOrdersAsync(DateTime date) { if (IsBusy) { return; } IsBusy = true; try { WPPod.Models.Order orderSeed = new WPPod.Models.Order(); Dictionary <string, string> filter = new Dictionary <string, string>(); filter["date"] = date.ToString("yyyy-MM-dd"); ServerStatus status = await ResultMultiple <WPPod.Models.Order> .WaitForObjectAsync( NesterControl.DeployedApp, true, orderSeed, false, filter); if (status.Code >= 0) { _orders = status.PayloadToList <WPPod.Models.Order>(); WPPod.Models.OrderItem itemSeed = new WPPod.Models.OrderItem(); foreach (var order in _orders) { itemSeed.Order = order; status = await ResultMultiple <WPPod.Models.OrderItem> .WaitForObjectAsync( NesterControl.DeployedApp, true, itemSeed); if (status.Code >= 0) { order.Items = status.PayloadToList <WPPod.Models.OrderItem>(); WPPod.Models.MenuItem menuItemSeed = new WPPod.Models.MenuItem(); foreach (var orderItem in order.Items) { menuItemSeed.Menu = new WPPod.Models.Menu(); menuItemSeed.Menu.Id = orderItem.MenuId; menuItemSeed.Id = orderItem.MenuItemId; status = await ResultSingle <WPPod.Models.MenuItem> .WaitForObjectAsync( true, menuItemSeed, new CachedHttpRequest <WPPod.Models.MenuItem>( NesterControl.DeployedApp.QueryAsync), false, null, null); orderItem.MenuItem = status.PayloadToObject <WPPod.Models.MenuItem>(); } } } OnPropertyChanged("Orders"); } } catch (Exception ex) { Debug.WriteLine(ex); } finally { IsBusy = false; } }