public RedirectToRouteResult RemoveFromCart(Cart cart,int ProductId, String returnUrl)
 {
     Product product = repository.Products.FirstOrDefault(m => m.ProductId == ProductId);
     if (product != null)
     {
         cart.RemoveLine(product);
     }
     return RedirectToAction("Index", new { returnUrl });
 }
 public RedirectToRouteResult AddToCart(Cart cart,int ProductId, string returnUrl)
 {
     Product product = repository.Products.FirstOrDefault(m => m.ProductId == ProductId);
     if (product != null)
     {
         cart.AddItem(product, 1);
     }
     return RedirectToAction("Index", new { returnUrl });
 }
        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            Cart cart = (Cart)controllerContext.HttpContext.Session[sessionKey];

            if (cart == null)
            {
                cart = new Cart();
                controllerContext.HttpContext.Session[sessionKey] = cart;
            }
            return cart;
        }
        public ActionResult Checkout(Cart cart, ShippingDetails details)
        {
            if (cart.Lines.Count() <= 0)
            {
                ModelState.AddModelError("NoItem", "Sorry, your cart is empty!");
            }

            if (ModelState.IsValid)
            {
                orderProcessor.ProcessOrder(cart, details);
                cart.Clear();
                return View("Completed");
            }

            else
            {
                return View(details);
            }
        }
        public void ProcessOrder(Cart cart, ShippingDetails shippingInfo)
        {
            using (SmtpClient client = new SmtpClient())
            {
                client.EnableSsl = emailSetting.UseSSL;
                client.Host = emailSetting.ServerName;
                client.Port = emailSetting.Port;
                client.UseDefaultCredentials = false;
                client.Credentials = new NetworkCredential(emailSetting.UserName, emailSetting.Password);
                if (emailSetting.WriteAsFile)
                {
                    client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
                    client.PickupDirectoryLocation = emailSetting.FileLocation;
                    client.EnableSsl = false;
                }

                StringBuilder mailBody = new System.Text.StringBuilder();
                mailBody.AppendLine("A new order has been submit")
                .AppendLine("--------------------------")
                .AppendLine("Lines:");

                foreach (var line in cart.Lines)
                {
                    var subtotal = line.Product.Price * line.Quantity;
                    mailBody.AppendFormat("{0:c} x {1}  (subtotal:{2:c}", line.Product.Price, line.Quantity, subtotal);
                }

                MailMessage message = new MailMessage(emailSetting.MailFromAddress, emailSetting.MailToAddress, "New submit order", mailBody.ToString());

                if (emailSetting.WriteAsFile)
                {
                    message.BodyEncoding = Encoding.UTF8;
                }

                client.Send(message);
            }
        }
 private Cart GetCart()
 {
     Cart cart = (Cart)Session["Cart"];
     if (cart == null)
     {
         cart = new Cart();
         Session["Cart"] = cart;
     }
     return cart;
 }
 public PartialViewResult Summary(Cart cart)
 {
     return PartialView(cart);
 }
 public ViewResult Index(Cart cart,string returnUrl)
 {
     return View(new CartIndexViewModel { Cart = cart, ReturnUrl = returnUrl });
 }