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)); }
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)); }
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() { }); }
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; } }
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); }
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); }
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))); }
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)); }
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")); }
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); }
// 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)); }
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")); }
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); }
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)); }