Exemple #1
0
        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));
        }
Exemple #2
0
        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()));
            }
        }