public async Task AddItem()

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();
        }