Я пробовал много кода, даже переписывался с gpt и любым другим AI. Но я все еще застрял.
Моя ссылка на github: https://github.com/Thibaut501/Mango
Может кто-нибудь сказать мне, где находится ошибка?
Это в Visual Studio 2022. Это проект ASP.NET MVC, основанный на микросервисах.
Код: Выделить всё
using Mango.Web.Models;
using Mango.Web.Service;
using Mango.Web.Service.IService;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System.IdentityModel.Tokens.Jwt;
namespace Mango.Web.Controllers
{
public class CartController : Controller
{
private readonly ICartService _cartService;
private readonly IOrderService _orderService;
private readonly ILogger _logger; // Add logger
public CartController(ICartService cartService, IOrderService orderService, ILogger logger)
{
_cartService = cartService;
_orderService = orderService;
_logger = logger; // Assign logger
}
[Authorize]
public async Task CartIndex()
{
return View(await LoadCartDtoBasedOnLoggedInUser());
}
[Authorize]
public async Task Checkout()
{
return View(await LoadCartDtoBasedOnLoggedInUser());
}
[HttpPost]
[ActionName("Checkout")]
public async Task Checkout(CartDto cartDto)
{
CartDto cart = await LoadCartDtoBasedOnLoggedInUser();
if (cart != null)
{
_logger.LogInformation("Updating cart with item count: {Count}", cart.CartDetails?.Count()); // Log the cart item count
}
cart.CartHeader.Phone = cartDto.CartHeader.Phone;
cart.CartHeader.Email = cartDto.CartHeader.Email;
cart.CartHeader.Name = cartDto.CartHeader.Name;
var response = await _orderService.CreateOrder(cart);
if (response != null && response.IsSuccess)
{
_logger.LogInformation("Order successfully created for user ID: {UserId}", cart.CartHeader.UserId);
// Proceed with Stripe session or order confirmation
}
else
{
_logger.LogWarning("Order creation failed for user ID: {UserId}", cart.CartHeader.UserId);
}
return View(cart);
}
public async Task Confirmation(int orderId)
{
return View(orderId);
}
public async Task Remove(int cartDetailsId)
{
var userId = User.Claims.Where(u => u.Type == JwtRegisteredClaimNames.Sub)?.FirstOrDefault()?.Value;
ResponseDto? response = await _cartService.RemoveFromCartAsync(cartDetailsId);
if (response != null && response.IsSuccess)
{
TempData["success"] = "Cart updated successfully";
return RedirectToAction(nameof(CartIndex));
}
return View();
}
[HttpPost]
public async Task ApplyCoupon(CartDto cartDto)
{
ResponseDto? response = await _cartService.ApplyCouponAsync(cartDto);
if (response != null && response.IsSuccess)
{
TempData["success"] = "Cart updated successfully";
return RedirectToAction(nameof(CartIndex));
}
return View();
}
[HttpPost]
public async Task RemoveCoupon(CartDto cartDto)
{
cartDto.CartHeader.CouponCode = "";
ResponseDto? response = await _cartService.ApplyCouponAsync(cartDto);
if (response != null & response.IsSuccess)
{
TempData["success"] = "Cart updated successfully";
return RedirectToAction(nameof(CartIndex));
}
return View();
}
private async Task LoadCartDtoBasedOnLoggedInUser()
{
var userId = User.Claims.Where(u => u.Type == JwtRegisteredClaimNames.Sub)?.FirstOrDefault()?.Value;
ResponseDto? response = await _cartService.GetCartByUserIdAsnyc(userId);
if (response != null && response.IsSuccess)
{
CartDto cartDto = JsonConvert.DeserializeObject(Convert.ToString(response.Result));
return cartDto;
}
return new CartDto();
}
}
}
Спасибо,
Фабрис
Подробнее здесь: https://stackoverflow.com/questions/791 ... ed-to-cart