public JsonResult AddToBasket(int productId)
        {
            BasketSummaryView basketSummaryView = new BasketSummaryView();
            Guid basketId        = base.GetBasketId();
            bool createNewBasket = basketId == Guid.Empty;

            if (createNewBasket == false)
            {
                ModifyBasketRequest modifyBasketRequest =
                    new ModifyBasketRequest();

                modifyBasketRequest.ProductsToAdd.Add(productId);
                modifyBasketRequest.BasketId = basketId;

                try
                {
                    ModifyBasketResponse response = _basketService
                                                    .ModifyBasket(modifyBasketRequest);
                    basketSummaryView = response.Basket.ConvertToSummary();
                    SaveBasketSummaryToCookie(basketSummaryView.NumberOfItems,
                                              basketSummaryView.BasketTotal);
                }
                catch (BasketDoesNotExistException ex)
                {
                    createNewBasket = true;
                }
            }

            if (createNewBasket)
            {
                CreateBasketRequest createBasketRequest =
                    new CreateBasketRequest();

                createBasketRequest.ProductsToAdd.Add(productId);

                CreateBasketResponse response = _basketService
                                                .CreateBasket(createBasketRequest);

                SaveBasketIdToCookie(response.Basket.Id);
                basketSummaryView = response.Basket.ConvertToSummary();
                SaveBasketSummaryToCookie(basketSummaryView.NumberOfItems,
                                          basketSummaryView.BasketTotal);
            }

            return(Json(basketSummaryView));
        }
        public CreateBasketResponse CreateBasket(CreateBasketRequest request)
        {
            CreateBasketResponse response = new CreateBasketResponse();

            Basket basket = new Basket();

            basket.SetDeliveryOption(GetCheapestDeliveryOption());

            AddProductsToBasket(request.ProductsToAdd, basket);

            ThrowExceptionIfBasketIsInvalid(basket);

            _basketRepository.Save(basket);
            _uow.Commit();

            response.Basket = basket.ConvertToBasketView();

            return(response);
        }
Exemplo n.º 3
0
        public CreateBasketResponse CreateBasket(CreateBasketRequest basketRequest)
        {
            CreateBasketResponse response = new CreateBasketResponse();
            Basket   basket   = new Basket();
            Customer customer = _customerRepository.FindBy(basketRequest.CustomerEmail);

            customer.Email = basketRequest.CustomerEmail;

            basket.SetDeliveryOption(GetCheapestDeliveryOption());
            AddProductsToBasket(basketRequest.ProductsToAdd, basket);
            basket.SetCustomer(customer);
            basket.ThrowExceptionIfInvalid();
            _basketRepository.Save(basket);
            customer.AddBasket(basket);
            customer.ThrowExceptionIfInvalid();
            _customerRepository.Save(customer);
            _uow.Commit();

            response.Basket = _mapper.Map <Basket, BasketView>(basket);

            return(response);
        }
Exemplo n.º 4
0
        public IActionResult AddToBasket(int productId)
        {
            BasketSummaryView basketSummaryView = new BasketSummaryView();
            Guid basketId        = GetBasketId();
            bool createNewBasket = basketId == Guid.Empty;

            if (!createNewBasket)
            {
                ModifyBasketRequest modifyBasketRequest = new ModifyBasketRequest();

                modifyBasketRequest.ProductsToAdd.Add(productId);

                modifyBasketRequest.BasketId = basketId;

                try
                {
                    ModifyBasketResponse response = _basketService.ModifyBasket(modifyBasketRequest);
                    basketSummaryView = response.Basket.ConvertToSummary();
                }
                catch (BasketDoesNotExistException)
                {
                    createNewBasket = true;
                }
            }

            if (createNewBasket)
            {
                CreateBasketRequest createBasketRequest = new CreateBasketRequest();
                createBasketRequest.CustomerEmail = _cookieAuthentication.GetAuthenticationToken();

                createBasketRequest.ProductsToAdd.Add(productId);

                CreateBasketResponse response = _basketService.CreateBasket(createBasketRequest);
                basketSummaryView = response.Basket.ConvertToSummary();
            }

            return(Ok(basketSummaryView));
        }