Loading PresentationLayer.Mvc/Areas/Customer/Controllers/CartController.cs +12 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpGet] public async Task<ActionResult> Index() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); return View(cartItems); Loading @@ -22,7 +25,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpPost] public async Task<IActionResult> AddToCart(AddToCartDto addToCartDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.AddToCartAsync(addToCartDto, userId); if (!success) ViewData[Constants.Keys.ErrorMessage] = "Failed to add item to cart."; Loading @@ -33,7 +39,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpPost] public async Task<IActionResult> DeleteCartItem(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.DeleteCartItemByIdAsync(id, userId); if (!success) ViewData[Constants.Keys.ErrorMessage] = "Failed to delete item from cart."; Loading PresentationLayer.Mvc/Areas/Customer/Controllers/OrderController.cs +16 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Index([FromQuery] PaginationDto pagination) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var orders = await orderService.GetOrdersByUserIdAsync(userId, pagination); return View(orders); Loading @@ -26,7 +29,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Details(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var order = await orderService.GetOrderDetailByIdAsync(id); if (order is null || order.UserId != userId) return Unauthorized(); Loading @@ -37,7 +43,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Create() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); Loading @@ -47,7 +56,10 @@ public class OrderController( [HttpPost] public async Task<ActionResult> Create(CreateOrderDto orderDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); Loading PresentationLayer.Mvc/Areas/Customer/Controllers/ProductController.cs +20 −5 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ public class ProductController( [HttpGet] public async Task<IActionResult> Details(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var product = await productService.GetProductDetailByIdAsync(id); if (product is null) return NotFound(); Loading @@ -49,7 +52,10 @@ public class ProductController( [RedirectIfNotAuthenticatedActionFilter] public async Task<IActionResult> AddToCart(AddToCartDto addToCartDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.AddToCartAsync(addToCartDto, userId); var product = await productService.GetProductDetailByIdAsync(addToCartDto.ProductId); Loading @@ -64,7 +70,10 @@ public class ProductController( [RedirectIfNotAdminActionFilter] public async Task<IActionResult> AddToWishlist(int productId) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } await wishListItemService.CreateWishListItemAsync(new WishListItemDto { Loading @@ -81,7 +90,10 @@ public class ProductController( { if (!ModelState.IsValid) return RedirectToAction(nameof(Details), new { id = reviewDto.ProductId }); int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } reviewDto.UserId = userId; var review = await reviewService.CreateReviewAsync(reviewDto); Loading @@ -94,7 +106,10 @@ public class ProductController( [RedirectIfNotAuthenticatedActionFilter] public async Task<IActionResult> DeleteReview(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var review = await reviewService.GetReviewByIdAsync(id); if (review is null || (review.UserId != userId && !User.IsInRole(UserRole.Admin.ToString()))) Loading PresentationLayer.Mvc/Areas/Customer/Controllers/WishlistController.cs +8 −2 Original line number Diff line number Diff line Loading @@ -13,7 +13,10 @@ public class WishlistController(IWishListItemService wishListItemService, ICartI [HttpGet] public async Task<ActionResult> Index() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var wishListItems = await wishListItemService.GetWishListItemsByUserIdAsync(userId); return View(wishListItems); Loading @@ -29,7 +32,10 @@ public class WishlistController(IWishListItemService wishListItemService, ICartI public async Task<IActionResult> AddToCart(int productId) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var addToCartDto = new AddToCartDto { Loading Loading
PresentationLayer.Mvc/Areas/Customer/Controllers/CartController.cs +12 −3 Original line number Diff line number Diff line Loading @@ -13,7 +13,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpGet] public async Task<ActionResult> Index() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); return View(cartItems); Loading @@ -22,7 +25,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpPost] public async Task<IActionResult> AddToCart(AddToCartDto addToCartDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.AddToCartAsync(addToCartDto, userId); if (!success) ViewData[Constants.Keys.ErrorMessage] = "Failed to add item to cart."; Loading @@ -33,7 +39,10 @@ public class CartController(ICartItemService cartItemService) : Controller [HttpPost] public async Task<IActionResult> DeleteCartItem(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.DeleteCartItemByIdAsync(id, userId); if (!success) ViewData[Constants.Keys.ErrorMessage] = "Failed to delete item from cart."; Loading
PresentationLayer.Mvc/Areas/Customer/Controllers/OrderController.cs +16 −4 Original line number Diff line number Diff line Loading @@ -17,7 +17,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Index([FromQuery] PaginationDto pagination) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var orders = await orderService.GetOrdersByUserIdAsync(userId, pagination); return View(orders); Loading @@ -26,7 +29,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Details(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var order = await orderService.GetOrderDetailByIdAsync(id); if (order is null || order.UserId != userId) return Unauthorized(); Loading @@ -37,7 +43,10 @@ public class OrderController( [HttpGet] public async Task<ActionResult> Create() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); Loading @@ -47,7 +56,10 @@ public class OrderController( [HttpPost] public async Task<ActionResult> Create(CreateOrderDto orderDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var cartItems = await cartItemService.GetCartItemsByUserIdAsync(userId); Loading
PresentationLayer.Mvc/Areas/Customer/Controllers/ProductController.cs +20 −5 Original line number Diff line number Diff line Loading @@ -27,7 +27,10 @@ public class ProductController( [HttpGet] public async Task<IActionResult> Details(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var product = await productService.GetProductDetailByIdAsync(id); if (product is null) return NotFound(); Loading @@ -49,7 +52,10 @@ public class ProductController( [RedirectIfNotAuthenticatedActionFilter] public async Task<IActionResult> AddToCart(AddToCartDto addToCartDto) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var success = await cartItemService.AddToCartAsync(addToCartDto, userId); var product = await productService.GetProductDetailByIdAsync(addToCartDto.ProductId); Loading @@ -64,7 +70,10 @@ public class ProductController( [RedirectIfNotAdminActionFilter] public async Task<IActionResult> AddToWishlist(int productId) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } await wishListItemService.CreateWishListItemAsync(new WishListItemDto { Loading @@ -81,7 +90,10 @@ public class ProductController( { if (!ModelState.IsValid) return RedirectToAction(nameof(Details), new { id = reviewDto.ProductId }); int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } reviewDto.UserId = userId; var review = await reviewService.CreateReviewAsync(reviewDto); Loading @@ -94,7 +106,10 @@ public class ProductController( [RedirectIfNotAuthenticatedActionFilter] public async Task<IActionResult> DeleteReview(int id) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var review = await reviewService.GetReviewByIdAsync(id); if (review is null || (review.UserId != userId && !User.IsInRole(UserRole.Admin.ToString()))) Loading
PresentationLayer.Mvc/Areas/Customer/Controllers/WishlistController.cs +8 −2 Original line number Diff line number Diff line Loading @@ -13,7 +13,10 @@ public class WishlistController(IWishListItemService wishListItemService, ICartI [HttpGet] public async Task<ActionResult> Index() { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var wishListItems = await wishListItemService.GetWishListItemsByUserIdAsync(userId); return View(wishListItems); Loading @@ -29,7 +32,10 @@ public class WishlistController(IWishListItemService wishListItemService, ICartI public async Task<IActionResult> AddToCart(int productId) { int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId); if (!int.TryParse(User.FindFirstValue(ClaimTypes.Sid) ?? string.Empty, out var userId)) { return BadRequest(); } var addToCartDto = new AddToCartDto { Loading