public IActionResult Print(string id)
        {
            var model = _cartRepository.GetCartViewModel(id);

            model.Customer          = _accountRepository.GetCustomerViewModel(model.CustomerId);
            model.Customer.District = _dictrictRepository.GetDictrictViewModel(_accountRepository.GetCustomerViewModel(model.CustomerId).District).Name;
            model.Customer.Province = _provinceRepository.GetProvinceViewModel(_accountRepository.GetCustomerViewModel(model.CustomerId).Province).Name;
            List <CartProductViewModel> cartProductViewModels = new List <CartProductViewModel>();

            foreach (var cartProduct in _shoppingCartRepository.GetCartProductsBought(id, model.CustomerId))
            {
                var cartProductViewModel = new CartProductViewModel()
                {
                    Id        = cartProduct.Id,
                    CartId    = cartProduct.CartId,
                    Cart      = _cartRepository.GetCartViewModel(cartProduct.CartId),
                    ProductId = cartProduct.ProductId,
                    Product   = _productRepository.GetProductViewModelById(cartProduct.ProductId),
                    Price     = cartProduct.Price,
                    PriceType = cartProduct.PriceType,
                    Quantity  = cartProduct.Quantity,
                    Total     = cartProduct.Total
                };
                cartProductViewModels.Add(cartProductViewModel);
                model.TotalPrice += cartProductViewModel.Total;
            }
            model.Products = cartProductViewModels;
            return(View(model));
        }
        public ViewResult ShoppingCart()
        {
            string cartId = GetCart(services);
            List <CartProductViewModel> CartProductViewModels = new List <CartProductViewModel>();

            foreach (var item in shoppingCart.GetCartProducts(cartId))
            {
                var cartProductViewModel = new CartProductViewModel()
                {
                    Id        = item.Id,
                    CartId    = item.CartId,
                    Cart      = cartRepository.GetCartViewModel(item.CartId),
                    ProductId = item.ProductId,
                    Product   = productRepository.GetProductViewModelById(item.ProductId),
                    Price     = item.Price,
                    PriceType = item.PriceType,
                    Quantity  = item.Quantity,
                    Total     = item.Total
                };
                CartProductViewModels.Add(cartProductViewModel);
            }
            var cart = new ShoppingCart()
            {
                Id           = cartId,
                cartProducts = CartProductViewModels,
                Total        = shoppingCart.GetShoppingCartTotal(cartId)
            };

            var model = new ShoppingCartViewModel()
            {
                ShoppingCart = cart,
            };

            return(View(model));
        }
Exemple #3
0
        public ActionResult AddToCart(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            Product product = this.Data.Products.Find(id);

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

            var cartProduct = new CartProductViewModel()
            {
                Id       = product.Id,
                Name     = product.Name,
                Price    = product.Price,
                Picture  = product.Picture,
                Quantity = product.Quantity
            };

            return(this.View(cartProduct));
        }
Exemple #4
0
        protected override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            base.OnActionExecuting(filterContext);

            //Есть ли у сайта доступ к модулю
            if (!_cmsRepository.ModuleAllowed(ControllerName))
            {
                Response.Redirect("/Admin/");
            }

            model = new CartProductViewModel()
            {
                SiteId         = SiteId,
                PageName       = PageName,
                Settings       = SettingsInfo,
                ControllerName = ControllerName,
                ActionName     = ActionName,
                Sites          = _cmsRepository.GetSites(),
                MenuCMS        = MenuCmsCore,
                MenuModules    = MenuModulCore
            };

            model.Categories = _cmsRepository.GetCartCategoriesList(new CartFilter()
            {
            });
        }
