예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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;
            }
        }
예제 #4
0
        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;
            }
        }