public void AddToCart(Guid productId)
        {
            List <ItemInCartViewModel> cart = GetCart();
            ItemInCartViewModel        item = cart.Find(p => p.Product.ProductId == productId);

            if (item != null && item.Quantity >= _productService.GetProductById(productId).ItemsAvailable)
            {
                throw new Exception("Not enough items in stock");
            }
            else if (item != null)
            {
                item.Quantity++;
                item.Value += _productService.GetProductById(item.Product.ProductId).Price;
            }
            else
            {
                var productToAdd = _productService.GetProductById(productId);

                if (productToAdd != null)
                {
                    ItemInCartViewModel newItem = new ItemInCartViewModel()
                    {
                        Product  = productToAdd,
                        Quantity = 1,
                        Value    = productToAdd.Price
                    };
                    cart.Add(newItem);
                }
            }

            _sessionManager.Set(Consts.CartSessionKey, cart);
        }
Esempio n. 2
0
        public bool AddToCart(Guid?productId, int newQuantity)
        {
            if (productId == null)
            {
                return(false);
            }

            bool newItem = false;

            List <ItemInCartViewModel> cart = GetCart();
            ItemInCartViewModel        item = cart.Find(p => p.Product.ProductId == productId);

            if (item == null)
            {
                newItem = true;
                item    = new ItemInCartViewModel()
                {
                    Product  = _productService.GetProductById(productId),
                    Quantity = 0,
                    Value    = 0
                };

                if (item.Product == null)
                {
                    return(false);
                }
            }

            if (item != null && item.Quantity + newQuantity > _productService.GetProductById(productId).ItemsAvailable)
            {
                return(false);
            }
            else if (item != null)
            {
                item.Quantity += newQuantity;
                item.Value    += newQuantity * _productService.GetProductById(item.Product.ProductId).Price;

                if (newItem)
                {
                    cart.Add(item);
                }
            }

            _sessionManager.Set(Consts.CartSessionKey, cart);

            return(true);
        }
        public ActionResult Details(Guid?productId)
        {
            if (productId == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            Product product = _productService.GetProductById(productId);

            if (product == null)
            {
                return(HttpNotFound());
            }

            List <ItemInCartViewModel> cart = _orderService.GetCart();
            ItemInCartViewModel        item = cart.Find(p => p.Product.ProductId == productId);

            byte[] img    = product.Image;
            string imgSrc = String.Empty;

            if (img != null)
            {
                var base64 = Convert.ToBase64String(img);
                imgSrc = String.Format("data:image/jpg;base64,{0}", base64);
            }
            else
            {
                imgSrc = "data:image/jpg;base64,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";
            }

            ProductToBuyViewModel model = new ProductToBuyViewModel()
            {
                ProductId       = product.ProductId,
                Name            = product.Name,
                CategoryName    = product.Subcategory.Category.Name,
                SubcategoryName = product.Subcategory.Name,
                Price           = product.Price.ToString("C", new CultureInfo("pl-PL")),
                Image           = imgSrc,
                ItemsAvailable  = product.ItemsAvailable,
                ItemsInCart     = (item != null)?item.Quantity:0,
                AlreadyBought   = product.Copies.Count
            };

            return(View(model));
        }