Changes in client APIs integration
This commit is contained in:
parent
a042894edd
commit
19da19fa84
@ -427,6 +427,8 @@ Global
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhone.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Build.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|iPhoneSimulator.Deploy.0 = Debug|x86
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Build.0 = Debug|x64
|
||||
{C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x64.Deploy.0 = Debug|x64
|
||||
@ -657,6 +659,7 @@ Global
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhone.Deploy.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.ActiveCfg = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|iPhoneSimulator.Build.0 = Debug|x86
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Build.0 = Debug|x64
|
||||
{02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x64.Deploy.0 = Debug|x64
|
||||
|
@ -0,0 +1,52 @@
|
||||
using System.Windows.Input;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace eShopOnContainers.Core.Behaviors
|
||||
{
|
||||
public sealed class ItemTappedCommandListViewBehavior
|
||||
{
|
||||
public static readonly BindableProperty ItemTappedCommandProperty =
|
||||
BindableProperty.CreateAttached(
|
||||
"ItemTappedCommand",
|
||||
typeof(ICommand),
|
||||
typeof(ItemTappedCommandListViewBehavior),
|
||||
default(ICommand),
|
||||
BindingMode.OneWay,
|
||||
null,
|
||||
PropertyChanged);
|
||||
|
||||
private static void PropertyChanged(BindableObject bindable, object oldValue, object newValue)
|
||||
{
|
||||
var listView = bindable as ListView;
|
||||
if (listView != null)
|
||||
{
|
||||
listView.ItemTapped -= ListViewOnItemTapped;
|
||||
listView.ItemTapped += ListViewOnItemTapped;
|
||||
}
|
||||
}
|
||||
|
||||
private static void ListViewOnItemTapped(object sender, ItemTappedEventArgs e)
|
||||
{
|
||||
var list = sender as ListView;
|
||||
if (list != null && list.IsEnabled && !list.IsRefreshing)
|
||||
{
|
||||
list.SelectedItem = null;
|
||||
var command = GetItemTappedCommand(list);
|
||||
if (command != null && command.CanExecute(e.Item))
|
||||
{
|
||||
command.Execute(e.Item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ICommand GetItemTappedCommand(BindableObject bindableObject)
|
||||
{
|
||||
return (ICommand)bindableObject.GetValue(ItemTappedCommandProperty);
|
||||
}
|
||||
|
||||
public static void SetItemTappedCommand(BindableObject bindableObject, object value)
|
||||
{
|
||||
bindableObject.SetValue(ItemTappedCommandProperty, value);
|
||||
}
|
||||
}
|
||||
}
|
@ -8,7 +8,10 @@ namespace eShopOnContainers.Core.Converters
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
return value.ToString().ToUpperInvariant();
|
||||
if (value != null)
|
||||
return value.ToString().ToUpperInvariant();
|
||||
else
|
||||
return value;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
|
@ -1,9 +1,12 @@
|
||||
using System;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Basket
|
||||
{
|
||||
public class BasketItem
|
||||
public class BasketItem : BindableObject
|
||||
{
|
||||
private int _quantity;
|
||||
|
||||
public string Id { get; set; }
|
||||
|
||||
public string ProductId { get; set; }
|
||||
@ -12,7 +15,15 @@ namespace eShopOnContainers.Core.Models.Basket
|
||||
|
||||
public decimal UnitPrice { get; set; }
|
||||
|
||||
public int Quantity { get; set; }
|
||||
public int Quantity
|
||||
{
|
||||
get { return _quantity; }
|
||||
set
|
||||
{
|
||||
_quantity = value;
|
||||
OnPropertyChanged("Quantity");
|
||||
}
|
||||
}
|
||||
|
||||
public string PictureUrl { get; set; }
|
||||
|
||||
|
@ -1,8 +0,0 @@
|
||||
namespace eShopOnContainers.Core.Models.Orders
|
||||
{
|
||||
public class CardType
|
||||
{
|
||||
public int Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
}
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Orders
|
||||
@ -17,19 +16,25 @@ namespace eShopOnContainers.Core.Models.Orders
|
||||
|
||||
public int SequenceNumber { get; set; }
|
||||
|
||||
[JsonProperty("date")]
|
||||
public DateTime OrderDate { get; set; }
|
||||
|
||||
[JsonProperty("status")]
|
||||
public OrderState State { get; set; }
|
||||
|
||||
[JsonProperty("city")]
|
||||
public string ShippingCity { get; set; }
|
||||
|
||||
[JsonProperty("street")]
|
||||
public string ShippingStreet { get; set; }
|
||||
|
||||
[JsonProperty("state")]
|
||||
public string ShippingState { get; set; }
|
||||
|
||||
[JsonProperty("country")]
|
||||
public string ShippingCountry { get; set; }
|
||||
|
||||
public string CardType { get; set; }
|
||||
public int CardTypeId { get; set; }
|
||||
|
||||
public string CardNumber { get; set; }
|
||||
|
||||
@ -39,22 +44,13 @@ namespace eShopOnContainers.Core.Models.Orders
|
||||
|
||||
public string CardSecurityNumber { get; set; }
|
||||
|
||||
[JsonProperty("items")]
|
||||
[JsonProperty("orderitems")]
|
||||
public List<OrderItem> OrderItems { get; set; }
|
||||
|
||||
public decimal Total { get { return CalculateTotal(); } }
|
||||
[JsonProperty("total")]
|
||||
public decimal Total { get; set; }
|
||||
|
||||
public string OrderNumber { get { return CalculateOrderNumber(); } }
|
||||
|
||||
|
||||
private decimal CalculateTotal()
|
||||
{
|
||||
return OrderItems.Sum(x => x.Quantity * x.UnitPrice);
|
||||
}
|
||||
|
||||
private string CalculateOrderNumber()
|
||||
{
|
||||
return string.Format("{0}/{1}-{2}", OrderDate.Year, OrderDate.Month, SequenceNumber);
|
||||
}
|
||||
[JsonProperty("ordernumber")]
|
||||
public string OrderNumber { get; set; }
|
||||
}
|
||||
}
|
@ -1,15 +1,25 @@
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
|
||||
namespace eShopOnContainers.Core.Models.Orders
|
||||
{
|
||||
public class OrderItem
|
||||
{
|
||||
public string ProductId { get; set; }
|
||||
public Guid OrderId { get; set; }
|
||||
public Guid? OrderId { get; set; }
|
||||
|
||||
[JsonProperty("unitprice")]
|
||||
public decimal UnitPrice { get; set; }
|
||||
|
||||
[JsonProperty("productname")]
|
||||
public string ProductName { get; set; }
|
||||
|
||||
[JsonProperty("pictureurl")]
|
||||
public string PictureUrl { get; set; }
|
||||
|
||||
[JsonProperty("units")]
|
||||
public int Quantity { get; set; }
|
||||
|
||||
public decimal Discount { get; set; }
|
||||
public decimal Total { get { return Quantity * UnitPrice; } }
|
||||
|
||||
|
@ -41,13 +41,20 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
public async Task<CustomerBasket> UpdateBasketAsync(CustomerBasket customerBasket, string token)
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint);
|
||||
try
|
||||
{
|
||||
UriBuilder builder = new UriBuilder(GlobalSetting.Instance.BasketEndpoint);
|
||||
|
||||
string uri = builder.ToString();
|
||||
string uri = builder.ToString();
|
||||
|
||||
var result = await _requestProvider.PostAsync(uri, customerBasket, token);
|
||||
var result = await _requestProvider.PostAsync(uri, customerBasket, token);
|
||||
|
||||
return result;
|
||||
return result;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return new CustomerBasket();
|
||||
}
|
||||
}
|
||||
|
||||
public async Task ClearBasketAsync(string guidUser, string token)
|
||||
@ -58,7 +65,7 @@ namespace eShopOnContainers.Core.Services.Basket
|
||||
|
||||
string uri = builder.ToString();
|
||||
|
||||
await _requestProvider.DeleteAsync(uri, token);
|
||||
await _requestProvider.DeleteAsync(uri, token);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
namespace eShopOnContainers.Core.Services.Identity
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Identity
|
||||
{
|
||||
public interface IIdentityService
|
||||
{
|
||||
|
@ -6,6 +6,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Xamarin.Forms;
|
||||
|
||||
namespace eShopOnContainers.Core.Services.Order
|
||||
{
|
||||
@ -45,15 +46,15 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
|
||||
private List<Models.Orders.Order> MockOrders = new List<Models.Orders.Order>()
|
||||
{
|
||||
new Models.Orders.Order { SequenceNumber = 123, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardType = MockPaymentInfo.CardType.ToString(), CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street },
|
||||
new Models.Orders.Order { SequenceNumber = 132, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardType = MockPaymentInfo.CardType.ToString(), CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street },
|
||||
new Models.Orders.Order { SequenceNumber = 231, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardType = MockPaymentInfo.CardType.ToString(), CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street },
|
||||
new Models.Orders.Order { OrderNumber = "1", SequenceNumber = 123, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardTypeId = MockPaymentInfo.CardType.Id, CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street, Total = 36.46M },
|
||||
new Models.Orders.Order { OrderNumber = "2", SequenceNumber = 132, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardTypeId = MockPaymentInfo.CardType.Id, CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street, Total = 36.46M },
|
||||
new Models.Orders.Order { OrderNumber = "3", SequenceNumber = 231, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, CardTypeId = MockPaymentInfo.CardType.Id, CardHolderName = MockPaymentInfo.CardHolderName, CardNumber = MockPaymentInfo.CardNumber, CardSecurityNumber = MockPaymentInfo.SecurityNumber, CardExpiration = new DateTime(MockPaymentInfo.ExpirationYear, MockPaymentInfo.ExpirationMonth, 1), ShippingCity = MockAdress.City, ShippingState = MockAdress.State, ShippingCountry = MockAdress.Country, ShippingStreet = MockAdress.Street, Total = 36.46M }
|
||||
};
|
||||
|
||||
private static List<OrderItem> MockOrderItems = new List<OrderItem>()
|
||||
{
|
||||
new OrderItem { OrderId = Guid.NewGuid(), ProductId = Common.Common.MockCatalogItemId01, Discount = 15, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 16.50M },
|
||||
new OrderItem { OrderId = Guid.NewGuid(), ProductId = Common.Common.MockCatalogItemId03, Discount = 0, ProductName = ".NET Bot Black Sweatshirt (M)", Quantity = 2, UnitPrice = 19.95M }
|
||||
new OrderItem { OrderId = Guid.NewGuid(), ProductId = Common.Common.MockCatalogItemId01, Discount = 15, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 16.50M, PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_01.png" : "Assets/fake_product_01.png" },
|
||||
new OrderItem { OrderId = Guid.NewGuid(), ProductId = Common.Common.MockCatalogItemId03, Discount = 0, ProductName = ".NET Bot Black Sweatshirt (M)", Quantity = 2, UnitPrice = 19.95M, PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_03.png" : "Assets/fake_product_03.png" }
|
||||
};
|
||||
|
||||
private static List<CardType> MockCardTypes = new List<CardType>()
|
||||
@ -88,7 +89,9 @@ namespace eShopOnContainers.Core.Services.Order
|
||||
await Task.Delay(500);
|
||||
|
||||
if (!string.IsNullOrEmpty(token))
|
||||
return MockOrders.FirstOrDefault(o => o.SequenceNumber == orderId);
|
||||
return MockOrders
|
||||
.FirstOrDefault(o => o.OrderNumber.Equals(orderId.ToString(),
|
||||
StringComparison.CurrentCultureIgnoreCase));
|
||||
else
|
||||
return new Models.Orders.Order();
|
||||
}
|
||||
|
@ -9,6 +9,11 @@ using eShopOnContainers.Core.Services.Basket;
|
||||
using eShopOnContainers.Core.Services.Identity;
|
||||
using eShopOnContainers.Core.Services.Order;
|
||||
using eShopOnContainers.Core.Services.User;
|
||||
using Xamarin.Forms;
|
||||
using System.Collections.Generic;
|
||||
using eShopOnContainers.Core.Models.Basket;
|
||||
using eShopOnContainers.Core.Models.Catalog;
|
||||
using eShopOnContainers.Core.ViewModels.Base;
|
||||
|
||||
namespace eShopOnContainers.ViewModels.Base
|
||||
{
|
||||
@ -58,6 +63,12 @@ namespace eShopOnContainers.ViewModels.Base
|
||||
|
||||
public void UpdateDependencies(bool useMockServices)
|
||||
{
|
||||
// Clear message subscriptions
|
||||
var basketViewModel = _unityContainer.Resolve<BasketViewModel>();
|
||||
MessagingCenter.Unsubscribe<CatalogViewModel, List<BasketItem>>(basketViewModel, MessengerKeys.UpdateBasket);
|
||||
MessagingCenter.Unsubscribe<CatalogViewModel, CatalogItem>(basketViewModel, MessengerKeys.AddProduct);
|
||||
|
||||
// Change injected dpendencies
|
||||
if (useMockServices)
|
||||
{
|
||||
_unityContainer.RegisterInstance<ICatalogService>(new CatalogMockService());
|
||||
|
@ -62,14 +62,14 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand AddCommand => new Command<BasketItem>(AddItem);
|
||||
|
||||
public ICommand CheckoutCommand => new Command(Checkout);
|
||||
|
||||
public override Task InitializeAsync(object navigationData)
|
||||
{
|
||||
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) =>
|
||||
{
|
||||
MessagingCenter.Unsubscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket);
|
||||
|
||||
foreach (var basketItem in arg)
|
||||
{
|
||||
BadgeCount += basketItem.Quantity;
|
||||
@ -111,6 +111,21 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
ReCalculateTotal();
|
||||
}
|
||||
|
||||
private void AddItem(BasketItem parameter)
|
||||
{
|
||||
BadgeCount++;
|
||||
|
||||
var basketItem = BasketItems
|
||||
.FirstOrDefault(bi => bi.ProductId.Equals(parameter.ProductId,
|
||||
StringComparison.CurrentCultureIgnoreCase));
|
||||
|
||||
basketItem.Quantity++;
|
||||
|
||||
RaisePropertyChanged(() => BasketItems);
|
||||
|
||||
ReCalculateTotal();
|
||||
}
|
||||
|
||||
private void AddBasketItem(BasketItem item)
|
||||
{
|
||||
BasketItems.Add(item);
|
||||
|
@ -83,16 +83,19 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
|
||||
ShippingAddress = new Address
|
||||
{
|
||||
Id = new Guid(userInfo.UserId),
|
||||
Street = userInfo?.Street,
|
||||
ZipCode = userInfo?.ZipCode,
|
||||
State = userInfo?.State,
|
||||
Country = userInfo?.Country,
|
||||
City = string.Empty
|
||||
};
|
||||
|
||||
var paymentInfo = new PaymentInfo
|
||||
{
|
||||
CardNumber = userInfo?.CardNumber,
|
||||
CardHolderName = userInfo?.CardHolder,
|
||||
CardType = new CardType { Id = 3, Name = "MasterCard" },
|
||||
SecurityNumber = userInfo?.CardSecurityNumber
|
||||
};
|
||||
|
||||
@ -106,9 +109,12 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
CardNumber = paymentInfo.CardNumber,
|
||||
CardSecurityNumber = paymentInfo.SecurityNumber,
|
||||
CardExpiration = DateTime.Now.AddYears(5),
|
||||
CardTypeId = paymentInfo.CardType.Id,
|
||||
ShippingState = _shippingAddress.State,
|
||||
ShippingCountry = _shippingAddress.Country,
|
||||
ShippingStreet = _shippingAddress.Street
|
||||
ShippingStreet = _shippingAddress.Street,
|
||||
ShippingCity = _shippingAddress.City,
|
||||
Total = CalculateTotal(CreateOrderItems(orderItems))
|
||||
};
|
||||
|
||||
IsBusy = false;
|
||||
@ -126,7 +132,7 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
await NavigationService.NavigateToAsync<MainViewModel>(new TabParameter { TabIndex = 1 });
|
||||
await NavigationService.RemoveLastFromBackStackAsync();
|
||||
|
||||
await DialogService.ShowAlertAsync("Order sent successfully!", string.Format("Order {0}", Order.SequenceNumber), "Ok");
|
||||
await DialogService.ShowAlertAsync("Order sent successfully!", string.Format("Order {0}", Order.OrderNumber), "Ok");
|
||||
await NavigationService.RemoveLastFromBackStackAsync();
|
||||
}
|
||||
|
||||
@ -138,6 +144,7 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
{
|
||||
orderItems.Add(new OrderItem
|
||||
{
|
||||
OrderId = null,
|
||||
ProductId = basketItem.ProductId,
|
||||
ProductName = basketItem.ProductName,
|
||||
PictureUrl = basketItem.PictureUrl,
|
||||
@ -148,5 +155,17 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
|
||||
return orderItems;
|
||||
}
|
||||
|
||||
private decimal CalculateTotal(List<OrderItem> orderItems)
|
||||
{
|
||||
decimal total = 0;
|
||||
|
||||
foreach(var orderItem in orderItems)
|
||||
{
|
||||
total += (orderItem.Quantity * orderItem.UnitPrice);
|
||||
}
|
||||
|
||||
return total;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,9 @@ using eShopOnContainers.Core.Models.Orders;
|
||||
using eShopOnContainers.ViewModels.Base;
|
||||
using eShopOnContainers.Core.Services.Catalog;
|
||||
using eShopOnContainers.Core.Services.Basket;
|
||||
using eShopOnContainers.Core.Services.Order;
|
||||
using System;
|
||||
using eShopOnContainers.Core.Helpers;
|
||||
|
||||
namespace eShopOnContainers.Core.ViewModels
|
||||
{
|
||||
@ -12,13 +15,16 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
|
||||
private IBasketService _orderService;
|
||||
private ICatalogService _catalogService;
|
||||
private IOrderService _ordersService;
|
||||
|
||||
public OrderDetailViewModel(
|
||||
IBasketService orderService,
|
||||
ICatalogService catalogService)
|
||||
ICatalogService catalogService,
|
||||
IOrderService ordersService)
|
||||
{
|
||||
_orderService = orderService;
|
||||
_catalogService = catalogService;
|
||||
_ordersService = ordersService;
|
||||
}
|
||||
|
||||
public Order Order
|
||||
@ -39,13 +45,10 @@ namespace eShopOnContainers.Core.ViewModels
|
||||
|
||||
var order = navigationData as Order;
|
||||
|
||||
foreach (var orderItem in order.OrderItems)
|
||||
{
|
||||
var catalogItem = await _catalogService.GetCatalogItemAsync(orderItem.ProductId.ToString());
|
||||
orderItem.PictureUrl = catalogItem.PictureUri;
|
||||
}
|
||||
var authToken = Settings.AuthAccessToken;
|
||||
Order = await _ordersService.GetOrderAsync(Convert.ToInt32(order.OrderNumber), authToken);
|
||||
|
||||
Order = order;
|
||||
// TODO: Change Mock Order Service
|
||||
|
||||
IsBusy = false;
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
|
||||
x:Class="eShopOnContainers.Core.Views.BasketView"
|
||||
x:Class="eShopOnContainers.Core.Views.BasketView"
|
||||
xmlns:behaviors="clr-namespace:eShopOnContainers.Core.Behaviors;assembly=eShopOnContainers.Core"
|
||||
xmlns:templates="clr-namespace:eShopOnContainers.Core.Views.Templates;assembly=eShopOnContainers.Core"
|
||||
Title="Cart">
|
||||
<ContentPage.Resources>
|
||||
@ -73,7 +74,8 @@
|
||||
<!-- ITEMS -->
|
||||
<ListView
|
||||
Grid.Row="1"
|
||||
ItemsSource="{Binding BasketItems}"
|
||||
ItemsSource="{Binding BasketItems}"
|
||||
behaviors:ItemTappedCommandListViewBehavior.ItemTappedCommand="{Binding AddCommand}"
|
||||
HeightRequest="{Binding BasketItems.Count, Converter={StaticResource ItemsToHeightConverter}}"
|
||||
HasUnevenRows="True"
|
||||
SeparatorVisibility="None"
|
||||
|
@ -5,7 +5,7 @@
|
||||
xmlns:templates="clr-namespace:eShopOnContainers.Core.Views.Templates;assembly=eShopOnContainers.Core"
|
||||
xmlns:animations="clr-namespace:eShopOnContainers.Core.Animations;assembly=eShopOnContainers.Core"
|
||||
xmlns:triggers="clr-namespace:eShopOnContainers.Core.Triggers;assembly=eShopOnContainers.Core"
|
||||
Title="{Binding Order.SequenceNumber}">
|
||||
Title="{Binding Order.OrderNumber}">
|
||||
<ContentPage.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
@ -176,16 +176,16 @@
|
||||
<StackLayout
|
||||
Grid.Row="1">
|
||||
<Label
|
||||
Text="{Binding Order.ShippingAddress.Street}"
|
||||
Text="{Binding Order.ShippingStreet}"
|
||||
Style="{StaticResource AddressStyle}"/>
|
||||
<Label
|
||||
Text="{Binding Order.ShippingAddress.City}"
|
||||
Text="{Binding Order.ShippingCity}"
|
||||
Style="{StaticResource AddressStyle}"/>
|
||||
<Label
|
||||
Text="{Binding Order.ShippingAddress.CountryCode}"
|
||||
Text="{Binding Order.ShippingState}"
|
||||
Style="{StaticResource AddressStyle}"/>
|
||||
<Label
|
||||
Text="{Binding Order.ShippingAddress.Country}"
|
||||
Text="{Binding Order.ShippingCountry}"
|
||||
Style="{StaticResource AddressStyle}"/>
|
||||
</StackLayout>
|
||||
</Grid>
|
||||
|
@ -44,6 +44,7 @@
|
||||
</Compile>
|
||||
<Compile Include="Behaviors\Base\BindableBehavior.cs" />
|
||||
<Compile Include="Behaviors\EventToCommandBehavior.cs" />
|
||||
<Compile Include="Behaviors\ItemTappedCommandListViewBehavior.cs" />
|
||||
<Compile Include="Behaviors\WebViewNavigationBehavior.cs" />
|
||||
<Compile Include="Controls\BindablePicker.cs" />
|
||||
<Compile Include="Controls\AddBasketButton.xaml.cs">
|
||||
|
Loading…
x
Reference in New Issue
Block a user