Пример #1
0
        public JsonResult AddToBasket(int productId)
        {
            BasketSummaryView basketSummary = new BasketSummaryView();
            Guid basketId = base.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);
                    basketSummary = response.Basket.ConvertToSummary();
                    SaveBasketSummaryToCookie(basketSummary.NumberOfItems, basketSummary.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);
                basketSummary = response.Basket.ConvertToSummary();
                SaveBasketSummaryToCookie(basketSummary.NumberOfItems, basketSummary.BasketTotal);
            }
            return Json(basketSummary);
        }
Пример #2
0
 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;
 }