Added more basket API methods
This commit is contained in:
parent
84c09e6236
commit
c380359fc6
@ -23,6 +23,7 @@ namespace eShopOnContainers.Core.Controls
|
||||
}
|
||||
|
||||
var index = 0;
|
||||
|
||||
foreach (var item in ItemsSource)
|
||||
{
|
||||
if (index == SelectedIndex)
|
||||
@ -30,6 +31,7 @@ namespace eShopOnContainers.Core.Controls
|
||||
SelectedItem = item;
|
||||
break;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
};
|
||||
@ -62,6 +64,7 @@ namespace eShopOnContainers.Core.Controls
|
||||
if (ItemsSource != null)
|
||||
{
|
||||
var index = 0;
|
||||
|
||||
foreach (var item in ItemsSource)
|
||||
{
|
||||
string strItem = item?.ToString();
|
||||
@ -73,6 +76,7 @@ namespace eShopOnContainers.Core.Controls
|
||||
selectedIndex = index;
|
||||
break;
|
||||
}
|
||||
|
||||
index++;
|
||||
}
|
||||
}
|
||||
@ -102,12 +106,10 @@ namespace eShopOnContainers.Core.Controls
|
||||
{
|
||||
var boundPicker = (BindablePicker)bindable;
|
||||
|
||||
if (boundPicker.ItemSelected != null)
|
||||
{
|
||||
boundPicker.ItemSelected(boundPicker, new SelectedItemChangedEventArgs(newValue));
|
||||
}
|
||||
boundPicker.ItemSelected?.Invoke(boundPicker,
|
||||
new SelectedItemChangedEventArgs(newValue));
|
||||
|
||||
boundPicker.InternalUpdateSelectedIndex();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -7,5 +7,7 @@
|
||||
public const string CatalogEndpoint = "http://104.40.62.65:5101/";
|
||||
|
||||
public const string BasketEndpoint = "http://104.40.62.65:5103/";
|
||||
|
||||
public const string IdentityEndpoint = "http://104.40.62.65:5105/";
|
||||
}
|
||||
}
|
@ -67,11 +67,14 @@ namespace eShopOnContainers.Core.Models.Basket
|
||||
get { return _quantity; }
|
||||
set
|
||||
{
|
||||
_quantity = value;
|
||||
RaisePropertyChanged(() => Quantity);
|
||||
RaisePropertyChanged(() => Total);
|
||||
if (_quantity != value)
|
||||
{
|
||||
_quantity = value;
|
||||
RaisePropertyChanged(() => Quantity);
|
||||
RaisePropertyChanged(() => Total);
|
||||
|
||||
MessagingCenter.Send(this, MessengerKeys.UpdateProduct);
|
||||
MessagingCenter.Send(this, MessengerKeys.UpdateProduct);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,6 @@ using eShopOnContainers.Core.ViewModels.Base;
|
||||
using eShopOnContainers.ViewModels.Base;
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Orders
|
||||
{
|
||||
@ -71,8 +70,6 @@ namespace eShopOnContainers.Core.Models.Orders
|
||||
_quantity = value;
|
||||
RaisePropertyChanged(() => Quantity);
|
||||
RaisePropertyChanged(() => Total);
|
||||
|
||||
MessagingCenter.Send(this, MessengerKeys.UpdateProduct);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,7 +2,6 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Basket
|
||||
{
|
||||
@ -38,5 +37,15 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
return MockCustomBasket;
|
||||
}
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser)
|
||||
{
|
||||
await Task.Delay(500);
|
||||
|
||||
if (!string.IsNullOrEmpty(guidUser))
|
||||
{
|
||||
MockCustomBasket.Items.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -49,5 +49,16 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.BasketEndpoint);
|
||||
|
||||
builder.Path = guidUser;
|
||||
|
||||
string uri = builder.ToString();
|
||||
|
||||
await _requestProvider.DeleteAsync(uri);
|
||||
}
|
||||
}
|
||||
}
|
@ -7,5 +7,6 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
{
|
||||
Task<CustomerBasket> GetBasketAsync(string guidUser);
|
||||
Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket);
|
||||
Task ClearBasketAsync(string guidUser);
|
||||
}
|
||||
}
|
@ -13,5 +13,7 @@ namespace eShopOnContainers.Core.Services.RequestProvider
|
||||
Task<TResult> PutAsync<TResult>(string uri, TResult data);
|
||||
|
||||
Task<TResult> PutAsync<TRequest, TResult>(string uri, TRequest data);
|
||||
|
||||
Task DeleteAsync(string uri);
|
||||
}
|
||||
}
|
||||
}
|
@ -77,6 +77,13 @@ namespace eShopOnContainers.Core.Services.RequestProvider
|
||||
return await Task.Run(() => JsonConvert.DeserializeObject<TResult>(responseData, _serializerSettings));
|
||||
}
|
||||
|
||||
public async Task DeleteAsync(string uri)
|
||||
{
|
||||
HttpClient httpClient = CreateHttpClient();
|
||||
|
||||
await httpClient.DeleteAsync(uri);
|
||||
}
|
||||
|
||||
private HttpClient CreateHttpClient()
|
||||
{
|
||||
var httpClient = new HttpClient();
|
||||
|
@ -1,6 +1,5 @@
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Models.Catalog;
|
||||
using eShopOnContainers.Core.Models.Orders;
|
||||
using eShopOnContainers.Core.Models.User;
|
||||
using eShopOnContainers.Core.Services.Basket;
|
||||
using eShopOnContainers.Core.Services.User;
|
||||
@ -69,10 +68,9 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
{
|
||||
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) =>
|
||||
{
|
||||
BadgeCount = arg.Count;
|
||||
|
||||
foreach (var basketItem in arg)
|
||||
{
|
||||
BadgeCount += basketItem.Quantity;
|
||||
AddBasketItem(basketItem);
|
||||
}
|
||||
});
|
||||
@ -84,7 +82,7 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
AddCatalogItem(arg);
|
||||
});
|
||||
|
||||
MessagingCenter.Subscribe<OrderItem>(this, MessengerKeys.UpdateProduct, (sender) =>
|
||||
MessagingCenter.Subscribe<BasketItem>(this, MessengerKeys.UpdateProduct, (sender) =>
|
||||
{
|
||||
ReCalculateTotal();
|
||||
});
|
||||
@ -126,12 +124,16 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
{
|
||||
Total = 0;
|
||||
|
||||
if (BasketItems == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach (var orderItem in BasketItems)
|
||||
{
|
||||
Total += (orderItem.Quantity * orderItem.UnitPrice);
|
||||
}
|
||||
|
||||
|
||||
|
||||
_basketService.UpdateBasketAsync(new CustomerBasket
|
||||
{
|
||||
BuyerId = _user.GuidUser,
|
||||
|
@ -11,6 +11,7 @@ using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using System.Collections.Generic;
|
||||
using eShopOnContainers.Core.Services.Basket;
|
||||
|
||||
namespace eShopOnContainers.Core.ViewModels
|
||||
{
|
||||
@ -21,9 +22,12 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
private User _user;
|
||||
|
||||
private IUserService _userService;
|
||||
private IBasketService _basketService;
|
||||
|
||||
public CheckoutViewModel(IUserService userService)
|
||||
public CheckoutViewModel(IUserService userService,
|
||||
IBasketService basketService)
|
||||
{
|
||||
_basketService = basketService;
|
||||
_userService = userService;
|
||||
}
|
||||
|
||||
@ -86,10 +90,12 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
|
||||
private async void Checkout()
|
||||
{
|
||||
await _basketService.ClearBasketAsync(User.GuidUser);
|
||||
|
||||
await NavigationService.NavigateToAsync<MainViewModel>(new TabParameter { TabIndex = 1 });
|
||||
await NavigationService.RemoveLastFromBackStackAsync();
|
||||
|
||||
await DialogService.ShowAlertAsync("Order sent successfully", string.Format("Order {0}", Order.OrderNumber), "Ok");
|
||||
await DialogService.ShowAlertAsync("Order sent successfully!", string.Format("Order {0}", Order.OrderNumber), "Ok");
|
||||
await NavigationService.RemoveLastFromBackStackAsync();
|
||||
}
|
||||
|
||||
@ -124,4 +130,4 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
return total;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -176,7 +176,8 @@
|
||||
</Grid.RowDefinitions>
|
||||
<ListView
|
||||
Grid.Row="0"
|
||||
ItemsSource="{Binding Order.OrderItems}"
|
||||
ItemsSource="{Binding Order.OrderItems}"
|
||||
HeightRequest="{Binding Order.OrderItems.Count, Converter={StaticResource ItemsToHeightConverter}}"
|
||||
HasUnevenRows="True"
|
||||
SeparatorVisibility="None"
|
||||
VerticalOptions="FillAndExpand"
|
||||
|
@ -56,6 +56,8 @@
|
||||
|
||||
<Style x:Key="QuantityPickerStyle"
|
||||
TargetType="{x:Type controls:BindablePicker}">
|
||||
<Setter Property="TextColor"
|
||||
Value="{StaticResource BlackColor}" />
|
||||
<Setter Property="BackgroundColor"
|
||||
Value="Transparent" />
|
||||
<Setter Property="HorizontalOptions"
|
||||
@ -139,7 +141,7 @@
|
||||
<controls:BindablePicker
|
||||
Grid.Column="1"
|
||||
ItemsSource="{Binding Numbers}"
|
||||
SelectedItem="{Binding Quantity, Mode=TwoWay}"
|
||||
SelectedItem="{Binding Quantity, Mode=TwoWay}"
|
||||
Style="{StaticResource QuantityPickerStyle}">
|
||||
<controls:BindablePicker.WidthRequest>
|
||||
<OnPlatform
|
||||
|
@ -8,7 +8,6 @@ using System.Linq;
|
||||
using Xamarin.Forms;
|
||||
using Xamarin.Forms.Internals;
|
||||
using Xamarin.Forms.Platform.UWP;
|
||||
using UI = Windows.UI;
|
||||
using Xaml = Windows.UI.Xaml;
|
||||
|
||||
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedPageRenderer))]
|
||||
|
Loading…
x
Reference in New Issue
Block a user