in src/Modules/SimplCommerce.Module.WishList/Areas/WishList/Controllers/WishListController.cs [178:256]
public async Task<IActionResult> AddItem([FromBody] AddToWishList model)
{
if (ModelState.IsValid)
{
var user = await _workContext.GetCurrentUser();
var resultModel = new AddToWishListResult();
var product = await _productRepository
.Query()
.Include(x => x.ThumbnailImage)
.SingleOrDefaultAsync(x => x.Id == model.ProductId);
if (product == null)
{
return NotFound();
}
var wishList = await _wishListRepository
.Query()
.Include(x => x.Items)
.SingleOrDefaultAsync(x => x.UserId == user.Id);
if (wishList == null)
{
wishList = new Models.WishList()
{
UserId = user.Id
};
_wishListRepository.Add(wishList);
await _wishListRepository.SaveChangesAsync();
}
var existingWishlistItem = wishList
.Items
.SingleOrDefault(x => x.ProductId == model.ProductId);
if (existingWishlistItem != null)
{
resultModel.Message = "The product already exists in your wish list";
resultModel.Item = new WishListItemVm()
{
Id = existingWishlistItem.Id,
WishListId = wishList.Id,
ProductName = product.Name,
ProductImage = _mediaService.GetThumbnailUrl(product.ThumbnailImage),
Quantity = existingWishlistItem.Quantity,
};
}
else
{
var wishListItem = new WishListItem()
{
WishListId = wishList.Id,
ProductId = model.ProductId,
Quantity = model.Quantity
};
_wishListItemRepository.Add(wishListItem);
wishList.LatestUpdatedOn = DateTimeOffset.Now;
await _wishListRepository.SaveChangesAsync();
resultModel.Message = "The product has been added to your wish list";
resultModel.Item = new WishListItemVm()
{
Id = wishListItem.Id,
WishListId = wishList.Id,
ProductName = product.Name,
ProductImage = _mediaService.GetThumbnailUrl(product.ThumbnailImage),
Quantity = model.Quantity,
};
}
return PartialView("AddToWishListResult", resultModel);
}
return NotFound();
}