Exemple #5
0
        public async Task <IActionResult> MyCart()
        {
            var customer = await _context.Customer.Where(e => e.Email.Equals(User.Identity.Name)).Select(e => e.CustomerId).FirstAsync();

            var ordering = await _context.Order.Where(i => i.CustomerId.Equals(customer) && i.OrderStatus.Equals("Cart")).FirstOrDefaultAsync();

            List <CartProductViewModel> myProducts = new List <CartProductViewModel>();

            if (ordering != null)
            {
                var products = _context.OrderProduct.Where(o => o.OrderId.Equals(ordering.OrderId)).ToList();

                foreach (OrderProduct product in products)
                {
                    var prod = await _context.Product.Where(p => p.ProductId.Equals(product.ProductId)).FirstAsync();

                    CartProductViewModel myProduct = new CartProductViewModel();
                    myProduct.Id       = prod.ProductId;
                    myProduct.Name     = prod.ProductName;
                    myProduct.Price    = (decimal)prod.ProductPrice;
                    myProduct.Quantity = product.Quantity;
                    myProduct.Image    = prod.ProductImage;
                    myProducts.Add(myProduct);
                }
            }
            return(View(myProducts));
        }
        public IActionResult HomeOrder()
        {
            try
            {
                HttpRequest cookie = services.GetRequiredService <IHttpContextAccessor>()?.HttpContext.Request;
                string      cartId = cookie.Cookies["cardId"];
                List <CartProductViewModel> CartProductViewModels = new List <CartProductViewModel>();

                foreach (var item in shoppingCart.GetCartProducts(cartId))
                {
                    var cartProductViewModel = new CartProductViewModel()
                    {
                        Id        = item.Id,
                        CartId    = item.CartId,
                        Cart      = cartRepository.GetCartViewModel(item.CartId),
                        ProductId = item.ProductId,
                        Product   = productRepository.GetProductViewModelById(item.ProductId),
                        Price     = item.Price,
                        PriceType = item.PriceType,
                        Quantity  = item.Quantity,
                        Total     = item.Total
                    };
                    CartProductViewModels.Add(cartProductViewModel);
                }
                var cart = new ShoppingCart()
                {
                    Id           = cartId,
                    cartProducts = CartProductViewModels,
                    Total        = shoppingCart.GetShoppingCartTotal(cartId)
                };
                //get customer
                string customerId = SecurityManager.getUserId(cookie.Cookies[SecurityManager._securityToken]);

                var customer = accountRepository.GetCustomerViewModel(customerId);
                if (customer == null)
                {
                    return(RedirectToAction("Index", "Home"));
                }
                var model = new OrderViewModel()
                {
                    CustomerId   = customer.Id,
                    FullName     = customer.FirstName + " " + customer.LastName,
                    Address      = customer.Address,
                    District     = customer.District,
                    Province     = customer.Province,
                    PhoneNo      = customer.PhoneNo,
                    Email        = customer.Email,
                    ShoppingCart = cart
                };
                return(View(model));
            }
            catch (Exception)
            {
                return(View());

                throw;
            }
        }
