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();
}
}
}
Только элементы Cart не добавляются при добавлении в корзину, купоны отображаются, но не применяются или не удаляют, а предметы не обновляются также на странице Cartindex .
Пожалуйста, помогите найти решение.
Не могу добавить элементы в корзину или количество обновлений для веб -страницы Mango. Услуги. < /p> [code]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;
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); }
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(); } } } [/code] Только элементы Cart не добавляются при добавлении в корзину, купоны отображаются, но не применяются или не удаляют, а предметы не обновляются также на странице Cartindex . Пожалуйста, помогите найти решение.
Не могу добавлять товары в корзину или обновлять счетчики на веб-странице Mango.
Я пробовал много кода, даже переписывался с gpt и любым другим AI. Но я все еще застрял.
Моя ссылка на github:
Может кто-нибудь сказать мне, где находится ошибка?
Это...
Не могу добавлять товары в корзину или обновлять счетчики на веб-странице Mango.
Я пробовал много кода, даже переписывался с gpt и любым другим AI. Но я все еще застрял.
Моя ссылка на github:
Может кто-нибудь сказать мне, где находится ошибка?
Это...
Я хочу сделать не введенный в систему пользователей, которые могут добавить элементы в свою корзину
, но когда я нажимаю «Добавить в корзину без элемента». from django.shortcuts import render
from django.http import JsonResponse
import json
import...
Я хочу сделать не введенный в систему пользователей, которые могут добавить элементы в свою корзину
, но когда я нажимаю «Добавить в корзину без элемента».from django.shortcuts import render
from django.http import JsonResponse
import json
import...
Я хочу сделать не введенный в систему пользователей, которые могут добавить элементы в свою корзину
, но когда я нажимаю «Добавить в корзину без элемента».from django.shortcuts import render
from django.http import JsonResponse
import json
import...