committed by
GitHub
7 changed files with 92 additions and 27 deletions
@ -1,4 +1,5 @@ |
|||
@page |
|||
@model CheckoutModel |
|||
@{ |
|||
ViewData["Title"] = "Checkout Complete"; |
|||
} |
|||
@ -0,0 +1,85 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Microsoft.AspNetCore.Mvc.RazorPages; |
|||
using Microsoft.eShopWeb.RazorPages.ViewModels; |
|||
using Microsoft.eShopWeb.RazorPages.Interfaces; |
|||
using ApplicationCore.Interfaces; |
|||
using Microsoft.AspNetCore.Identity; |
|||
using Infrastructure.Identity; |
|||
using System; |
|||
using Microsoft.AspNetCore.Http; |
|||
using System.Collections.Generic; |
|||
using ApplicationCore.Entities.OrderAggregate; |
|||
|
|||
namespace Microsoft.eShopWeb.RazorPages.Pages.Basket |
|||
{ |
|||
public class CheckoutModel : PageModel |
|||
{ |
|||
private readonly IBasketService _basketService; |
|||
private readonly IUriComposer _uriComposer; |
|||
private readonly SignInManager<ApplicationUser> _signInManager; |
|||
private readonly IOrderService _orderService; |
|||
private string _username = null; |
|||
private readonly IBasketViewModelService _basketViewModelService; |
|||
|
|||
public CheckoutModel(IBasketService basketService, |
|||
IBasketViewModelService basketViewModelService, |
|||
IUriComposer uriComposer, |
|||
SignInManager<ApplicationUser> signInManager, |
|||
IOrderService orderService) |
|||
{ |
|||
_basketService = basketService; |
|||
_uriComposer = uriComposer; |
|||
_signInManager = signInManager; |
|||
_orderService = orderService; |
|||
_basketViewModelService = basketViewModelService; |
|||
} |
|||
|
|||
public BasketViewModel BasketModel { get; set; } = new BasketViewModel(); |
|||
|
|||
public void OnGet() |
|||
{ |
|||
|
|||
} |
|||
|
|||
public async Task<IActionResult> OnPost(Dictionary<string,int> items) |
|||
{ |
|||
await SetBasketModelAsync(); |
|||
|
|||
await _basketService.SetQuantities(BasketModel.Id, items); |
|||
|
|||
await _orderService.CreateOrderAsync(BasketModel.Id, new Address("123 Main St.", "Kent", "OH", "United States", "44240")); |
|||
|
|||
await _basketService.DeleteBasketAsync(BasketModel.Id); |
|||
|
|||
return RedirectToPage(); |
|||
} |
|||
|
|||
private async Task SetBasketModelAsync() |
|||
{ |
|||
if (_signInManager.IsSignedIn(HttpContext.User)) |
|||
{ |
|||
BasketModel = await _basketViewModelService.GetOrCreateBasketForUser(User.Identity.Name); |
|||
} |
|||
else |
|||
{ |
|||
GetOrSetBasketCookieAndUserName(); |
|||
BasketModel = await _basketViewModelService.GetOrCreateBasketForUser(_username); |
|||
} |
|||
} |
|||
|
|||
private void GetOrSetBasketCookieAndUserName() |
|||
{ |
|||
if (Request.Cookies.ContainsKey(Constants.BASKET_COOKIENAME)) |
|||
{ |
|||
_username = Request.Cookies[Constants.BASKET_COOKIENAME]; |
|||
} |
|||
if (_username != null) return; |
|||
|
|||
_username = Guid.NewGuid().ToString(); |
|||
var cookieOptions = new CookieOptions(); |
|||
cookieOptions.Expires = DateTime.Today.AddYears(10); |
|||
Response.Cookies.Append(Constants.BASKET_COOKIENAME, _username, cookieOptions); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue