From 6f04cd1f003b67d7496e9311c1db55c9c9df9e14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez=20Ruiz?= Date: Mon, 19 Dec 2016 08:19:23 +0100 Subject: [PATCH] Changes in services integration --- .../eShopOnContainers.Xamarin.Tests.sln | 5 ++ .../eShopOnContainers.Core/GlobalSettings.cs | 2 +- .../Models/Orders/Order.cs | 54 ++++++++++++------- .../Models/Orders/OrderItem.cs | 2 +- .../Services/Basket/BasketMockService.cs | 4 +- .../Services/Catalog/CatalogMockService.cs | 10 ++-- .../Services/Common/Common.cs | 14 +++-- .../Services/Identity/IdentityService.cs | 2 +- .../Services/Order/IOrderService.cs | 8 +-- .../Services/Order/OrderMockService.cs | 36 ++++++++----- .../Services/Order/OrderService.cs | 16 +++--- .../RequestProvider/RequestProvider.cs | 7 ++- .../ViewModels/BasketViewModel.cs | 2 - .../ViewModels/CheckoutViewModel.cs | 33 +++++++----- .../ViewModels/ProfileViewModel.cs | 4 +- 15 files changed, 118 insertions(+), 81 deletions(-) diff --git a/src/Mobile/eShopOnContainers.Xamarin.Tests.sln b/src/Mobile/eShopOnContainers.Xamarin.Tests.sln index ba9396937..ee7f86dc1 100644 --- a/src/Mobile/eShopOnContainers.Xamarin.Tests.sln +++ b/src/Mobile/eShopOnContainers.Xamarin.Tests.sln @@ -153,6 +153,7 @@ Global {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x64.ActiveCfg = Debug|iPhone {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Debug|x86.ActiveCfg = Debug|iPhone {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.ActiveCfg = Release|iPhone + {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|Any CPU.Build.0 = Release|iPhone {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|ARM.ActiveCfg = Release|iPhone {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.ActiveCfg = Release|iPhone {6EEB23DC-7063-4444-9AF8-90DF24F549C0}.Release|iPhone.Build.0 = Release|iPhone @@ -263,6 +264,8 @@ Global {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Build.0 = Debug|x86 {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Debug|x86.Deploy.0 = Debug|x86 {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.ActiveCfg = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.Build.0 = Release|x86 + {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|Any CPU.Deploy.0 = Release|x86 {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.ActiveCfg = Release|ARM {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Build.0 = Release|ARM {C3C1E2CF-B1F7-4654-BBDC-50143DB22E0B}.Release|ARM.Deploy.0 = Release|ARM @@ -420,6 +423,7 @@ Global {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x64.ActiveCfg = Debug|iPhone {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Debug|x86.ActiveCfg = Debug|iPhone {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.ActiveCfg = Release|iPhone + {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|Any CPU.Build.0 = Release|iPhone {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|ARM.ActiveCfg = Release|iPhone {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.ActiveCfg = Release|iPhone {B68C2B56-7581-46AE-B55D-D25DDFD3BFE3}.Release|iPhone.Build.0 = Release|iPhone @@ -482,6 +486,7 @@ Global {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Build.0 = Debug|x86 {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Debug|x86.Deploy.0 = Debug|x86 {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|Any CPU.ActiveCfg = Release|x86 + {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|Any CPU.Build.0 = Release|x86 {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.ActiveCfg = Release|ARM {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Build.0 = Release|ARM {02680C26-CA1D-4D9D-A7E3-D66AF5BE6F2F}.Release|ARM.Deploy.0 = Release|ARM diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs index 6e6ddc526..c8abaaa5d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/GlobalSettings.cs @@ -7,7 +7,7 @@ public GlobalSetting() { - BaseEndpoint = "http://104.40.62.65"; + BaseEndpoint = "http://13.88.8.119"; } public static GlobalSetting Instance diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs index f637851a8..2d3e3c6b2 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/Order.cs @@ -1,7 +1,7 @@ -using eShopOnContainers.Core.Models.User; -using System; +using System; using System.Collections.Generic; using System.Linq; +using Newtonsoft.Json; namespace eShopOnContainers.Core.Models.Orders { @@ -9,34 +9,52 @@ namespace eShopOnContainers.Core.Models.Orders { public Order() { + SequenceNumber = 1; OrderItems = new List(); - ShippingAddress = new Address(); - PaymentInfo = new PaymentInfo(); } - public string Id; - public List OrderItems { get; set; } + public string BuyerId { get; set; } - public string OrderNumber - { - 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 DateTime OrderDate { get; set; } + public OrderState State { get; set; } + public string ShippingCity { get; set; } + + public string ShippingStreet { get; set; } + + public string ShippingState { get; set; } + + public string ShippingCountry { get; set; } + + public string CardType { get; set; } + + public string CardNumber { get; set; } + + public string CardHolderName { get; set; } + + public DateTime CardExpiration { get; set; } + + public string CardSecurityNumber { get; set; } + + [JsonProperty("items")] + public List OrderItems { get; set; } + public decimal Total { get { return CalculateTotal(); } } + public string OrderNumber { get { return CalculateOrderNumber(); } } + - public decimal CalculateTotal() + 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); + } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs index f0cc72e12..5c7565ce7 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Models/Orders/OrderItem.cs @@ -4,7 +4,7 @@ namespace eShopOnContainers.Core.Models.Orders { public class OrderItem { - public Guid ProductId { get; set; } + public string ProductId { get; set; } public Guid OrderId { get; set; } public decimal UnitPrice { get; set; } public string ProductName { get; set; } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs index 7028b646a..f2f465a47 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Basket/BasketMockService.cs @@ -12,8 +12,8 @@ namespace eShopOnContainers.Core.Services.Basket BuyerId = "9245fe4a-d402-451c-b9ed-9c1a04247482", Items = new List { - new BasketItem { Id = "1", PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_01.png" : "Assets/fake_product_01.png", ProductId = Common.Common.MockCatalogItemId01.ToString(), ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 19.50M }, - new BasketItem { Id = "2", PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_04.png" : "Assets/fake_product_04.png", ProductId = Common.Common.MockCatalogItemId04.ToString(), ProductName = ".NET Black Cupt", Quantity = 1, UnitPrice = 17.00M } + new BasketItem { Id = "1", PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_01.png" : "Assets/fake_product_01.png", ProductId = Common.Common.MockCatalogItemId01, ProductName = ".NET Bot Blue Sweatshirt (M)", Quantity = 1, UnitPrice = 19.50M }, + new BasketItem { Id = "2", PictureUrl = Device.OS != TargetPlatform.Windows ? "fake_product_04.png" : "Assets/fake_product_04.png", ProductId = Common.Common.MockCatalogItemId04, ProductName = ".NET Black Cupt", Quantity = 1, UnitPrice = 17.00M } } }; diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogMockService.cs index e8e757260..b37226b33 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogMockService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Catalog/CatalogMockService.cs @@ -24,11 +24,11 @@ namespace eShopOnContainers.Core.Services.Catalog private ObservableCollection MockCatalog = new ObservableCollection { - new CatalogItem { Id = Common.Common.MockCatalogItemId01.ToString(), PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_01.png" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, - new CatalogItem { Id = Common.Common.MockCatalogItemId02.ToString(), PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_02.png" : "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, - new CatalogItem { Id = Common.Common.MockCatalogItemId03.ToString(), PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_03.png" : "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, - new CatalogItem { Id = Common.Common.MockCatalogItemId04.ToString(), PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_04.png" : "Assets/fake_product_04.png", Name = ".NET Black Cupt", Price = 17.00M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 1, CatalogType = "Mug" }, - new CatalogItem { Id = Common.Common.MockCatalogItemId05.ToString(), PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_05.png" : "Assets/fake_product_05.png", Name = "Azure Black Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 1, CatalogBrand = "Azure", CatalogTypeId = 2, CatalogType = "T-Shirt" } + new CatalogItem { Id = Common.Common.MockCatalogItemId01, PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_01.png" : "Assets/fake_product_01.png", Name = ".NET Bot Blue Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, + new CatalogItem { Id = Common.Common.MockCatalogItemId02, PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_02.png" : "Assets/fake_product_02.png", Name = ".NET Bot Purple Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, + new CatalogItem { Id = Common.Common.MockCatalogItemId03, PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_03.png" : "Assets/fake_product_03.png", Name = ".NET Bot Black Sweatshirt (M)", Price = 19.95M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 2, CatalogType = "T-Shirt" }, + new CatalogItem { Id = Common.Common.MockCatalogItemId04, PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_04.png" : "Assets/fake_product_04.png", Name = ".NET Black Cupt", Price = 17.00M, CatalogBrandId = 2, CatalogBrand = "Visual Studio", CatalogTypeId = 1, CatalogType = "Mug" }, + new CatalogItem { Id = Common.Common.MockCatalogItemId05, PictureUri = Device.OS != TargetPlatform.Windows ? "fake_product_05.png" : "Assets/fake_product_05.png", Name = "Azure Black Sweatshirt (M)", Price = 19.50M, CatalogBrandId = 1, CatalogBrand = "Azure", CatalogTypeId = 2, CatalogType = "T-Shirt" } }; public async Task> GetCatalogAsync() diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Common/Common.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Common/Common.cs index 852bb0f42..5fdb57227 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Common/Common.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Common/Common.cs @@ -1,13 +1,11 @@ -using System; - -namespace eShopOnContainers.Core.Services.Common +namespace eShopOnContainers.Core.Services.Common { public static class Common { - public static Guid MockCatalogItemId01 = new Guid("0f8fad5b-d9cb-469f-a165-708677289501"); - public static Guid MockCatalogItemId02 = new Guid("0f8fad5b-d9cb-469f-a165-708677289502"); - public static Guid MockCatalogItemId03 = new Guid("0f8fad5b-d9cb-469f-a165-708677289503"); - public static Guid MockCatalogItemId04 = new Guid("0f8fad5b-d9cb-469f-a165-708677289504"); - public static Guid MockCatalogItemId05 = new Guid("0f8fad5b-d9cb-469f-a165-708677289505"); + public static string MockCatalogItemId01 = "1"; + public static string MockCatalogItemId02 = "2"; + public static string MockCatalogItemId03 = "3"; + public static string MockCatalogItemId04 = "4"; + public static string MockCatalogItemId05 = "5"; } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs index b6f61c420..36597ae12 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Identity/IdentityService.cs @@ -19,7 +19,7 @@ namespace eShopOnContainers.Core.Services.Identity var dic = new Dictionary(); dic.Add("client_id", "xamarin"); dic.Add("response_type", "id_token token"); - dic.Add("scope", "openid profile basket"); + dic.Add("scope", "openid profile basket orders"); dic.Add("redirect_uri", GlobalSetting.Instance.IdentityCallback); dic.Add("nonce", Guid.NewGuid().ToString("N")); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs index 5d63ea9e8..9636782ee 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/IOrderService.cs @@ -5,9 +5,9 @@ namespace eShopOnContainers.Core.Services.Order { public interface IOrderService { - Task CreateOrderAsync(Models.Orders.Order newOrder); - Task> GetOrdersAsync(); - Task GetOrderAsync(int orderId); - Task> GetCardTypesAsync(); + Task CreateOrderAsync(Models.Orders.Order newOrder, string token); + Task> GetOrdersAsync(string token); + Task GetOrderAsync(int orderId, string token); + Task> GetCardTypesAsync(string token); } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs index 41a81f53a..dc1fb1447 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderMockService.cs @@ -45,9 +45,9 @@ namespace eShopOnContainers.Core.Services.Order private List MockOrders = new List() { - 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 }, + 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 }, }; private static List MockOrderItems = new List() @@ -62,33 +62,45 @@ 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) + + public async Task CreateOrderAsync(Models.Orders.Order newOrder, string token) { await Task.Delay(500); - MockOrders.Insert(0, newOrder); + if (!string.IsNullOrEmpty(token)) + { + MockOrders.Insert(0, newOrder); + } } - public async Task> GetOrdersAsync() + public async Task> GetOrdersAsync(string token) { await Task.Delay(500); - return MockOrders.ToObservableCollection(); + if (!string.IsNullOrEmpty(token)) + return MockOrders.ToObservableCollection(); + else + return new ObservableCollection(); } - public async Task GetOrderAsync(int orderId) + public async Task GetOrderAsync(int orderId, string token) { await Task.Delay(500); - return MockOrders.FirstOrDefault(o => o.SequenceNumber == orderId); + if (!string.IsNullOrEmpty(token)) + return MockOrders.FirstOrDefault(o => o.SequenceNumber == orderId); + else + return new Models.Orders.Order(); } - public async Task> GetCardTypesAsync() + public async Task> GetCardTypesAsync(string token) { await Task.Delay(500); - return MockCardTypes.ToObservableCollection(); + if (!string.IsNullOrEmpty(token)) + return MockCardTypes.ToObservableCollection(); + else + return new ObservableCollection(); } } } \ No newline at end of file diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs index 50da93209..f9e307f9d 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/Order/OrderService.cs @@ -14,7 +14,7 @@ namespace eShopOnContainers.Core.Services.Order _requestProvider = requestProvider; } - public async Task CreateOrderAsync(Models.Orders.Order newOrder) + public async Task CreateOrderAsync(Models.Orders.Order newOrder, string token) { UriBuilder builder = new UriBuilder(GlobalSetting.Instance.OrdersEndpoint); @@ -22,10 +22,10 @@ namespace eShopOnContainers.Core.Services.Order string uri = builder.ToString(); - await _requestProvider.PostAsync(uri, newOrder); + await _requestProvider.PostAsync(uri, newOrder, token); } - public async Task> GetOrdersAsync() + public async Task> GetOrdersAsync(string token) { try { @@ -36,7 +36,7 @@ namespace eShopOnContainers.Core.Services.Order string uri = builder.ToString(); ObservableCollection orders = - await _requestProvider.GetAsync>(uri); + await _requestProvider.GetAsync>(uri, token); return orders; } @@ -46,7 +46,7 @@ namespace eShopOnContainers.Core.Services.Order } } - public async Task GetOrderAsync(int orderId) + public async Task GetOrderAsync(int orderId, string token) { try { @@ -57,7 +57,7 @@ namespace eShopOnContainers.Core.Services.Order string uri = builder.ToString(); Models.Orders.Order order = - await _requestProvider.GetAsync(uri); + await _requestProvider.GetAsync(uri, token); return order; } @@ -67,7 +67,7 @@ namespace eShopOnContainers.Core.Services.Order } } - public async Task> GetCardTypesAsync() + public async Task> GetCardTypesAsync(string token) { try { @@ -78,7 +78,7 @@ namespace eShopOnContainers.Core.Services.Order string uri = builder.ToString(); ObservableCollection cardTypes = - await _requestProvider.GetAsync>(uri); + await _requestProvider.GetAsync>(uri, token); return cardTypes; } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs index 0caca8fb4..38703f717 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/Services/RequestProvider/RequestProvider.cs @@ -101,18 +101,17 @@ namespace eShopOnContainers.Core.Services.RequestProvider private async Task HandleResponse(HttpResponseMessage response) { - // TODO: if (!response.IsSuccessStatusCode) { var content = await response.Content.ReadAsStringAsync(); - if (response.StatusCode == HttpStatusCode.Forbidden + 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); } } } diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs index 065f4549d..d56b11466 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/BasketViewModel.cs @@ -79,8 +79,6 @@ namespace eShopOnContainers.Core.ViewModels MessagingCenter.Subscribe(this, MessengerKeys.AddProduct, (sender, arg) => { - MessagingCenter.Unsubscribe(this, MessengerKeys.AddProduct); - BadgeCount++; AddCatalogItem(arg); diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs index 755b4599a..74c510359 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/CheckoutViewModel.cs @@ -83,26 +83,32 @@ namespace eShopOnContainers.Core.ViewModels ShippingAddress = new Address { - Street = userInfo.Street, - ZipCode = userInfo.ZipCode, - State = userInfo.State, - Country = userInfo.Country, + Street = userInfo?.Street, + ZipCode = userInfo?.ZipCode, + State = userInfo?.State, + Country = userInfo?.Country, }; var paymentInfo = new PaymentInfo { - CardNumber = userInfo.CardNumber, - CardHolderName = userInfo.CardHolder, - SecurityNumber = userInfo.CardSecurityNumber + CardNumber = userInfo?.CardNumber, + CardHolderName = userInfo?.CardHolder, + SecurityNumber = userInfo?.CardSecurityNumber }; - + Order = new Order { + BuyerId = userInfo.UserId, OrderItems = CreateOrderItems(orderItems), State = OrderState.InProcess, OrderDate = DateTime.Now, - PaymentInfo = paymentInfo, - ShippingAddress = _shippingAddress + CardHolderName = paymentInfo.CardHolderName, + CardNumber = paymentInfo.CardNumber, + CardSecurityNumber = paymentInfo.SecurityNumber, + CardExpiration = DateTime.Now.AddYears(5), + ShippingState = _shippingAddress.State, + ShippingCountry = _shippingAddress.Country, + ShippingStreet = _shippingAddress.Street }; IsBusy = false; @@ -113,14 +119,14 @@ namespace eShopOnContainers.Core.ViewModels { var authToken = Settings.AuthAccessToken; - await _orderService.CreateOrderAsync(Order); + await _orderService.CreateOrderAsync(Order, authToken); await _basketService.ClearBasketAsync(_shippingAddress.Id.ToString(), authToken); await NavigationService.NavigateToAsync(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.SequenceNumber), "Ok"); await NavigationService.RemoveLastFromBackStackAsync(); } @@ -132,8 +138,7 @@ namespace eShopOnContainers.Core.ViewModels { orderItems.Add(new OrderItem { - // TODO: - //ProductId = basketItem.ProductId, + ProductId = basketItem.ProductId, ProductName = basketItem.ProductName, PictureUrl = basketItem.PictureUrl, Quantity = basketItem.Quantity, diff --git a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs index e006b24c1..cd13bd970 100644 --- a/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs +++ b/src/Mobile/eShopOnContainers/eShopOnContainers.Core/ViewModels/ProfileViewModel.cs @@ -1,4 +1,5 @@ using eShopOnContainers.Core.Extensions; +using eShopOnContainers.Core.Helpers; using eShopOnContainers.Core.Models.Orders; using eShopOnContainers.Core.Models.User; using eShopOnContainers.Core.Services.Order; @@ -40,7 +41,8 @@ namespace eShopOnContainers.Core.ViewModels { IsBusy = true; - var orders = await _orderService.GetOrdersAsync(); + var authToken = Settings.AuthAccessToken; + var orders = await _orderService.GetOrdersAsync(authToken); Orders = orders.ToObservableCollection(); IsBusy = false;