Browse Source

Changes in client APIs integration

pull/49/merge
Javier Suárez Ruiz 8 years ago
parent
commit
19da19fa84
17 changed files with 189 additions and 59 deletions
  1. +3
    -0
      eShopOnContainers.sln
  2. +52
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Behaviors/ItemTappedCommandListViewBehavior.cs
  3. +4
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ToUpperConverter.cs
  4. +13
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs
  5. +0
    -8
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/CardType.cs
  6. +12
    -16
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs
  7. +12
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs
  8. +12
    -5
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs
  9. +3
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs
  10. +9
    -6
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs
  11. +11
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs
  12. +17
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs
  13. +21
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs
  14. +10
    -7
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs
  15. +4
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml
  16. +5
    -5
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml
  17. +1
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj

+ 3
- 0
eShopOnContainers.sln View File

@ -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


+ 52
- 0
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Behaviors/ItemTappedCommandListViewBehavior.cs View File

@ -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);
}
}
}

+ 4
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Converters/ToUpperConverter.cs View File

@ -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)


+ 13
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Basket/BasketItem.cs View File

@ -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; }


+ 0
- 8
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/CardType.cs View File

@ -1,8 +0,0 @@
namespace eShopOnContainers.Core.Models.Orders
{
public class CardType
{
public int Id { get; set; }
public string Name { get; set; }
}
}

+ 12
- 16
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs View File

@ -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; }
}
}

+ 12
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs View File

@ -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; } }


+ 12
- 5
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketService.cs View File

@ -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);
}
}
}

+ 3
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IIdentityService.cs View File

@ -1,4 +1,6 @@
namespace eShopOnContainers.Core.Services.Identity
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.Identity
{
public interface IIdentityService
{


+ 9
- 6
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs View File

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


+ 11
- 0
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs View File

@ -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());


+ 17
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs View File

@ -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);


+ 21
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs View File

@ -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;
}
}
}

+ 10
- 7
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs View File

@ -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;
}


+ 4
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/BasketView.xaml View File

@ -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
- 5
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml View File

@ -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>


+ 1
- 0
src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj View File

@ -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…
Cancel
Save