I want to transfer some ChefFoodId s from my main page to AddToCardMethod
but firt it had to transfer to login and then goes to AddToCard Method
But how can I Transfer all ChefFoodId s that get
this is my script:
$(document).ready(function () {
var chefFoodIds = [];
$(document).on("click", ".add-to-cart", function (e) {
e.preventDefault();
var cartCount = +$(".cart-counter").html();
$(".cart-counter").html(cartCount + 1);
var chefFoodId = $(this).data('id');
chefFoodIds.push(chefFoodId);
});
$("#cart-link").click(function (e) {
e.preventDefault();
var isAuthenticated = $('#isAuthenticated').val() === 'true';
if (isAuthenticated) {
var chefFoodIdsString = chefFoodIds.join(',');
var returnUrl = $('#hidden-returnUrl').val() || '/UserPanel/AddToCart';
if (!returnUrl || chefFoodIds.length === 0) {
window.location.href = '/UserPanel/AddToCart';
return;
}
$("#cart-chefFoodIds").val(chefFoodIdsString);
$("#cart-form").attr('action', returnUrl);
$("#cart-form").submit();
chefFoodIds = [];
} else {
var returnUrl = $('#hidden-returnUrl').val() || '/UserPanel/AddToCart';
$('#Login').modal('show');
$('#Login').find('.modal-content').load('/Account/Login', function () {
$('#hidden-chefFoodIds').val(chefFoodIds.join(','));
$('#hidden-returnUrl').val(returnUrl);
});
}
});
});
and I want to pass all ids to Post Login method and the goes to AddTocard method: in User Panel
[HttpGet("/UserPanel/AddToCart")]
public async Task<IActionResult> AddToCart(List<int> chefFoodIds)
{
var chefFoodIdsClaim = User.FindFirst("ChefFoodIds")?.Value;
List<int> chefFoodId = new List<int>();
if (!string.IsNullOrEmpty(chefFoodIdsClaim))
{
chefFoodIds = chefFoodIdsClaim.Split(',').Select(int.Parse).ToList();
}
var cartItems =await _orderService.GetCartItemForShow(chefFoodIds);
return View(cartItems);
}
[HttpPost("Login")]
public async Task<IActionResult> Login(LoginViewModeal login)
{
if (ModelState.IsValid)
{
if (string.IsNullOrEmpty(login.Mobile) || string.IsNullOrEmpty(login.Password))
{
ModelState.AddModelError("", "Phone number and password are required.");
return View(login);
}
// Check for ChefFoodId and ReturnUrl
if (login.ChefFoodIds == null || login.ChefFoodIds.Count == 0)
{
login.ChefFoodIds = new List<int> { 0 }; // Set ChefFoodIds to [0]
}
if (string.IsNullOrEmpty(login.ReturnUrl))
{
login.ReturnUrl = null; // Set ReturnUrl to null
}
var result = await _userService.LoginClient(login);
switch (result)
{
case LoginClientResult.UserNotFound:
TempData[ErrorMessage] = "User Is not Found";
break;
case LoginClientResult.NotActive:
TempData[WarningMessage] = "You Are not Active User";
break;
case LoginClientResult.Success:
var client = await _userService.GetClientByMobile(login.Mobile);
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, client.ClientId.ToString()),
new Claim(ClaimTypes.MobilePhone, client.MobileNumber),
new Claim(ClaimTypes.Email, client.Email),
new Claim("ChefFoodIds", string.Join(",", login.ChefFoodIds))
};
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
var properties = new AuthenticationProperties
{
IsPersistent = login.RememberMe
};
await HttpContext.SignInAsync(principal, properties);
TempData[SuccessMessage] = "You are login Successfully";
if (Url.IsLocalUrl(login.ReturnUrl) && !string.IsNullOrEmpty(login.ReturnUrl))
{
return Redirect(login.ReturnUrl);
}
return RedirectToAction("Index", "Home");
}
}
// If login fails, return the view with the login modal
return RedirectToAction("Index", "Home", PartialView("LoginModalPartial", login));
}