Skip to content

Commit c00ccfe

Browse files
committed
cart page developed
1 parent 9992938 commit c00ccfe

File tree

7 files changed

+124
-57
lines changed

7 files changed

+124
-57
lines changed

AspnetRunBasics/Pages/Cart.cshtml

Lines changed: 37 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@
44
ViewData["Title"] = "Cart";
55
}
66

7-
<section class="jumbotron text-center">
8-
<div class="container">
9-
<h1 class="jumbotron-heading">E-COMMERCE CART</h1>
7+
<div class="container">
8+
<div class="row">
9+
<div class="col">
10+
<nav aria-label="breadcrumb">
11+
<ol class="breadcrumb">
12+
<li class="breadcrumb-item"><a asp-page="Index">Home</a></li>
13+
<li class="breadcrumb-item active" aria-current="page">Shopping Cart</li>
14+
</ol>
15+
</nav>
16+
</div>
1017
</div>
11-
</section>
18+
</div>
1219

1320
<div class="container mb-4">
1421
<div class="row">
@@ -26,53 +33,34 @@
2633
</tr>
2734
</thead>
2835
<tbody>
29-
<tr>
30-
<td><img src="https://dummyimage.com/50x50/55595c/fff" /> </td>
31-
<td>Product Name Dada</td>
32-
<td>In stock</td>
33-
<td><input class="form-control" type="text" value="1" /></td>
34-
<td class="text-right">124,90 €</td>
35-
<td class="text-right"><button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i> </button> </td>
36-
</tr>
37-
<tr>
38-
<td><img src="https://dummyimage.com/50x50/55595c/fff" /> </td>
39-
<td>Product Name Toto</td>
40-
<td>In stock</td>
41-
<td><input class="form-control" type="text" value="1" /></td>
42-
<td class="text-right">33,90 €</td>
43-
<td class="text-right"><button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i> </button> </td>
44-
</tr>
45-
<tr>
46-
<td><img src="https://dummyimage.com/50x50/55595c/fff" /> </td>
47-
<td>Product Name Titi</td>
48-
<td>In stock</td>
49-
<td><input class="form-control" type="text" value="1" /></td>
50-
<td class="text-right">70,00 €</td>
51-
<td class="text-right"><button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i> </button> </td>
52-
</tr>
53-
<tr>
54-
<td></td>
55-
<td></td>
56-
<td></td>
57-
<td></td>
58-
<td>Sub-Total</td>
59-
<td class="text-right">255,90 €</td>
60-
</tr>
61-
<tr>
62-
<td></td>
63-
<td></td>
64-
<td></td>
65-
<td></td>
66-
<td>Shipping</td>
67-
<td class="text-right">6,90 €</td>
68-
</tr>
36+
37+
@foreach (var cartItem in Model.Cart.Items)
38+
{
39+
<tr>
40+
<td><img src="https://dummyimage.com/50x50/55595c/fff" /></td>
41+
<td>@cartItem.Product.Name</td>
42+
<td>In stock</td>
43+
<td><input class="form-control" type="text" value="@cartItem.Quantity" /></td>
44+
<td class="text-right">@(cartItem.Price * cartItem.Quantity) $</td>
45+
<td class="text-right">
46+
47+
<form asp-page-handler="removetocart" method="post">
48+
<button class="btn btn-sm btn-danger"><i class="fa fa-trash"></i></button>
49+
<input type="hidden" asp-for="@Model.Cart.Id" name="cartId" />
50+
<input type="hidden" asp-for="@cartItem.Id" name="cartItemId" />
51+
</form>
52+
53+
</td>
54+
</tr>
55+
}
56+
6957
<tr>
7058
<td></td>
7159
<td></td>
7260
<td></td>
7361
<td></td>
7462
<td><strong>Total</strong></td>
75-
<td class="text-right"><strong>346,90 €</strong></td>
63+
<td class="text-right"><strong>@Model.TotalPrice $</strong></td>
7664
</tr>
7765
</tbody>
7866
</table>
@@ -81,14 +69,15 @@
8169
<div class="col mb-2">
8270
<div class="row">
8371
<div class="col-sm-12 col-md-6">
84-
<button class="btn btn-block btn-light">Continue Shopping</button>
72+
@*<button class="btn btn-lg btn-block btn-danger">Continue Shopping</button>*@
73+
<a asp-page="Product" class="btn btn-lg btn-block btn-success">Continue Shopping</a>
8574
</div>
8675
<div class="col-sm-12 col-md-6 text-right">
87-
<button class="btn btn-lg btn-block btn-success text-uppercase">Checkout</button>
76+
@*<button class="btn btn-lg btn-block btn-danger text-uppercase">CheckOut</button>*@
77+
<a asp-page="CheckOut" asp-route-cartId="@Model.Cart.Id" class="btn btn-lg btn-block btn-danger text-uppercase">CheckOut</a>
8878
</div>
8979
</div>
9080
</div>
9181
</div>
9282
</div>
9383

94-

