50 lines
1.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|