public async Task <FavouringResponseOutDto> FavourizeAsync(ChoiseOfFavouringProductDto dto, string userId) { var result = new FavouringResponseOutDto { IsPositive = dto.Choise }; int[] usersFavouriteProducts = await userFavProdRepository.All().Where(x => x.UserId == userId).Select(x => x.ProductId).ToArrayAsync(); if (!(dto.Choise ^ usersFavouriteProducts.Contains(dto.ProductId))) { return(null); //fail } if (dto.Choise) { await userFavProdRepository.AddAssync(new UserFavouriteProduct { UserId = userId, ProductId = dto.ProductId }); result.TotalFavouredProducts = usersFavouriteProducts.Length + 1; } else { var favProduct = await userFavProdRepository.All().SingleAsync(x => x.ProductId == dto.ProductId && x.UserId == userId); userFavProdRepository.Remove(favProduct); result.TotalFavouredProducts = usersFavouriteProducts.Length - 1; } await userFavProdRepository.SaveChangesAsync(); return(result); }
//[IgnoreAntiforgeryToken] public async Task <string> Favourize(ChoiseOfFavouringProductDto dto) { //dto.Choise = dto.Choise ? false : true; var currentUser = await userManager.GetUserAsync(User); FavouringResponseOutDto result = await productsService.FavourizeAsync(dto, currentUser.Id); if (result is null) { return($"Fail! uncorrect operation!"); } if (result.IsPositive) { return($"Success this product was Added to favourite list. You now have {result.TotalFavouredProducts} favourite products!"); } return($"Success this product was Removed from favourite list. You now have {result.TotalFavouredProducts} favourite products!"); }