Esempio n. 1
0
        /// <summary>
        /// Initializes a new instance of the <see cref="BasketServiceController" /> class.
        /// </summary>
        /// <param name="productRepositoryLocator">The repository locator.</param>
        /// <param name="sessionManager">The session manager.</param>
        /// <param name="productLocatorService">The product locator service.</param>
        public BasketServiceController(IProductRepositoryLocator productRepositoryLocator, ISessionManager sessionManager, ProductLocatorService productLocatorService)
        {
            Guard.ArgumentNotNull(productRepositoryLocator, "productRepositoryLocator");
            Guard.ArgumentNotNull(sessionManager, "sessionManager");
            Guard.ArgumentNotNull(productLocatorService, "productLocatorService");

            this.productRepositoryLocator = productRepositoryLocator;
            this.sessionManager           = sessionManager;
            this.productLocatorService    = productLocatorService;
        }
        public HttpResponseMessage Post(AddToBasketRequest request)
        {
            var basketService = this.sessionManager.GetItem<BasketService>();
            Product product = new ProductLocatorService(this.productRepositoryLocator).FindProduct(request.ProductId, request.ProductTypeName);

            if (product == null)
            {
                return new HttpResponseMessage(HttpStatusCode.NotFound);
            }

            basketService.AddToBasket(product, request.Quantity);
            this.sessionManager.PersistItem(basketService);

            return new HttpResponseMessage(HttpStatusCode.OK);
        }