コード例 #1
0
        /// <summary>
        /// APIを呼んでカートを更新する
        /// </summary>
        public async Task UpdateReceipt()
        {
            var service    = new CartApiService();
            var cartId     = this.CartId;
            var cartStatus = await service.CartStatusAsync(cartId, CartApiService.CartAction.bill);

            // ユーザー名
            this.lblUserName.Text = cartStatus.User.UserName;

            // レシートをListViewにBinding
            var cartList = cartStatus
                           .Cart
                           .LineItems
                           .Select(m => new
            {
                ItemName  = m.ItemName,
                UnitPrice = $"{m.UnitPrice:N0}",
                Num       = m.Amount,
                Quantity  = m.Quantity,
            });

            listView.BindingContext = cartList;

            this.lblTaxAmount.Text   = $"{cartStatus.Cart.Taxes[0].TaxAmount:N0}";
            this.lblTotalAmount.Text = $"{cartStatus.Cart.TotalAmount:N0}";
            var totalQuantities = cartStatus.Cart.LineItems.Sum(m => m.Quantity);

            this.lblTotalQuantities.Text = $"{totalQuantities}";

            // 入店時間
            lblEnterDate.Text = (Application.Current as App).EnterDate.ToString();
            // 最終更新日
            lblUpdateDate.Text = DateTime.Now.ToString();
        }
コード例 #2
0
        /// <summary>
        /// APIを呼んでカートを更新する
        /// </summary>
        public void UpdateCart()
        {
            var service = new CartApiService();
            var cartId  = this.CartId;

#if MOCK
            var cartStatus = Mock.CreateMockCart(1);
#else
            var cartStatus = await service.CartStatusAsync(cartId, CartApiService.CartAction.items);
#endif


            // 最終更新日
            lblUpdateDate.Text = DateTime.Now.ToString();

            // ユーザー名
            this.lblUserName.Text = cartStatus
                                    .User
                                    .UserName;

            // カートの商品をListViewにBinding

            if (cartStatus.Cart?.LineItems?.Length == 0)
            {
                // カートが空
                SetListViewVisible(false);
                return;
            }

            var cartList = cartStatus
                           .Cart
                           .LineItems
                           .OrderByDescending(m => m.LineNo)
                           .Select(m => new
            {
                ItemName  = m.ItemName,
                UnitPrice = $"{m.UnitPrice:N0}",
                Amount    = $"{m.Amount:N0}",
                Quantity  = m.Quantity,
                Image     = m.ImageUrls != null ? ImageSource.FromUri(new Uri(m.ImageUrls[0])) : null
            })
                           .ToList();
            listView.BindingContext = cartList;

            // 先頭に移動する
            listView.ScrollTo(cartList[0], ScrollToPosition.MakeVisible, false);

            var totalQuantities = cartStatus.Cart.LineItems.Sum(m => m.Quantity);
            this.lblTotalQuantities.Text = $"{totalQuantities}";
            this.lblTaxAmount.Text       = $"{cartStatus.Cart.Taxes[0].TaxAmount:N0}";
            this.lblTotalAmount.Text     = $"{cartStatus.Cart.TotalAmount:N0}";

            // カートに商品があればListViewを表示する
            SetListViewVisible(true);
        }
コード例 #3
0
        /// <summary>
        /// スキャンページに遷移する
        /// </summary>
        /// <returns></returns>
        private async Task ViewScanPageAsync()
        {
            try
            {
                // Box名を保存
                (Application.Current as App).BoxId = edtBoxName.Text;

                // インジケータを表示
                SetIndicator(true);

                // カメラでQRコードを撮影する
                var scanner    = DependencyService.Get <IQrScanningService>();
                var scanResult = await scanner.ScanAsync();

                if (scanResult != null)
                {
                    (Application.Current as App).BoxId = scanResult.Text;
                }

                // デバイスIDを取得
                var deviceId = await AppCenter.GetInstallIdAsync();

                // 取引開始
                var api        = new CartApiService();
                var cartResult = await api.CartStartAsync(new CartStart
                {
                    BoxId    = (Application.Current as App).BoxId,
                    DeviceId = deviceId.ToString()
                });

                // 取引開始で商品カートへ遷移
                if (cartResult != null && /*cartResult.IsSuccess*/ !string.IsNullOrEmpty(cartResult.CartId))
                {
                    (Application.Current as App).CartId = cartResult.CartId;
                    await this.Navigation.PushAsync(new RegisterPage(deviceId.Value.ToString(), false));
                }
                else
                {
                    await this.DisplayAlert("SmartRetail", $"買い物を開始できません\n{cartResult.ErrorMessage}", "OK");

                    // 取引開始できない場合はログインへ戻る
                    await this.Navigation.PopAsync();
                }

                //インジケータを隠す
                SetIndicator(false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
コード例 #4
0
        /// <summary>
        /// スキャンページに遷移する
        /// </summary>
        /// <returns></returns>
        private async Task ViewScanPageAsync()
        {
            try
            {
                // Box名を保存
                (Application.Current as App).BoxId = edtBoxName.Text;

                // インジケータを表示
                SetIndicator(true);

                // カメラでQRコードを撮影する
                var scanner    = DependencyService.Get <IQrScanningService>();
                var scanResult = await scanner.ScanAsync();

                if (scanResult != null)
                {
                    (Application.Current as App).BoxId = scanResult.Text;
                }

                // デバイスIDを取得
                var deviceId = (Application.Current as App)?.DeviceId;

                // 取引開始
                var api        = new CartApiService();
                var cartResult = await api.CartStartAsync(new CartStart
                {
                    BoxId    = (Application.Current as App).BoxId,
                    DeviceId = deviceId.ToString()
                });

                // 取引開始で商品カートへ遷移
                (Application.Current as App).CartId = cartResult.CartId;
                await this.Navigation.PushAsync(new RegisterPage(deviceId, false));

                //インジケータを隠す
                SetIndicator(false);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }