public virtual MvcMailMessage Welcome(string sendTo, ReservationModels reserve)
 {
     ViewBag.Data = reserve;
     return Populate(x =>
     {
         x.Subject = "Theater Guide: Your reservation is confirmed";
         x.ViewName = "Welcome";
         x.To.Add(sendTo);
     });
 }
        public ActionResult Cancel(ReservationModels reservationmodels)
        {
            if (ModelState.IsValid)
            {
                ShowModels show = db.Shows.Find(reservationmodels.ShowId);

                reservationmodels.Status = "C";
                show.AvailableSeat += reservationmodels.NumberOfSeats;
                db.Entry(reservationmodels).State = EntityState.Modified;
                db.Entry(show).State = EntityState.Modified;
                db.SaveChanges();
                if (User.IsInRole("admin"))
                    return RedirectToAction("Reservations");
                else
                    return RedirectToAction("AccountInfo", "Account", new { Message = AccountController.ManageMessageId.CancelReservationSuccess });
            }
            return View(reservationmodels);
        }
 public void SendWelcomeMessage(string sendTo, ReservationModels reserve)
 {
     UserMailer.Welcome(sendTo, reserve).Send();
 }
        public ActionResult Create(int id, int seats)
        {
            ViewBag.ReturnUrl = Url.Action("Create", new { id, seats});

            ShowModels show = db.Shows.Find(id);

            MovieModels movie = db.Movies.Find(show.MovieId);
            TheaterModels theater = db.Theaters.Find(show.TheaterId);

            double TotalPrice = show.Price * seats * show.Discount;

            ReservationModels model = new ReservationModels();
            model.UserId = WebSecurity.GetUserId(User.Identity.Name);
            model.ShowId = id;
            model.MovieName = movie.Name;
            model.TheaterName = theater.Name;
            model.Address = theater.address();
            model.BeginTime = show.BeginTime;
            model.Date = show.Date;
            model.NumberOfSeats = seats;
            model.TotalPaied = TotalPrice;
            model.Email = db.UserProfiles.Find(model.UserId).Email;

            if (show.AvailableSeat < seats)
            {
                ViewBag.Success = false;
                ViewBag.Message = "Sorry, there is not enough available seats. \nThe total seats available now is <b>" +
                    show.AvailableSeat + "</b>.";

                return View("ReservationSave", model);
            }

            return View(model);
        }
 public void SendWelcomeMessage(string sendTo, ReservationModels reserve)
 {
     UserMailer.Welcome(sendTo, reserve).Send(); //Send() extension method: using Mvc.Mailer
     //return RedirectToAction("Index");
 }
        public ActionResult Create(ReservationModels reserve)
        {
            ViewBag.Message = null;
            ViewBag.Success = false;

            ShowModels show = db.Shows.Find(reserve.ShowId);

            if (show.AvailableSeat >= reserve.NumberOfSeats)
            {
                show.AvailableSeat -= reserve.NumberOfSeats;

                reserve.SubmitDate = DateTime.Today;
                reserve.SubmitTime = DateTime.Now.TimeOfDay.ToString();
                reserve.Status = "V";

                try
                {
                    db.Entry(show).State = EntityState.Modified;
                    db.Reservations.Add(reserve);
                    db.SaveChanges();
                    ViewBag.Success = true;
                    SendWelcomeMessage(reserve.Email, reserve);
                }
                catch (Exception ex) {
                    ViewBag.Message = "Sorry, your reservation is failed due to some reason.";
                }
            }

            return View("ReservationSave", reserve);
        }