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