|
|
@ -3,11 +3,13 @@ using Microsoft.AspNetCore.Identity; |
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
using Microsoft.AspNetCore.Mvc; |
|
|
using Microsoft.AspNetCore.Mvc.RazorPages; |
|
|
using Microsoft.AspNetCore.Mvc.RazorPages; |
|
|
using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate; |
|
|
using Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate; |
|
|
|
|
|
using Microsoft.eShopWeb.ApplicationCore.Exceptions; |
|
|
using Microsoft.eShopWeb.ApplicationCore.Interfaces; |
|
|
using Microsoft.eShopWeb.ApplicationCore.Interfaces; |
|
|
using Microsoft.eShopWeb.Infrastructure.Identity; |
|
|
using Microsoft.eShopWeb.Infrastructure.Identity; |
|
|
using Microsoft.eShopWeb.Web.Interfaces; |
|
|
using Microsoft.eShopWeb.Web.Interfaces; |
|
|
using System; |
|
|
using System; |
|
|
using System.Collections.Generic; |
|
|
using System.Collections.Generic; |
|
|
|
|
|
using System.Linq; |
|
|
using System.Threading.Tasks; |
|
|
using System.Threading.Tasks; |
|
|
|
|
|
|
|
|
namespace Microsoft.eShopWeb.Web.Pages.Basket |
|
|
namespace Microsoft.eShopWeb.Web.Pages.Basket |
|
|
@ -19,16 +21,19 @@ namespace Microsoft.eShopWeb.Web.Pages.Basket |
|
|
private readonly IOrderService _orderService; |
|
|
private readonly IOrderService _orderService; |
|
|
private string _username = null; |
|
|
private string _username = null; |
|
|
private readonly IBasketViewModelService _basketViewModelService; |
|
|
private readonly IBasketViewModelService _basketViewModelService; |
|
|
|
|
|
private readonly IAppLogger<CheckoutModel> _logger; |
|
|
|
|
|
|
|
|
public CheckoutModel(IBasketService basketService, |
|
|
public CheckoutModel(IBasketService basketService, |
|
|
IBasketViewModelService basketViewModelService, |
|
|
IBasketViewModelService basketViewModelService, |
|
|
SignInManager<ApplicationUser> signInManager, |
|
|
SignInManager<ApplicationUser> signInManager, |
|
|
IOrderService orderService) |
|
|
IOrderService orderService, |
|
|
|
|
|
IAppLogger<CheckoutModel> logger) |
|
|
{ |
|
|
{ |
|
|
_basketService = basketService; |
|
|
_basketService = basketService; |
|
|
_signInManager = signInManager; |
|
|
_signInManager = signInManager; |
|
|
_orderService = orderService; |
|
|
_orderService = orderService; |
|
|
_basketViewModelService = basketViewModelService; |
|
|
_basketViewModelService = basketViewModelService; |
|
|
|
|
|
_logger = logger; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public BasketViewModel BasketModel { get; set; } = new BasketViewModel(); |
|
|
public BasketViewModel BasketModel { get; set; } = new BasketViewModel(); |
|
|
@ -44,15 +49,28 @@ namespace Microsoft.eShopWeb.Web.Pages.Basket |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public async Task<IActionResult> OnPost(Dictionary<string, int> items) |
|
|
public async Task<IActionResult> OnPost(IEnumerable<BasketItemViewModel> items) |
|
|
{ |
|
|
{ |
|
|
await SetBasketModelAsync(); |
|
|
try |
|
|
|
|
|
{ |
|
|
await _basketService.SetQuantities(BasketModel.Id, items); |
|
|
await SetBasketModelAsync(); |
|
|
|
|
|
|
|
|
await _orderService.CreateOrderAsync(BasketModel.Id, new Address("123 Main St.", "Kent", "OH", "United States", "44240")); |
|
|
if (!ModelState.IsValid) |
|
|
|
|
|
{ |
|
|
|
|
|
return BadRequest(); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
await _basketService.DeleteBasketAsync(BasketModel.Id); |
|
|
var updateModel = items.ToDictionary(b => b.Id.ToString(), b => b.Quantity); |
|
|
|
|
|
await _basketService.SetQuantities(BasketModel.Id, updateModel); |
|
|
|
|
|
await _orderService.CreateOrderAsync(BasketModel.Id, new Address("123 Main St.", "Kent", "OH", "United States", "44240")); |
|
|
|
|
|
await _basketService.DeleteBasketAsync(BasketModel.Id); |
|
|
|
|
|
} |
|
|
|
|
|
catch (EmptyBasketOnCheckoutException emptyBasketOnCheckoutException) |
|
|
|
|
|
{ |
|
|
|
|
|
//Redirect to Empty Basket page
|
|
|
|
|
|
_logger.LogWarning(emptyBasketOnCheckoutException.Message); |
|
|
|
|
|
return RedirectToPage("/Basket/Index"); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
return RedirectToPage(); |
|
|
return RedirectToPage(); |
|
|
} |
|
|
} |
|
|
|