Exemplo n.º 1
0
        private async Task <BasketOfItems> CreateBasketWithItems()
        {
            const long customerId     = 6L;
            var        basketToCreate = new CreateBasketModel()
            {
                CustomerId = customerId
            };

            // create the basket
            var basket = await _sut.CreateBasket(basketToCreate);

            var productId = 999L;
            var quantity  = 1;
            var model     = new UpdateBasketModel()
            {
                BasketId  = basket.Id,
                ProductId = productId,
                Quantity  = quantity
            };

            // update the basket with items
            var updatedBasket = await _sut.AddItemToBasket(model);

            return(updatedBasket);
        }
Exemplo n.º 2
0
        public async Task <BasketOfItems> RemoveItem(long basketId, long productId)
        {
            var model = new UpdateBasketModel
            {
                BasketId  = basketId,
                ProductId = productId,
                Quantity  = 0
            };

            return(await AddItemToBasket(model));
        }
Exemplo n.º 3
0
        public async Task <BasketOfItems> AddItemToBasket(UpdateBasketModel model)
        {
            var payload = JsonConvert.SerializeObject(model);
            var content = new StringContent(payload, Encoding.UTF8, "application/json");

            var response = await _client.PutAsync($"api/v1/basket/{model.BasketId}", content);

            if (!response.IsSuccessStatusCode)
            {
                HandleError(response);
                return(null);
            }

            return(JsonConvert.DeserializeObject <BasketOfItems>(await response.Content.ReadAsStringAsync()));
        }
Exemplo n.º 4
0
        public async Task <ActionResult <BasketOfItems> > Put(long id, [FromBody] UpdateBasketModel model)
        {
            if (!id.Equals(model.BasketId))
            {
                return(BadRequest());
            }

            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var basket = await BasketRepository.GetBasketById(model.BasketId);

            if (basket == null)
            {
                return(NotFound());
            }

            basket.AddUpdateOrRemoveItem(model.ProductId, model.Quantity);
            await BasketRepository.UpdateBasket(basket);

            return(Ok(basket));
        }