public ActionResult Details(int id = 0)
 {
     //get the order
     Order order = db.Orders.Find(id);
     if (order == null)
     {
         return HttpNotFound();
     }
     //get the UserProfile
     UserProfile user = users.UserProfiles.Select(u => u as UserProfile).First(u => u.UserId == order.UserID);
     //get all the order lines belonging to this order
     List<OrderLine> lines = db.OrderLines.Select(x => x as OrderLine).Where(x => x.order.OrderID == order.OrderID).ToList();
     SummaryViewModel vm = new SummaryViewModel(lines, order, user);
     return View(vm);
 }
 public ActionResult Index(Order order)
 {
     //is the user logged in?
     if (Request.IsAuthenticated)
     {
         //you cannot check out an empty cart
         Cart cart = Assignment2MVC.Models.Cart.getCart();
         if (cart.GetSize() == 0)
         {
             ViewBag.Error = "You cannot checkout an empty cart";
             return View();
         }
         //get the user who is checking out
         int uid = WebSecurity.GetUserId(User.Identity.Name);
         UserProfile user = users.UserProfiles.FirstOrDefault(u => u.UserId == uid);
         //fill in some of the order fields
         order.Date = DateTime.Now;
         order.Total = cart.GetTotal();
         order.UserID = uid;
         //add the order
         if (ModelState.IsValid)
         {
             db.Orders.Add(order);
         }
         else
         {
             ViewBag.Error = "Error some incorrect data was entered";
             return View();
         }
         //create the order lines for this order
         List<OrderLine> lines = new List<OrderLine>();
         foreach (CartItem item in cart.cartItems)
         {
             OrderLine line = new OrderLine();
             line.ProductID = item.product.ProductID;
             line.product = item.product;
             db.Products.Attach(line.product);
             line.quantity = item.quantity;
             line.OrderID = order.OrderID;
             line.order = order;
             db.OrderLines.Add(line);
             lines.Add(line);
         }
         //save changes
         
         db.SaveChanges();
         SummaryViewModel vm = new SummaryViewModel(lines, order, user);
         cart.Empty();
         return View("Summary", vm);
     }
     else
     {
         return RedirectToAction("Login", "Account");
     }
 }