Files
FakePieShop/FakePieShop/Pages/CheckoutPage.cshtml.cs

50 lines
1.3 KiB
C#

using FakePieShop.Models;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
namespace FakePieShop.Pages
{
public class CheckoutPageModel : PageModel
{
private readonly IOrderRepository _orderRepository;
private readonly IShoppingCart _shoppingCart;
public CheckoutPageModel(IOrderRepository orderRepository, IShoppingCart shoppingCart)
{
_orderRepository = orderRepository;
_shoppingCart = shoppingCart;
}
[BindProperty]
public Order Order { get; set; } = default!;
public void OnGet()
{
}
public IActionResult OnPost()
{
if (!ModelState.IsValid)
{
return Page();
}
var items = _shoppingCart.GetShoppingCartItems();
_shoppingCart.ShoppingCartItems = items;
if (_shoppingCart.ShoppingCartItems.Count == 0)
{
ModelState.AddModelError("", "Your cart is empty, add some pies first");
}
if (ModelState.IsValid)
{
_orderRepository.CreateOrder(Order);
_shoppingCart.ClearCart();
return RedirectToPage("CheckoutCompletePage");
}
return Page();
}
}
}