AspnetRunBasics/Pages/Cart.cshtml.cs

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,44 @@
11
using System;
2-
using System.Collections.Generic;
3-
using System.Linq;
42
using System.Threading.Tasks;
3+
using AspnetRunBasics.Entities;
4+
using AspnetRunBasics.Repositories;
55
using Microsoft.AspNetCore.Mvc;
66
using Microsoft.AspNetCore.Mvc.RazorPages;
77

88
namespace AspnetRunBasics
99
{
1010
public class CartModel : PageModel
1111
{
12-
public void OnGet()
12+
private readonly ICartRepository _cartRepository;
13+
14+
public CartModel(ICartRepository cartRepository)
15+
{
16+
_cartRepository = cartRepository ?? throw new ArgumentNullException(nameof(cartRepository));
17+
}
18+
19+
public Entities.Cart Cart { get; set; } = new Entities.Cart();
20+
public decimal TotalPrice { get; set; } = 0;
21+
22+
public async Task<IActionResult> OnGetAsync()
1323
{
24+
Cart = await _cartRepository.GetCartByUserName("test");
25+
CalculateTotalPrice(Cart);
1426

27+
return Page();
28+
}
29+
30+
public async Task<IActionResult> OnPostRemoveToCartAsync(int cartId, int cartItemId)
31+
{
32+
await _cartRepository.RemoveItem(cartId, cartItemId);
33+
return RedirectToPage();
34+
}
35+
36+
private void CalculateTotalPrice(Cart cart)
37+
{
38+
foreach (var item in cart.Items)
39+
{
40+
TotalPrice += item.Price * item.Quantity;
41+
}
1542
}
1643
}
1744
}

AspnetRunBasics/Pages/CheckOut.cshtml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@page
2+
@model AspnetRunBasics.CheckOutModel
3+
@{
4+
ViewData["Title"] = "CheckOut";
5+
}
6+
7+
<h1>CheckOut</h1>
8+
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Threading.Tasks;
5+
using AspnetRunBasics.Repositories;
6+
using Microsoft.AspNetCore.Mvc;
7+
using Microsoft.AspNetCore.Mvc.RazorPages;
8+
9+
namespace AspnetRunBasics
10+
{
11+
public class CheckOutModel : PageModel
12+
{
13+
private readonly ICartRepository _cartRepository;
14+
private readonly IOrderRepository _orderRepository;
15+
16+
public CheckOutModel(ICartRepository cartRepository, IOrderRepository orderRepository)
17+
{
18+
_cartRepository = cartRepository ?? throw new ArgumentNullException(nameof(cartRepository));
19+
_orderRepository = orderRepository ?? throw new ArgumentNullException(nameof(orderRepository));
20+
}
21+
22+
public Entities.Order Order { get; set; }
23+
24+
[BindProperty]
25+
public string Color { get; set; }
26+
27+
[BindProperty]
28+
public int Quantity { get; set; }
29+
30+
public async Task<IActionResult> OnGetAsync(int? cartId)
31+
{
32+
33+
return Page();
34+
}
35+
36+
public async Task<IActionResult> OnPostCheckOutAsync()
37+
{
38+
//if (!User.Identity.IsAuthenticated)
39+
// return RedirectToPage("./Account/Login", new { area = "Identity" });
40+
return Page();
41+
}
42+
}
43+
}

AspnetRunBasics/Pages/Product.cshtml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
<div class="col">
1010
<nav aria-label="breadcrumb">
1111
<ol class="breadcrumb">
12-
<li class="breadcrumb-item"><a asp-page="Product">Home</a></li>
12+
<li class="breadcrumb-item"><a asp-page="Index">Home</a></li>
1313
<li class="breadcrumb-item"><a asp-page="Product">Category</a></li>
14-
<li class="breadcrumb-item active" aria-current="page">@Model.SelectedCategory</li>
14+
<li class="breadcrumb-item active" aria-current="page">@Model.SelectedCategory</li>
1515
</ol>
1616
</nav>
1717
</div>

AspnetRunBasics/Pages/ProductDetail.cshtml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
<div class="col">
1010
<nav aria-label="breadcrumb">
1111
<ol class="breadcrumb">
12-
<li class="breadcrumb-item"><a asp-page="Product">Home</a></li>
13-
<li class="breadcrumb-item"><a asp-page="Product">Category</a></li>
14-
<li class="breadcrumb-item active" aria-current="page">Product</li>
12+
<li class="breadcrumb-item"><a asp-page="Index">Home</a></li>
13+
<li class="breadcrumb-item"><a asp-page="Product">Product</a></li>
14+
<li class="breadcrumb-item active" aria-current="page">@Model.Product.Name</li>
1515
</ol>
1616
</nav>
1717
</div>

AspnetRunBasics/Repositories/CartRepository.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using AspnetRunBasics.Entities;
33
using Microsoft.EntityFrameworkCore;
44
using System;
5-
using System.Collections.Generic;
65
using System.Linq;
76
using System.Threading.Tasks;
87

@@ -21,6 +20,7 @@ public async Task<Cart> GetCartByUserName(string userName)
2120
{
2221
var cart = _dbContext.Carts
2322
.Include(c => c.Items)
23+
.ThenInclude(i => i.Product)
2424
.FirstOrDefault(c => c.UserName == userName);
2525

2626
if (cart != null)

0 commit comments

Comments
 (0)