Exemple #7
0
        public void AddToShoppingCart()
        {
            //arrange
            //gettingstock

            List <IStockFunctions.StockResponse> stockResponses = new List <IStockFunctions.StockResponse>();
            List <StockDTO> stockList   = new List <StockDTO>();
            int             productId   = 4;
            string          productDesc = "testProductDesc";
            string          productName = "testProduct";

            int    stockId       = 1;
            int    stockQuantity = 3;
            string stockDesc     = "teststockdesc";

            stockList.Add(new StockDTO()
            {
                Id          = stockId,
                Description = stockDesc,
                Quantity    = stockQuantity,
                ProductId   = productId
            });
            IStockFunctions.StockResponse stockResponse = new IStockFunctions.StockResponse()
            {
                Id          = productId,
                Description = productDesc,
                Name        = productName,
                Stock       = stockList
            };

            stockResponses.Add(stockResponse);
            stockFunctions.Setup(x => x.GetStock()).Returns(stockResponses);

            //cart
            CartProductViewModel product = new CartProductViewModel()
            {
                Name     = "testProduct",
                Quantity = 2,
                StockId  = 3,
                Value    = "4"
            };
            var value = new byte[0];

            session.Setup(x => x.TryGetValue(It.IsAny <string>(), out value));
            session.Setup(x => x.Set(It.IsAny <string>(), It.IsAny <byte[]>()));

            //act
            Cart.AddToShoppingCart(product);

            //assert
            session.Verify(x => x.TryGetValue(It.IsAny <string>(), out value));
            session.Verify(x => x.Set(It.IsAny <string>(), It.IsAny <byte[]>()));
        }
        public ViewResult ShoppingCart()
        {
            string session = HttpContext.Session.GetString("AddProducts");

            if (session == null)
            {
                _shoppingCart.RemoveFromCart();
                _cartRepository.RemoveFromCart();
                Response.Cookies.Delete("cardId", new CookieOptions()
                {
                    Secure = true,
                });
                return(View());
            }
            else
            {
                string cartId = GetCart(_services);
                var    cartProductViewModels = new List <CartProductViewModel>();

                foreach (var item in _shoppingCart.GetCartProducts(cartId))
                {
                    var cartProductViewModel = new CartProductViewModel()
                    {
                        Id        = item.Id,
                        CartId    = item.CartId,
                        Cart      = _cartRepository.GetCartViewModel(item.CartId),
                        ProductId = item.ProductId,
                        Product   = _productRepository.GetProductViewModelById(item.ProductId),
                        Price     = item.Price,
                        PriceType = item.PriceType,
                        Quantity  = item.Quantity,
                        Total     = item.Total
                    };
                    cartProductViewModels.Add(cartProductViewModel);
                }
                var cart = new ShoppingCart()
                {
                    Id           = cartId,
                    cartProducts = cartProductViewModels,
                    TotalPrice   = _shoppingCart.GetShoppingCartTotalPrice(cartId),
                    Total        = _shoppingCart.GetShoppingCartTotal(cartId)
                };

                var model = new ShoppingCartViewModel()
                {
                    ShoppingCart = cart,
                };
                return(View(model));
            }
        }
        public IList <TransactionViewModel> GetUserTransactions(int userId)
        {
            var trans = Db.Transactions.Where(t => t.UserId == userId)
                        .Include(t => t.TransactionDetail)
                        .OrderByDescending(t => t.Date).ToList();

            var listTrans = new List <TransactionViewModel>();

            foreach (var tr in trans)
            {
                // map trans --> transViewModel
                var transactionVM = new TransactionViewModel()
                {
                    TransactionId = tr.TransactionId,
                    DatePurchased = tr.Date,
                    TotalAmount   = tr.TotalAmount
                };
                listTrans.Add(transactionVM);
            }

            foreach (var tr in trans)
            {
                var transProducts = new List <CartProductViewModel>();
                CartProductViewModel transItem;
                foreach (var item in tr.TransactionDetail)
                {
                    transItem = new CartProductViewModel();
                    //map product info <--> transDetail
                    transItem.ProductId = item.ProductId;
                    transItem.Quantity  = item.Quantity;
                    transItem.Price     = item.Amount;
                    var product = GetProductImage(item.ProductId);
                    transItem.ProductName = product.ProductName;
                    transItem.ImageSource = product.ImageSource;

                    //map Trans.TransDetail <--> TransVM.TransItems
                    transProducts.Add(transItem);
                }
                listTrans.Where(trVM => trVM.TransactionId == tr.TransactionId).FirstOrDefault()
                .TransactionProducts = transProducts;
            }

            return(listTrans);
        }
Exemple #10
0
        public async Task <ShoppingCartViewModel> GetCart(long cartId)
        {
            // Model to be returned
            var returnList = new ShoppingCartViewModel
            {
                Items   = new List <CartProductViewModel>(),
                message = new Result()
            };

            // Retrieve cart from Db
            var cart = await GetCartFrDb(cartId);

            // If cart not exists error message
            if (cart == null)
            {
                returnList.message.status = "error";
                returnList.message.text   = "Cart does not exists";
                return(returnList);
            }

            // If cart is empty
            if (cart.Items.Count() == 0)
            {
                returnList.message.status = "error";
                returnList.message.text   = "Cart is empty";
                return(returnList);
            }

            // If exists and not empty -> get products
            foreach (var item in cart.Items)
            {
                item.Product = await _productRepository.GetProductAsync(item.ProductId);

                var prd = CartProductViewModel.GetCartProductViewModel(item);
                returnList.Items.Add(prd);
            }

            returnList.CartId         = cart.CartId;
            returnList.message.status = "success";
            returnList.message.text   = "Shopping cart retrieved";

            return(returnList);
        }
Exemple #11
0
        public ActionResult AddToCart([Bind(Include = "Id,Quantity,")] CartProductViewModel cartProduct)
        {
            int id = cartProduct.Id;

            Product product = this.Data.Products.Find(id);

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

            int quantity = cartProduct.Quantity;

            if (quantity > 0 || quantity <= product.Quantity)
            {
                string currentUserId = this.User.Identity.GetUserId();
                Cart   cart          = this.Data.Carts.FirstOrDefault(x => x.User.Id == currentUserId && x.IsActive);
                if (cart == null)
                {
                    cart = new Cart()
                    {
                        User     = this.Data.Users.FirstOrDefault(u => u.Id == currentUserId),
                        IsActive = true
                    };

                    this.Data.Carts.Add(cart);
                }

                var newCartProduct = new CartProduct()
                {
                    Product  = product,
                    Quantity = quantity
                };

                cart.Products.Add(newCartProduct);

                this.Data.SaveChanges();

                return(this.RedirectToAction("Index"));
            }

            return(this.View(product));
        }
        public IActionResult Add(int id)
        {
            if (this.User.Identity.IsAuthenticated)
            {
                var action = this.cartsService.AddProduct(id, this.User.Identity.Name);

                if (!action.Result)
                {
                    return(this.Redirect("/"));
                }

                return(this.RedirectToAction(nameof(this.GetCart)));
            }

            var sessionCart = SessionExtensions
                              .GetDataObject <List <CartProductViewModel> >(this.HttpContext.Session, "shoppingCart");

            if (sessionCart == null)
            {
                sessionCart = new List <CartProductViewModel>();
            }

            var itemToAdd = this.shopProductsService.GetProductById <ShopProductViewModel>(id);

            if (itemToAdd == null)
            {
                return(this.Redirect("/"));
            }

            var sessionItem = new CartProductViewModel()
            {
                Quantity = 1,
                Details  = itemToAdd,
            };

            sessionCart.Add(sessionItem);

            SessionExtensions
            .SetDataObject <List <CartProductViewModel> >(this.HttpContext.Session, "shoppingCart", sessionCart);

            return(this.RedirectToAction(nameof(this.GetCart)));
        }
