public async Task <BasketProductDto> CreateOrUpdateBasketProduct(BasketProductDto basketProductDto) { var basketProduct = await UnitOfWork.BasketProductRepository .FindByIdAsync(basketProductDto.BasketId, basketProductDto.ProductId); if (basketProductDto.Quantity > 0) { if (basketProduct is null) { basketProduct = new BasketProduct(); Mapper.Map(basketProductDto, basketProduct); UnitOfWork.BasketProductRepository.Add(basketProduct); } else { Mapper.Map(basketProductDto, basketProduct); UnitOfWork.BasketProductRepository.Update(basketProduct); } } else { if (basketProduct != null) { UnitOfWork.BasketProductRepository.Remove(basketProduct); } } await UnitOfWork.SaveChangesAsync(); return(Mapper.Map <BasketProductDto>(basketProduct)); }
public async Task <IActionResult> CreateOrUpdateBasketProduct( [FromQuery] int productId, [FromQuery] int quantity, [FromQuery] string userOrAnonymousId = null) { var basketUserOrAnonymousId = await SyncBasket(userOrAnonymousId); try { var basket = await GetOrCreateBasketAsync(basketUserOrAnonymousId); var dto = new BasketProductDto { BasketId = basket.Id, ProductId = productId, UnitPrice = (await _unitOfWork.ProductRepository.FindByIdAsync(productId)).Price, Quantity = quantity }; var res = await _basketService.CreateOrUpdateBasketProduct(dto); return(Ok(res)); } catch (Exception ex) { return(BadRequest(ex.ToString())); } }