public ActionResult CheckOut(FormCollection form)
 {
     var order = new OrderHeader();
     order.OrderDate = DateTime.Now;
     if (TryUpdateModel(order))
     {
         var orderViewModel = new OrderConfirmViewModel
         {
             Order = order,
             CartItems = this.CartItems
         };
         return View("Confirm", orderViewModel);
     }
     return View();
 }
        public ActionResult Confirm(FormCollection form)
        {
            if (CartItems.Count <= 0)
                return RedirectToAction("Index", "Cart");
            var order = new OrderHeader();
            order.OrderDate = DateTime.Now;

            if (TryUpdateModel(order))
            {
                var orderViewModel = new OrderConfirmViewModel
                {
                    Order = order,
                    CartItems = this.CartItems
                };
                return View(orderViewModel);
            }
            return View("CheckOut");
        }
 public ActionResult Finish(FormCollection form)
 {
     if (CartItems.Count <= 0)
         return RedirectToAction("Index", "Cart");
     var order = new OrderHeader();
     order.OrderDate = DateTime.Now;
     if (TryUpdateModel(order))
     {
         order.OrderDetails = GetOrderDetails();
         order.TotalPrice = CartItems.Sum(item => item.Price);
         order.Member = db.Members.First(m => m.Email == User.Identity.Name);
         order.OrderStatus = db.OrderStatuses.First(os => os.Id == 1);
         StockSellOut(order);
         db.Orders.Add(order);
         db.SaveChanges();
         CartItems.Clear();
         TempData["OrderId"] = order.Id;
         SendFinishedOrderMail(order);
         return RedirectToAction("Finish");
     }
     return View("CheckOut");
 }
 private void StockSellOut(OrderHeader order)
 {
     foreach (var od in order.OrderDetails)
     {
         od.Album.Stock -= od.Amount;
     }
 }
        private bool SendFinishedOrderMail(OrderHeader order)
        {
            try
            {
                string mailBody = System.IO.File.ReadAllText(Server.MapPath("~/App_Data/FinishedOrderMail.html"));
                mailBody = mailBody.Replace("{{OrderId}}", order.Id.ToString());
                mailBody = mailBody.Replace("{{Name}}", db.Members.First(m => m.Email == User.Identity.Name).Name);
                mailBody = mailBody.Replace("{{OrderDate}}", order.OrderDate.ToShortDateString());
                mailBody = mailBody.Replace("{{ContactName}}", order.ContactName);
                mailBody = mailBody.Replace("{{ContactAddress}}", order.Zipcode +
                    order.City + order.State + order.ContactAddress);
                mailBody = mailBody.Replace("{{ContactPhone}}", order.ContactPhone);

                var smtpSever = new SmtpClient("smtp.gmail.com");
                smtpSever.Port = 587;
                smtpSever.Credentials = new System.Net.NetworkCredential("*****@*****.**", "exile0204");
                smtpSever.EnableSsl = true;
                var mailMsg = new MailMessage
                {
                    From = new MailAddress("*****@*****.**"),
                    Subject = "(RockRecord)您訂購了我們的產品",
                    Body = mailBody,
                    IsBodyHtml = true
                };
                mailMsg.To.Add(new MailAddress(User.Identity.Name));

                smtpSever.Send(mailMsg);
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }