Browse Source

Changes related with Orders API integration.

Added new entities.
Fixed some UI binding errors.
pull/49/merge
Javier Suárez Ruiz 8 years ago
parent
commit
8dc4002e09
22 changed files with 232 additions and 156 deletions
  1. +29
    -8
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs
  2. +5
    -6
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs
  3. +8
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderState.cs
  4. +0
    -10
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderStatus.cs
  5. +3
    -10
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/User/Address.cs
  6. +18
    -0
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/User/PaymentInfo.cs
  7. +37
    -4
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs
  8. +5
    -3
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs
  9. +5
    -3
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs
  10. +40
    -10
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs
  11. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/Base/ViewModelLocator.cs
  12. +13
    -11
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs
  13. +11
    -9
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs
  14. +21
    -31
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs
  15. +0
    -7
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs
  16. +6
    -22
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs
  17. +5
    -5
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml
  18. +5
    -5
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml
  19. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml
  20. +1
    -1
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderTemplate.xaml
  21. +3
    -2
      src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj
  22. +15
    -7
      src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/OrdersServiceTests.cs

+ 29
- 8
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs View File

@ -1,21 +1,42 @@
using System;
using eShopOnContainers.Core.Models.User;
using System;
using System.Collections.Generic;
using System.Linq;
namespace eShopOnContainers.Core.Models.Orders
{
public class Order
{
public int SequenceNumber { get; set; }
public decimal Total { get; set; }
public DateTime OrderDate { get; set; }
public OrderStatus Status { get; set; }
public User.User ShippingAddress { get; set; }
public int BuyerId { get; set; }
public Order()
{
OrderItems = new List<OrderItem>();
ShippingAddress = new Address();
PaymentInfo = new PaymentInfo();
}
public string Id;
public List<OrderItem> OrderItems { get; set; }
public string OrderNumber
{
get { return string.Format("{0}/{1}-{2}", OrderDate.Year, OrderDate.Month, SequenceNumber); }
get
{
return string.Format("{0}/{1}-{2}", OrderDate.Year, OrderDate.Month, SequenceNumber);
}
}
public int SequenceNumber { get; set; }
public virtual string BuyerId { get; set; }
public virtual Address ShippingAddress { get; set; }
public virtual PaymentInfo PaymentInfo { get; set; }
public virtual DateTime OrderDate { get; set; }
public OrderState State { get; set; }
public decimal Total { get { return CalculateTotal(); } }
public decimal CalculateTotal()
{
return OrderItems.Sum(x => x.Quantity * x.UnitPrice);
}
}
}

+ 5
- 6
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs View File

@ -1,5 +1,4 @@
using eShopOnContainers.Core.Helpers;
using eShopOnContainers.Core.ViewModels.Base;
using eShopOnContainers.ViewModels.Base;
using System;
using System.Collections.ObjectModel;
@ -8,7 +7,7 @@ namespace eShopOnContainers.Core.Models.Orders
{
public class OrderItem : ExtendedBindableObject
{
private string _productImage;
private string _pictureUrl;
private string _productId;
private Guid _orderId;
private string _productName;
@ -85,13 +84,13 @@ namespace eShopOnContainers.Core.Models.Orders
public decimal Total { get { return Quantity * UnitPrice; } }
public string ProductImage
public string PictureUrl
{
get { return _productImage; }
get { return _pictureUrl; }
set
{
_productImage = value;
RaisePropertyChanged(() => ProductImage);
_pictureUrl = value;
RaisePropertyChanged(() => PictureUrl);
}
}


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

@ -0,0 +1,8 @@
namespace eShopOnContainers.Core.Models.Orders
{
public enum OrderState
{
InProcess,
Delivered
}
}

+ 0
- 10
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderStatus.cs View File

@ -1,10 +0,0 @@
namespace eShopOnContainers.Core.Models.Orders
{
public enum OrderStatus
{
Pending,
WareHouse,
Delivered,
Lost
}
}

src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/User/User.cs → src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/User/Address.cs View File

@ -2,16 +2,9 @@
namespace eShopOnContainers.Core.Models.User
{
public class User
public class Address
{
public string GuidUser { get; set; }
public string Name { get; set; }
public string LastName { get; set; }
public string CardNumber { get; set; }
public string SecurityNumber { get; set; }
public string Expiration { get; set; }
public string CardHolderName { get; set; }
public int CardType { get; set; }
public Guid Id { get; set; }
public string Street { get; set; }
public string City { get; set; }
public string State { get; set; }
@ -22,4 +15,4 @@ namespace eShopOnContainers.Core.Models.User
public double Latitude { get; set; }
public double Longitude { get; set; }
}
}
}

+ 18
- 0
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/User/PaymentInfo.cs View File

@ -0,0 +1,18 @@
using eShopOnContainers.Core.Models.Orders;
using System;
namespace eShopOnContainers.Core.Models.User
{
public class PaymentInfo
{
public Guid Id { get; set; }
public string CardNumber { get; set; }
public string SecurityNumber { get; set; }
public int ExpirationMonth { get; set; }
public int ExpirationYear { get; set; }
public string CardHolderName { get; set; }
public CardType CardType { get; set; }
public string Expiration { get; set; }
}
}

+ 37
- 4
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs View File

@ -1,5 +1,6 @@
using eShopOnContainers.Core.Extensions;
using eShopOnContainers.Core.Models.Orders;
using eShopOnContainers.Core.Models.User;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
@ -10,11 +11,43 @@ namespace eShopOnContainers.Core.Services.Order
{
public class OrderMockService : IOrderService
{
private static DateTime MockExpirationDate = DateTime.Now.AddYears(5);
private static Address MockAdress = new Address
{
Id = Guid.NewGuid(),
City = "Seattle, WA",
Street = "120 E 87th Street",
CountryCode = "98122",
Country = "United States",
Latitude = 40.785091,
Longitude = -73.968285,
State = "Seattle",
StateCode = "WA",
ZipCode = "98101"
};
private static PaymentInfo MockPaymentInfo = new PaymentInfo
{
Id = Guid.NewGuid(),
CardHolderName = "American Express",
CardNumber = "378282246310005",
CardType = new CardType
{
Id = 3,
Name = "MasterCard"
},
Expiration = MockExpirationDate.ToString(),
ExpirationMonth = MockExpirationDate.Month,
ExpirationYear = MockExpirationDate.Year,
SecurityNumber = "123"
};
private List<Models.Orders.Order> MockOrders = new List<Models.Orders.Order>()
{
new Models.Orders.Order { SequenceNumber = 123, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems },
new Models.Orders.Order { SequenceNumber = 132, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems },
new Models.Orders.Order { SequenceNumber = 231, Total = 56.40M, OrderDate = DateTime.Now, Status = OrderStatus.Delivered, OrderItems = MockOrderItems },
new Models.Orders.Order { SequenceNumber = 123, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, PaymentInfo = MockPaymentInfo, ShippingAddress = MockAdress },
new Models.Orders.Order { SequenceNumber = 132, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, PaymentInfo = MockPaymentInfo, ShippingAddress = MockAdress },
new Models.Orders.Order { SequenceNumber = 231, OrderDate = DateTime.Now, State = OrderState.Delivered, OrderItems = MockOrderItems, PaymentInfo = MockPaymentInfo, ShippingAddress = MockAdress },
};
private static List<OrderItem> MockOrderItems = new List<OrderItem>()
@ -29,7 +62,7 @@ namespace eShopOnContainers.Core.Services.Order
new CardType { Id = 2, Name = "Visa" },
new CardType { Id = 3, Name = "MasterCard" },
};
public async Task CreateOrderAsync(Models.Orders.Order newOrder)
{
await Task.Delay(500);


+ 5
- 3
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs View File

@ -50,7 +50,8 @@ namespace eShopOnContainers.Core.Services.RequestProvider
{
HttpClient httpClient = CreateHttpClient(token);
string serialized = await Task.Run(() => JsonConvert.SerializeObject(data, _serializerSettings));
HttpResponseMessage response = await httpClient.PostAsync(uri, new StringContent(serialized, Encoding.UTF8, "application/json"));
var content = new StringContent(serialized, Encoding.UTF8, "application/json");
HttpResponseMessage response = await httpClient.PostAsync(uri, content);
await HandleResponse(response);
@ -100,6 +101,7 @@ namespace eShopOnContainers.Core.Services.RequestProvider
private async Task HandleResponse(HttpResponseMessage response)
{
// TODO:
if (!response.IsSuccessStatusCode)
{
var content = await response.Content.ReadAsStringAsync();
@ -107,10 +109,10 @@ namespace eShopOnContainers.Core.Services.RequestProvider
if (response.StatusCode == HttpStatusCode.Forbidden
|| response.StatusCode == HttpStatusCode.Unauthorized)
{
throw new ServiceAuthenticationException(content);
// throw new ServiceAuthenticationException(content);
}
throw new HttpRequestException(content);
// throw new HttpRequestException(content);
}
}
}


+ 5
- 3
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/IUserService.cs View File

@ -1,9 +1,11 @@
using System.Threading.Tasks;
using eShopOnContainers.Core.Models.User;
using System.Threading.Tasks;
namespace eShopOnContainers.Core.Services.User
{
public interface IUserService
{
Task<Models.User.User> GetUserAsync();
Task<Address> GetAddressAsync();
Task<PaymentInfo> GetPaymentInfoAsync();
}
}
}

+ 40
- 10
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/User/UserMockService.cs View File

@ -1,26 +1,56 @@
using System.Threading.Tasks;
using System;
using eShopOnContainers.Core.Models.User;
using System.Threading.Tasks;
using eShopOnContainers.Core.Models.Orders;
namespace eShopOnContainers.Core.Services.User
{
public class UserMockService : IUserService
{
private Models.User.User MockUser = new Models.User.User
private static DateTime MockExpirationDate = DateTime.Now.AddYears(5);
private Address MockAdress = new Address
{
GuidUser = "9245fe4a-d402-451c-b9ed-9c1a04247482",
Name = "Jhon",
LastName = "Doe",
Id = Guid.NewGuid(),
City = "Seattle, WA",
Street = "120 E 87th Street",
CountryCode = "98122",
Country = "United States"
Country = "United States",
Latitude = 40.785091,
Longitude = -73.968285,
State = "Seattle",
StateCode = "WA",
ZipCode = "98101"
};
public async Task<Models.User.User> GetUserAsync()
private PaymentInfo MockPaymentInfo = new PaymentInfo
{
Id = Guid.NewGuid(),
CardHolderName = "American Express",
CardNumber = "378282246310005",
CardType = new CardType
{
Id = 3,
Name = "MasterCard"
},
Expiration = MockExpirationDate.ToString(),
ExpirationMonth = MockExpirationDate.Month,
ExpirationYear = MockExpirationDate.Year,
SecurityNumber = "123"
};
public async Task<Address> GetAddressAsync()
{
await Task.Delay(500);
return MockAdress;
}
public async Task<PaymentInfo> GetPaymentInfoAsync()
{
await Task.Delay(500);
return MockUser;
return MockPaymentInfo;
}
}
}
}

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

@ -4,11 +4,11 @@ using eShopOnContainers.Services;
using System;
using eShopOnContainers.Core.Services.Catalog;
using eShopOnContainers.Core.Services.OpenUrl;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.Services.RequestProvider;
using eShopOnContainers.Core.Services.Basket;
using eShopOnContainers.Core.Services.Identity;
using eShopOnContainers.Core.Services.Order;
using eShopOnContainers.Core.Services.User;
namespace eShopOnContainers.ViewModels.Base
{


+ 13
- 11
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs View File

@ -1,7 +1,6 @@
using eShopOnContainers.Core.Helpers;
using eShopOnContainers.Core.Models.Basket;
using eShopOnContainers.Core.Models.Catalog;
using eShopOnContainers.Core.Models.User;
using eShopOnContainers.Core.Services.Basket;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.ViewModels.Base;
@ -18,19 +17,19 @@ namespace eShopOnContainers.Core.ViewModels
{
public class BasketViewModel : ViewModelBase
{
private User _user;
private int _badgeCount;
private ObservableCollection<BasketItem> _basketItems;
private decimal _total;
private IUserService _userService;
private IBasketService _basketService;
private IUserService _userService;
public BasketViewModel(IUserService userService,
IBasketService basketService)
public BasketViewModel(
IBasketService basketService,
IUserService userService)
{
_userService = userService;
_basketService = basketService;
_userService = userService;
}
public int BadgeCount
@ -65,7 +64,7 @@ namespace eShopOnContainers.Core.ViewModels
public ICommand CheckoutCommand => new Command(Checkout);
public override async Task InitializeAsync(object navigationData)
public override Task InitializeAsync(object navigationData)
{
MessagingCenter.Subscribe<CatalogViewModel, List<BasketItem>>(this, MessengerKeys.UpdateBasket, (sender, arg) =>
{
@ -88,8 +87,9 @@ namespace eShopOnContainers.Core.ViewModels
ReCalculateTotal();
});
_user = await _userService.GetUserAsync();
BasketItems = new ObservableCollection<BasketItem>();
return base.InitializeAsync(navigationData);
}
private void AddCatalogItem(CatalogItem item)
@ -121,7 +121,7 @@ namespace eShopOnContainers.Core.ViewModels
ReCalculateTotal();
}
private void ReCalculateTotal()
private async void ReCalculateTotal()
{
Total = 0;
@ -135,11 +135,13 @@ namespace eShopOnContainers.Core.ViewModels
Total += (orderItem.Quantity * orderItem.UnitPrice);
}
var shippingAddress = await _userService.GetAddressAsync();
var authToken = Settings.AuthAccessToken;
_basketService.UpdateBasketAsync(new CustomerBasket
await _basketService.UpdateBasketAsync(new CustomerBasket
{
BuyerId = _user.GuidUser,
BuyerId = shippingAddress.Id.ToString(),
Items = BasketItems.ToList()
}, authToken);
}


+ 11
- 9
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CatalogViewModel.cs View File

@ -6,10 +6,11 @@ using eShopOnContainers.Core.ViewModels.Base;
using eShopOnContainers.Core.Models.Catalog;
using eShopOnContainers.Core.Services.Catalog;
using System.Windows.Input;
using eShopOnContainers.Core.Services.User;
using System.Linq;
using eShopOnContainers.Core.Services.Basket;
using eShopOnContainers.Core.Helpers;
using System;
using eShopOnContainers.Core.Services.User;
namespace eShopOnContainers.Core.ViewModels
{
@ -21,17 +22,18 @@ namespace eShopOnContainers.Core.ViewModels
private ObservableCollection<CatalogType> _types;
private CatalogType _type;
private IUserService _userService;
private IBasketService _basketService;
private ICatalogService _productsService;
private IUserService _userService;
public CatalogViewModel(IUserService userService,
public CatalogViewModel(
IBasketService basketService,
ICatalogService productsService)
ICatalogService productsService,
IUserService userService)
{
_userService = userService;
_basketService = basketService;
_productsService = productsService;
_userService = userService;
}
public ObservableCollection<CatalogItem> Products
@ -101,14 +103,14 @@ namespace eShopOnContainers.Core.ViewModels
Products = await _productsService.GetCatalogAsync();
Brands = await _productsService.GetCatalogBrandAsync();
Types = await _productsService.GetCatalogTypeAsync();
var user = await _userService.GetUserAsync();
var shippingAddress = await _userService.GetAddressAsync();
var authToken = Settings.AuthAccessToken;
var basket = await _basketService.GetBasketAsync(user.GuidUser, authToken);
var basket = await _basketService.GetBasketAsync(shippingAddress.Id.ToString(), authToken);
if (basket != null && basket.Items.Any())
{
System.Diagnostics.Debug.WriteLine(basket.Items.Count);
MessagingCenter.Send(this, MessengerKeys.UpdateBasket, basket.Items);
}


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

@ -1,19 +1,18 @@
using eShopOnContainers.Core.Models.Navigation;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.ViewModels.Base;
using System.Windows.Input;
using Xamarin.Forms;
using System.Threading.Tasks;
using eShopOnContainers.Core.Models.User;
using eShopOnContainers.Core.Models.Orders;
using System;
using System.Collections.ObjectModel;
using System.Linq;
using eShopOnContainers.Core.Models.Basket;
using System.Collections.Generic;
using eShopOnContainers.Core.Services.Basket;
using eShopOnContainers.Core.Services.Order;
using eShopOnContainers.Core.Helpers;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.Models.User;
namespace eShopOnContainers.Core.ViewModels
{
@ -21,19 +20,20 @@ namespace eShopOnContainers.Core.ViewModels
{
private ObservableCollection<BasketItem> _orderItems;
private Order _order;
private User _user;
private Address _shippingAddress;
private IUserService _userService;
private IBasketService _basketService;
private IOrderService _orderService;
private IUserService _userService;
public CheckoutViewModel(IUserService userService,
public CheckoutViewModel(
IBasketService basketService,
IOrderService orderService)
IOrderService orderService,
IUserService userService)
{
_basketService = basketService;
_userService = userService;
_orderService = orderService;
_userService = userService;
}
public ObservableCollection<BasketItem> OrderItems
@ -56,13 +56,13 @@ namespace eShopOnContainers.Core.ViewModels
}
}
public User User
public Address ShippingAddress
{
get { return _user; }
get { return _shippingAddress; }
set
{
_user = value;
RaisePropertyChanged(() => User);
_shippingAddress = value;
RaisePropertyChanged(() => ShippingAddress);
}
}
@ -78,15 +78,16 @@ namespace eShopOnContainers.Core.ViewModels
OrderItems = orderItems;
User = await _userService.GetUserAsync();
ShippingAddress = await _userService.GetAddressAsync();
var paymentInfo = await _userService.GetPaymentInfoAsync();
Order = new Order
{
ShippingAddress = User,
OrderItems = CreateOrderItems(orderItems),
Status = OrderStatus.Pending,
State = OrderState.InProcess,
OrderDate = DateTime.Now,
Total = GetOrderTotal()
PaymentInfo = paymentInfo,
ShippingAddress = _shippingAddress
};
IsBusy = false;
@ -98,7 +99,8 @@ namespace eShopOnContainers.Core.ViewModels
var authToken = Settings.AuthAccessToken;
await _orderService.CreateOrderAsync(Order);
await _basketService.ClearBasketAsync(User.GuidUser, authToken);
await _basketService.ClearBasketAsync(_shippingAddress.Id.ToString(), authToken);
await NavigationService.NavigateToAsync<MainViewModel>(new TabParameter { TabIndex = 1 });
await NavigationService.RemoveLastFromBackStackAsync();
@ -117,7 +119,7 @@ namespace eShopOnContainers.Core.ViewModels
{
ProductId = basketItem.ProductId,
ProductName = basketItem.ProductName,
ProductImage = basketItem.PictureUrl,
PictureUrl = basketItem.PictureUrl,
Quantity = basketItem.Quantity,
UnitPrice = basketItem.UnitPrice
});
@ -125,17 +127,5 @@ namespace eShopOnContainers.Core.ViewModels
return orderItems;
}
private decimal GetOrderTotal()
{
decimal total = 0;
foreach (var orderItem in OrderItems)
{
total += orderItem.Total;
}
return total;
}
}
}

+ 0
- 7
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/LoginViewModel.cs View File

@ -209,13 +209,6 @@ namespace eShopOnContainers.Core.ViewModels
}
}
}
/*
if(url.Contains("endsession"))
{
await SignInAsync();
}
*/
}
private bool Validate()


+ 6
- 22
src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/OrderDetailViewModel.cs View File

@ -2,8 +2,6 @@
using eShopOnContainers.Core.Models.Orders;
using eShopOnContainers.ViewModels.Base;
using eShopOnContainers.Core.Services.Catalog;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.Models.User;
using eShopOnContainers.Core.Services.Basket;
namespace eShopOnContainers.Core.ViewModels
@ -11,19 +9,16 @@ namespace eShopOnContainers.Core.ViewModels
public class OrderDetailViewModel : ViewModelBase
{
private Order _order;
private User _user;
private IBasketService _orderService;
private ICatalogService _catalogService;
private IUserService _userService;
public OrderDetailViewModel(IBasketService orderService,
ICatalogService catalogService,
IUserService userService)
public OrderDetailViewModel(
IBasketService orderService,
ICatalogService catalogService)
{
_orderService = orderService;
_catalogService = catalogService;
_userService = userService;
}
public Order Order
@ -36,32 +31,21 @@ namespace eShopOnContainers.Core.ViewModels
}
}
public User User
{
get { return _user; }
set
{
_user = value;
RaisePropertyChanged(() => User);
}
}
public override async Task InitializeAsync(object navigationData)
{
if(navigationData is Order)
if (navigationData is Order)
{
IsBusy = true;
var order = navigationData as Order;
foreach (var orderItem in order.OrderItems)
{
var catalogItem = await _catalogService.GetCatalogItemAsync(orderItem.ProductId.ToString());
orderItem.ProductImage = catalogItem.PictureUri;
orderItem.PictureUrl = catalogItem.PictureUri;
}
Order = order;
User = await _userService.GetUserAsync();
IsBusy = false;
}


+ 5
- 5
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/CheckoutView.xaml View File

@ -133,7 +133,7 @@
Text="STATUS"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.Status, Converter={StaticResource ToUpperConverter}}"
Text="{Binding Order.State, Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
</Grid>
@ -153,16 +153,16 @@
<StackLayout
Grid.Row="1">
<Label
Text="{Binding User.Street}"
Text="{Binding ShippingAddress.Street}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.City}"
Text="{Binding ShippingAddress.City}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.CountryCode}"
Text="{Binding ShippingAddress.CountryCode}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.Country}"
Text="{Binding ShippingAddress.Country}"
Style="{StaticResource AddressStyle}"/>
</StackLayout>
</Grid>


+ 5
- 5
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/OrderDetailView.xaml View File

@ -155,7 +155,7 @@
Text="STATUS"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Order.Status, Converter={StaticResource ToUpperConverter}}"
Text="{Binding Order.State, Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
</Grid>
@ -176,16 +176,16 @@
<StackLayout
Grid.Row="1">
<Label
Text="{Binding User.Street}"
Text="{Binding Order.ShippingAddress.Street}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.City}"
Text="{Binding Order.ShippingAddress.City}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.CountryCode}"
Text="{Binding Order.ShippingAddress.CountryCode}"
Style="{StaticResource AddressStyle}"/>
<Label
Text="{Binding User.Country}"
Text="{Binding Order.ShippingAddress.Country}"
Style="{StaticResource AddressStyle}"/>
</StackLayout>
</Grid>


+ 1
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderItemTemplate.xaml View File

@ -73,7 +73,7 @@
<ffimageloading:CachedImage
Grid.Column="0"
Grid.Row="0"
Source="{Binding ProductImage, Converter={StaticResource ImageConverter}}"
Source="{Binding PictureUrl, Converter={StaticResource ImageConverter}}"
CacheDuration="30"
CacheType="Disk"
DownsampleToViewSize="True"


+ 1
- 1
src/Mobile/eShopOnContainers/eShopOnContainers.Core/Views/Templates/OrderTemplate.xaml View File

@ -78,7 +78,7 @@
Text="STATUS"
Style="{StaticResource OrderTitleStyle}"/>
<Label
Text="{Binding Status, Converter={StaticResource ToUpperConverter}}"
Text="{Binding State, Converter={StaticResource ToUpperConverter}}"
Style="{StaticResource OrderContentStyle}"/>
</StackLayout>
<Grid


+ 3
- 2
src/Mobile/eShopOnContainers/eShopOnContainers.Core/eShopOnContainers.Core.csproj View File

@ -76,10 +76,11 @@
<Compile Include="Models\Orders\CardType.cs" />
<Compile Include="Models\Orders\Order.cs" />
<Compile Include="Models\Orders\OrderItem.cs" />
<Compile Include="Models\Orders\OrderStatus.cs" />
<Compile Include="Models\Orders\OrderState.cs" />
<Compile Include="Models\Catalog\CatalogItem.cs" />
<Compile Include="Models\User\Address.cs" />
<Compile Include="Models\User\LogoutParameter.cs" />
<Compile Include="Models\User\User.cs" />
<Compile Include="Models\User\PaymentInfo.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="Services\Catalog\CatalogService.cs" />
<Compile Include="Services\Dialog\DialogService.cs" />


+ 15
- 7
src/Mobile/eShopOnContainers/eShopOnContainers.UnitTests/OrdersServiceTests.cs View File

@ -1,5 +1,5 @@
using eShopOnContainers.Core.Services.Basket;
using eShopOnContainers.Core.Services.User;
using eShopOnContainers.Core.Services.Order;
using eShopOnContainers.Core.Services.RequestProvider;
using System.Threading.Tasks;
using Xunit;
@ -10,12 +10,20 @@ namespace eShopOnContainers.UnitTests
[Fact]
public async Task GetFakeOrdersTest()
{
var userMockService = new UserMockService();
var user = await userMockService.GetUserAsync();
var ordersMockService = new OrderMockService();
var result = await ordersMockService.GetOrdersAsync();
var ordersMockService = new BasketMockService();
var result = await ordersMockService.GetBasketAsync(user.GuidUser);
Assert.NotEqual(0, result.Items.Count);
Assert.NotEqual(0, result.Count);
}
[Fact]
public async Task GetOrdersTest()
{
var requestProvider = new RequestProvider();
var ordersService = new OrderService(requestProvider);
var result = await ordersService.GetOrdersAsync();
Assert.NotEqual(0, result.Count);
}
}
}

Loading…
Cancel
Save