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;
|
var index = 0;
|
||||||
|
|
||||||
foreach (var item in ItemsSource)
|
foreach (var item in ItemsSource)
|
||||||
{
|
{
|
||||||
if (index == SelectedIndex)
|
if (index == SelectedIndex)
|
||||||
@ -30,6 +31,7 @@ namespace eShopOnContainers.Core.Controls
|
|||||||
SelectedItem = item;
|
SelectedItem = item;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@ -62,6 +64,7 @@ namespace eShopOnContainers.Core.Controls
|
|||||||
if (ItemsSource != null)
|
if (ItemsSource != null)
|
||||||
{
|
{
|
||||||
var index = 0;
|
var index = 0;
|
||||||
|
|
||||||
foreach (var item in ItemsSource)
|
foreach (var item in ItemsSource)
|
||||||
{
|
{
|
||||||
string strItem = item?.ToString();
|
string strItem = item?.ToString();
|
||||||
@ -73,6 +76,7 @@ namespace eShopOnContainers.Core.Controls
|
|||||||
selectedIndex = index;
|
selectedIndex = index;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -102,10 +106,8 @@ namespace eShopOnContainers.Core.Controls
|
|||||||
{
|
{
|
||||||
var boundPicker = (BindablePicker)bindable;
|
var boundPicker = (BindablePicker)bindable;
|
||||||
|
|
||||||
if (boundPicker.ItemSelected != null)
|
boundPicker.ItemSelected?.Invoke(boundPicker,
|
||||||
{
|
new SelectedItemChangedEventArgs(newValue));
|
||||||
boundPicker.ItemSelected(boundPicker, new SelectedItemChangedEventArgs(newValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
boundPicker.InternalUpdateSelectedIndex();
|
boundPicker.InternalUpdateSelectedIndex();
|
||||||
}
|
}
|
||||||
|
@ -7,5 +7,7 @@
|
|||||||
public const string CatalogEndpoint = "http://104.40.62.65:5101/";
|
public const string CatalogEndpoint = "http://104.40.62.65:5101/";
|
||||||
|
|
||||||
public const string BasketEndpoint = "http://104.40.62.65:5103/";
|
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; }
|
get { return _quantity; }
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_quantity = value;
|
if (_quantity != value)
|
||||||
RaisePropertyChanged(() => Quantity);
|
{
|
||||||
RaisePropertyChanged(() => Total);
|
_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 eShopOnContainers.ViewModels.Base;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.ObjectModel;
|
using System.Collections.ObjectModel;
|
||||||
using Xamarin.Forms;
|
|
||||||
|
|
||||||
namespace eShopOnContainers.Core.Models.Orders
|
namespace eShopOnContainers.Core.Models.Orders
|
||||||
{
|
{
|
||||||
@ -71,8 +70,6 @@ namespace eShopOnContainers.Core.Models.Orders
|
|||||||
_quantity = value;
|
_quantity = value;
|
||||||
RaisePropertyChanged(() => Quantity);
|
RaisePropertyChanged(() => Quantity);
|
||||||
RaisePropertyChanged(() => Total);
|
RaisePropertyChanged(() => Total);
|
||||||
|
|
||||||
MessagingCenter.Send(this, MessengerKeys.UpdateProduct);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using System;
|
|
||||||
|
|
||||||
namespace eShopOnContainers.Core.Services.Basket
|
namespace eShopOnContainers.Core.Services.Basket
|
||||||
{
|
{
|
||||||
@ -38,5 +37,15 @@ namespace eShopOnContainers.Core.Services.Basket
|
|||||||
|
|
||||||
return MockCustomBasket;
|
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;
|
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> GetBasketAsync(string guidUser);
|
||||||
Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket);
|
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<TResult>(string uri, TResult data);
|
||||||
|
|
||||||
Task<TResult> PutAsync<TRequest, TResult>(string uri, TRequest 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));
|
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()
|
private HttpClient CreateHttpClient()
|
||||||
{
|
{
|
||||||
var httpClient = new HttpClient();
|
var httpClient = new HttpClient();
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
using eShopOnContainers.Core.Models.Basket;
|
using eShopOnContainers.Core.Models.Basket;
|
||||||
using eShopOnContainers.Core.Models.Catalog;
|
using eShopOnContainers.Core.Models.Catalog;
|
||||||
using eShopOnContainers.Core.Models.Orders;
|
|
||||||
using eShopOnContainers.Core.Models.User;
|
using eShopOnContainers.Core.Models.User;
|
||||||
using eShopOnContainers.Core.Services.Basket;
|
using eShopOnContainers.Core.Services.Basket;
|
||||||
using eShopOnContainers.Core.Services.User;
|
using eShopOnContainers.Core.Services.User;
|
||||||
@ -69,10 +68,9 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
{
|
{
|
||||||
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) =>
|
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) =>
|
||||||
{
|
{
|
||||||
BadgeCount = arg.Count;
|
|
||||||
|
|
||||||
foreach (var basketItem in arg)
|
foreach (var basketItem in arg)
|
||||||
{
|
{
|
||||||
|
BadgeCount += basketItem.Quantity;
|
||||||
AddBasketItem(basketItem);
|
AddBasketItem(basketItem);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -84,7 +82,7 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
AddCatalogItem(arg);
|
AddCatalogItem(arg);
|
||||||
});
|
});
|
||||||
|
|
||||||
MessagingCenter.Subscribe<OrderItem>(this, MessengerKeys.UpdateProduct, (sender) =>
|
MessagingCenter.Subscribe<BasketItem>(this, MessengerKeys.UpdateProduct, (sender) =>
|
||||||
{
|
{
|
||||||
ReCalculateTotal();
|
ReCalculateTotal();
|
||||||
});
|
});
|
||||||
@ -126,12 +124,16 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
{
|
{
|
||||||
Total = 0;
|
Total = 0;
|
||||||
|
|
||||||
|
if (BasketItems == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
foreach (var orderItem in BasketItems)
|
foreach (var orderItem in BasketItems)
|
||||||
{
|
{
|
||||||
Total += (orderItem.Quantity * orderItem.UnitPrice);
|
Total += (orderItem.Quantity * orderItem.UnitPrice);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
_basketService.UpdateBasketAsync(new CustomerBasket
|
_basketService.UpdateBasketAsync(new CustomerBasket
|
||||||
{
|
{
|
||||||
BuyerId = _user.GuidUser,
|
BuyerId = _user.GuidUser,
|
||||||
|
@ -11,6 +11,7 @@ using System.Collections.ObjectModel;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using eShopOnContainers.Core.Models.Basket;
|
using eShopOnContainers.Core.Models.Basket;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using eShopOnContainers.Core.Services.Basket;
|
||||||
|
|
||||||
namespace eShopOnContainers.Core.ViewModels
|
namespace eShopOnContainers.Core.ViewModels
|
||||||
{
|
{
|
||||||
@ -21,9 +22,12 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
private User _user;
|
private User _user;
|
||||||
|
|
||||||
private IUserService _userService;
|
private IUserService _userService;
|
||||||
|
private IBasketService _basketService;
|
||||||
|
|
||||||
public CheckoutViewModel(IUserService userService)
|
public CheckoutViewModel(IUserService userService,
|
||||||
|
IBasketService basketService)
|
||||||
{
|
{
|
||||||
|
_basketService = basketService;
|
||||||
_userService = userService;
|
_userService = userService;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -86,10 +90,12 @@ namespace eShopOnContainers.Core.ViewModels
|
|||||||
|
|
||||||
private async void Checkout()
|
private async void Checkout()
|
||||||
{
|
{
|
||||||
|
await _basketService.ClearBasketAsync(User.GuidUser);
|
||||||
|
|
||||||
await NavigationService.NavigateToAsync<MainViewModel>(new TabParameter { TabIndex = 1 });
|
await NavigationService.NavigateToAsync<MainViewModel>(new TabParameter { TabIndex = 1 });
|
||||||
await NavigationService.RemoveLastFromBackStackAsync();
|
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();
|
await NavigationService.RemoveLastFromBackStackAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -177,6 +177,7 @@
|
|||||||
<ListView
|
<ListView
|
||||||
Grid.Row="0"
|
Grid.Row="0"
|
||||||
ItemsSource="{Binding Order.OrderItems}"
|
ItemsSource="{Binding Order.OrderItems}"
|
||||||
|
HeightRequest="{Binding Order.OrderItems.Count, Converter={StaticResource ItemsToHeightConverter}}"
|
||||||
HasUnevenRows="True"
|
HasUnevenRows="True"
|
||||||
SeparatorVisibility="None"
|
SeparatorVisibility="None"
|
||||||
VerticalOptions="FillAndExpand"
|
VerticalOptions="FillAndExpand"
|
||||||
|
@ -56,6 +56,8 @@
|
|||||||
|
|
||||||
<Style x:Key="QuantityPickerStyle"
|
<Style x:Key="QuantityPickerStyle"
|
||||||
TargetType="{x:Type controls:BindablePicker}">
|
TargetType="{x:Type controls:BindablePicker}">
|
||||||
|
<Setter Property="TextColor"
|
||||||
|
Value="{StaticResource BlackColor}" />
|
||||||
<Setter Property="BackgroundColor"
|
<Setter Property="BackgroundColor"
|
||||||
Value="Transparent" />
|
Value="Transparent" />
|
||||||
<Setter Property="HorizontalOptions"
|
<Setter Property="HorizontalOptions"
|
||||||
|
@ -8,7 +8,6 @@ using System.Linq;
|
|||||||
using Xamarin.Forms;
|
using Xamarin.Forms;
|
||||||
using Xamarin.Forms.Internals;
|
using Xamarin.Forms.Internals;
|
||||||
using Xamarin.Forms.Platform.UWP;
|
using Xamarin.Forms.Platform.UWP;
|
||||||
using UI = Windows.UI;
|
|
||||||
using Xaml = Windows.UI.Xaml;
|
using Xaml = Windows.UI.Xaml;
|
||||||
|
|
||||||
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedPageRenderer))]
|
[assembly: ExportRenderer(typeof(TabbedPage), typeof(CustomTabbedPageRenderer))]
|
||||||
|
Loading…
x
Reference in New Issue
Block a user