Exemple #13
0
        public ActionResult Order()
        {
            currentCustomer = Session["user"] as Customer;
            if (currentCustomer == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            var cart = _db.Carts.Where(s => s.CStateID == 2).FirstOrDefault <Cart>();

            if (cart == null)
            {
                return(RedirectToAction("Index", "Watch"));
            }

            _db.SaveChanges();

            OrderViewModel ovm = new OrderViewModel();

            ovm.CartID     = cart.CartID;
            ovm.CartStatus = cart.CStateID == 2 ? "ĐANG ĐƯỢC GIAO" : (cart.CStateID == 3 ? "ĐÃ GIAO" : "ĐÃ HỦY");
            var cardDetail = _db.CartDetails.Where(s => s.Cart.CartID == cart.CartID).ToList <CartDetail>();

            ovm.Total = 0;
            cardDetail.ForEach(cd =>
            {
                CartProductViewModel cartProductViewModel = new CartProductViewModel
                {
                    ProductID      = cd.ProductID,
                    CollectionName = cd.Product.Collection.CollectionName,
                    BuyingQuantity = cd.Quantity,
                    Price          = cd.Product.Price
                };
                ovm.Total += cd.Product.Price * cd.Quantity;

                ovm.ProductVm.Add(cartProductViewModel);
            });

            // TODO: Create view
            return(View(ovm));
        }
Exemple #14
0
        public ActionResult Delete(int id)
        {
            List <CartProductViewModel> cartProducts = GetShoppingCart();

            CartProductViewModel item = cartProducts.Find(x => x.Product.ProductId == id);

            //Usuń produkt z koszyka lub zmniejsz jego ilość
            if (item != null)
            {
                item.Quantity--;
                item.Value = item.Product.Price * item.Quantity;

                if (item.Quantity <= 0)
                {
                    cartProducts.Remove(item);
                }
            }

            HttpContext.Session.SetObjectAsJson(Constans.SessionCartKey, cartProducts);

            return(RedirectToAction("Index"));
        }
Exemple #15
0
        public async Task Add_Product_To_Shopping_Cart_Should_Not_Be_Null()
        {
            // Arrange
            var product = new CartProductViewModel()
            {
                CartId    = 1,
                ProductId = 1,
            };

            _cartServiceMock.Setup(x => x.AddProductToCart(product)).Returns(Task.FromResult(product));

            // Act
            var result = await _shoppingCartController.AddProductToShoppingCart(product);

            // Assert
            var objectResult = result as OkObjectResult;

            Assert.NotNull(objectResult);

            var content = objectResult.Value as CartProductViewModel;

            Assert.NotNull(content);
        }
Exemple #16
0
        // GET: Cart
        //Cart button
        public ActionResult Index()
        {
            currentCustomer = Session["user"] as Customer;
            if (currentCustomer == null)
            {
                return(RedirectToAction("Login", "Account"));
            }

            currentCart = GetCurrentCart(currentCustomer.CustomerID);
            if (currentCart == null)
            {
                return(RedirectToAction("Index", "Watch"));
            }
            CartViewModel cvm = new CartViewModel();

            cvm.CartID = currentCart.CartID;
            var cardDetail = _db.CartDetails.Where(s => s.Cart.CartID == currentCart.CartID).ToList <CartDetail>();

            cvm.Total = 0;
            cardDetail.ForEach(cd =>
            {
                CartProductViewModel cartProductViewModel = new CartProductViewModel
                {
                    ProductID      = cd.ProductID,
                    CollectionName = cd.Product.Collection.CollectionName,
                    BuyingQuantity = cd.Quantity,
                    Price          = cd.Product.Price
                };
                cvm.Total += cd.Product.Price * cd.Quantity;

                cvm.ProductVm.Add(cartProductViewModel);
            });

            // TODO: Create view
            return(View(cvm));
        }
Exemple #17
0
        public IActionResult Add(int id)
        {
            List <CartProductViewModel> cartProducts = GetShoppingCart();

            CartProductViewModel item = cartProducts.Find(x => x.Product.ProductId == id);

            //Jeżeli w koszyku nie ma dodawanego produktu to go dodaj, inaczej zwiększ jego ilość
            if (item != null)
            {
                item.Quantity++;
                item.Value = item.Quantity * item.Product.Price;
            }
            else
            {
                Product product = _db.Products.Find(id);
                cartProducts.Add(new CartProductViewModel {
                    Product = product, Quantity = 1, Value = product.Price
                });
            }

            HttpContext.Session.SetObjectAsJson(Constans.SessionCartKey, cartProducts);

            return(RedirectToAction("Index"));
        }
Exemple #18
0
        public async Task <CartProductViewModel> AddProductToCart(CartProductViewModel cartItem)
        {
            //Gets cart from Db
            var cart = await GetCartFrDb(cartItem.CartId);

            //If cart is not exist, create new cart
            if (cart == null)
            {
                cart = new Cart
                {
                    CartId = cartItem.CartId
                };

                _repository.Add(cart);
            }

            // Model to be returned
            var returnModel = new CartProductViewModel()
            {
                Message = new Result()
            };

            //If product already exists in cart
            var cartItemDb = cart.Items.FirstOrDefault(x => x.ProductId == cartItem.ProductId);

            //Retrieve product from Db
            var product = await _productRepository.GetProductAsync(cartItem.ProductId);

            // If product not found /or does not exist
            if (product == null)
            {
                returnModel.Message.status = "error";
                returnModel.Message.text   = "Product not found";
                return(returnModel);
            }

            //If not exists in cart
            if (cartItemDb == null)
            {
                //Update product stock
                product.Stock -= cartItem.Quantity;

                cartItemDb = new CartProduct
                {
                    Cart      = cart,
                    Quantity  = cartItem.Quantity,
                    ProductId = cartItem.ProductId,
                    Product   = product
                };

                cart.Items.Add(cartItemDb);
            }
            else
            {
                // Stock control -- returns error if product is out of stock
                if (product.Stock - cartItem.Quantity < 0)
                {
                    returnModel.Message.status = "error";
                    returnModel.Message.text   = $"Remaining stock for product is {cart.Items.FirstOrDefault(x => x.ProductId == cartItem.ProductId).Product.Stock}.";
                    return(returnModel);
                }
                // add product to cart and updates stock
                else
                {
                    cartItemDb.Quantity = cartItemDb.Quantity + cartItem.Quantity;
                    product.Stock      -= cartItem.Quantity;
                }
            }

            _repository.SaveChanges();

            #region ReturnModel fill
            returnModel.Message.status = "success";
            returnModel.Message.text   = $"Remaining stock for product is {product.Stock}.";
            returnModel.CartId         = cartItem.CartId;
            returnModel.ProductId      = cartItemDb.ProductId;
            returnModel.ProductName    = cartItemDb.Product.ProductName;
            returnModel.Quantity       = cartItemDb.Quantity;
            returnModel.CategoryId     = cartItem.CategoryId;
            returnModel.Price          = cartItem.Price;
            returnModel.VariantId      = cartItem.VariantId;
            #endregion

            return(returnModel);
        }
        public async Task <IActionResult> AddProductToShoppingCart([FromBody] CartProductViewModel cartProduct)
        {
            CartProductViewModel addedItem = await _cartSerivce.AddProductToCart(cartProduct);

            return(Ok(addedItem));
        }
 public UserProductCart()
 {
     InitializeComponent();
     BindingContext = new CartProductViewModel(Navigation);
 }
Exemple #21
0
        public ActionResult Save(Guid id, CartProductViewModel backModel, HttpPostedFileBase upload)
        {
            ErrorMessage message = new ErrorMessage
            {
                Title = "Информация"
            };

            if (ModelState.IsValid)
            {
                backModel.Item.Id = id;

                #region Сохранение изображения
                if (upload != null && upload.ContentLength > 0)
                {
                    string allowExt = Settings.PicTypes;
                    string fileExt  = upload.FileName.Substring(upload.FileName.LastIndexOf(".")).Replace(".", "").ToLower();

                    if (allowExt.ToLower().Contains(fileExt))
                    {
                        string savePath = Settings.UserFiles + SiteId + "/cart/" + id + "/";
                        backModel.Item.Images[0] = new ProductImage()
                        {
                            Id        = Guid.NewGuid(),
                            ProductId = id,
                            Title     = "",
                            IsMain    = true,
                            Path      = $"{savePath}{id}.{fileExt}"
                        };

                        if (!Directory.Exists(Server.MapPath(savePath)))
                        {
                            Directory.CreateDirectory(Server.MapPath(savePath));
                        }

                        try
                        {
                            var filePath = Server.MapPath(backModel.Item.Images[0].Path);
                            if (System.IO.File.Exists(filePath))
                            {
                                System.IO.File.Delete(filePath);
                            }

                            upload.SaveAs(filePath);
                        }
#pragma warning disable CS0168 // The variable 'ex' is declared but never used
                        catch (Exception ex)
#pragma warning restore CS0168 // The variable 'ex' is declared but never used
                        {
                            //log
                        }
                    }
                }
                #endregion


                if (_cmsRepository.CheckCartProductExists(id))
                {
                    _cmsRepository.UpdateCartProduct(backModel.Item);
                    message.Info = "Запись обновлена";
                }
                else
                {
                    _cmsRepository.InsertCartProduct(backModel.Item);
                    message.Info = "Запись добавлена";
                }
                message.Buttons = new ErrorMessageBtnModel[]
                {
                    new ErrorMessageBtnModel {
                        Url = StartUrl + Request.Url.Query, Text = "вернуться в список"
                    },
                    new ErrorMessageBtnModel {
                        Url = $"{StartUrl}/item/{id}", Text = "ок", Action = "false"
                    }
                };
            }
            else
            {
                message.Info    = "Ошибка в заполнении формы. Поля в которых допушены ошибки - помечены цветом";
                message.Buttons = new ErrorMessageBtnModel[]
                {
                    new ErrorMessageBtnModel {
                        Url = $"{StartUrl}/item/{id}", Text = "ок", Action = "false"
                    }
                };
            }

            model.Item = _cmsRepository.GetProduct(id);
            if (model.Item != null && model.Item.Images != null && model.Item.Images.Count() > 0)
            {
                ViewBag.Image = model.Item.Images[0].Path;
            }

            model.ErrorInfo = message;
            return(View("Item", model));
        }