// GET: Tickets
        public IActionResult Index(int movieOrderID)
        {
            List <Ticket> t = _context.Tickets
                              .Where(ms => ms.MovieShowing.IsPublished == true)
                              .Include(ms => ms.MovieShowing)
                              .ThenInclude(m => m.Movie)
                              .Include(ms => ms.MovieOrder)
                              .ThenInclude(ms => ms.Customer)
                              .Include(ms => ms.MovieOrder)
                              .ThenInclude(ms => ms.Tickets)
                              .Where(ms => ms.MovieOrder.MovieOrderID == movieOrderID)
                              .ToList();
            var group = t.GroupBy(t => t.MovieOrder.MovieOrderID);

            foreach (var g in group)
            {
                MovieOrder mo = g.ToList().First().MovieOrder;
                if (mo.Customer.Age >= 60)
                {
                    mo.SeniorDiscount();
                }
            }

            return(View(t));
        }
        public Boolean CheckConflictingStarts(MovieOrder movieOrder)
        {
            HashSet <MovieShowing> uniqueShowings = new HashSet <MovieShowing>();

            foreach (Ticket t in movieOrder.Tickets)
            {
                uniqueShowings.Add(t.MovieShowing);
            }

            List <MovieShowing> uniqueShow = uniqueShowings.ToList().OrderBy(c => c.StartTime).ToList();

            List <Ticket> ticks = new List <Ticket>();

            foreach (MovieShowing ms in uniqueShow)
            {
                ticks.Add(ms.Tickets.First());
            }

            for (int i = 0; i < ticks.Count() - 1; i++)
            {
                if ((ticks[i].MovieShowing.EndTime > ticks[i + 1].MovieShowing.StartTime) && (ticks[i].MovieShowing != ticks[i + 1].MovieShowing))
                {
                    return(true);
                }
            }

            return(false);
        }
        public int CreateOrder(MovieOrder order)
        {
            //order have create and is going to update information
            decimal orderTotal = 0;
            var     cartItem   = GetCartItems();

            // Iterate over the items in the cart, adding the order details for each
            foreach (var item in cartItem)
            {
                var orderDetail = new MovieOrderDetail()
                {
                    MovieId      = item.MovieId,
                    MovieOrderId = order.MovieOrderId,
                    UnitPrice    = item.Movie.MoviePrice,
                    Quantity     = item.Count
                };
                // Set the order total of the shopping cart
                orderTotal += (item.Count * item.Movie.MoviePrice);
                this.storeDB.MovieOrderDetails.Add(orderDetail);
            }
            // Set the order's total to the orderTotal count
            order.Total = orderTotal;
            //Save Order
            this.storeDB.MovieOrders.Add(order);
            this.storeDB.SaveChanges();
            // Empty the shopping cart
            EmptyCart();
            // Return the OrderId as the confirmation number
            return(order.MovieOrderId);
        }
        // GET: MovieOrders/Details/5
        public async Task <IActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(View("Error", new String[] { "Please specify a movie order to view!" }));
            }

            MovieOrder movieOrder = await _context.MovieOrders
                                    .Include(r => r.Tickets)
                                    .ThenInclude(o => o.MovieShowing)
                                    .ThenInclude(o => o.Movie)
                                    .Include(o => o.Customer)
                                    .Include(o => o.Recipient)
                                    .ThenInclude(r => r.OrdersReceived)
                                    .Where(u => u.Recipient.UserName == User.Identity.Name)
                                    .Include(o => o.Tickets)
                                    .FirstOrDefaultAsync(m => m.MovieOrderID == id);

            if (movieOrder == null)
            {
                return(View("Error", new String[] { "This order was not found!" }));
            }

            return(View(movieOrder));
        }
Beispiel #5
0
        public MovieOrder GetOrderDetails(int id)
        {
            MovieOrder order = db.MovieOrders.Find(id);

            order.OrderDetails = db.OrderDetails.Where(o =>
                                                       o.MovieOrderId == id).ToList();
            return(order);
        }
        public async Task <IActionResult> CancelConfirmed(int id, MovieOrder movieOrder)
        {
            if (id != movieOrder.MovieOrderID)
            {
                return(View("Error", new String[] { "There was a problem cancelling this order. Try again!" }));
            }

            if (ModelState.IsValid == false)
            {
                return(View(movieOrder));
            }

            //find the record in the database
            MovieOrder dbmovieOrder = _context.MovieOrders.Where(r => r.MovieOrderID == id)
                                      .Include(o => o.Customer)
                                      .Include(o => o.Tickets)
                                      .FirstOrDefault();

            //if code gets this far, update the record
            try
            {
                //update the notes
                dbmovieOrder.OrderStatus = Status.Cancelled;

                if (dbmovieOrder.UsingPopcornPoints == true)
                {
                    dbmovieOrder.PopcornPointsEarned = 0;//100 * dbmovieOrder.Tickets.Count();
                    dbmovieOrder.UsingPopcornPoints  = false;
                }
                else
                {
                    int temp = 0;
                    foreach (Ticket t in dbmovieOrder.Tickets)
                    {
                        temp += Decimal.ToInt32(t.TicketPrice);
                    }
                    dbmovieOrder.PopcornPointsEarned -= temp;
                }

                _context.Update(dbmovieOrder);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(View("Error", new String[] { "There was an error cancelling this order!", ex.Message }));
            }
            finally
            {
                Utilities.Email.SendEmail(dbmovieOrder.Customer.Email, $"Your movie order {dbmovieOrder.MovieOrderID} has been cancelled.", "We are sorry you had to cancel! 😢");
                if (dbmovieOrder.isGift == true)
                {
                    Utilities.Email.SendEmail(dbmovieOrder.Recipient.Email, $"Your movie order {dbmovieOrder.MovieOrderID} has been cancelled.", "We are sorry you had to cancel! 😢");
                }
            }

            return(RedirectToAction("Index", "MovieOrders"));
        }
Beispiel #7
0
        // DELETE: api/Orders/5
        public void Delete(int id)
        {
            MovieOrder m = Ymdb.MovieOrders.FirstOrDefault(m1 => m1.OrderId == id);

            if (m != null)
            {
                Ymdb.MovieOrders.Remove(m);
                Ymdb.SaveChanges();
            }
        }
Beispiel #8
0
        public void AddMovieOrder(MovieOrder movieOrder)
        {
            //Mapping
            foreach (var item in movieOrder.Items)
            {
                item.Movie = _context.Movies.Find(item.Movie.Id);
            }

            AddEntity(movieOrder);
        }
 public Boolean CheckIneligibleDiscounts(MovieOrder movieOrder)
 {
     foreach (Ticket t in movieOrder.Tickets)
     {
         if (t.MovieShowing.IsSpecial == true)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #10
0
        //Handles later request with filters
        public IActionResult FilteredCustomers(String SelectedCustomer)
        {
            // this only works because each ticket is tied to a seat
            List <Ticket> seats;
            var           query = from s in _context.Tickets
                                  .Include(r => r.MovieOrder)
                                  .ThenInclude(o => o.Customer)
                                  .Include(r => r.MovieShowing)
                                  .ThenInclude(o => o.Movie)
                                  select s;

            if (SelectedCustomer != "" && SelectedCustomer != "All Members")
            {
                query = query.Where(s => s.MovieOrder.Customer.Email == SelectedCustomer);
            }
            ViewBag.AllCustomers = GetAllCustomers();
            seats = query.ToList();
            List <Ticket> final = new List <Ticket>();

            foreach (Ticket t in seats)
            {
                if (t.MovieShowing != null)
                {
                    if (t.MovieShowing.IsPublished == true)
                    {
                        if (t.MovieOrder.OrderStatus == Status.Past || t.MovieOrder.OrderStatus == Status.Future)
                        {
                            final.Add(t);
                        }
                    }
                }
            }
            Decimal totalRev = 0;
            var     group    = final.GroupBy(t => t.MovieOrder.MovieOrderID);

            foreach (var g in group)
            {
                MovieOrder mo = g.ToList().First().MovieOrder;
                if (mo.UsingPopcornPoints != true)
                {
                    totalRev += mo.SubTotal;
                }
            }

            seats.RemoveAll(t => t.MovieOrder.OrderStatus == Status.Unfinished);

            ViewBag.TotalSeats   = final.Count();
            ViewBag.TotalRevenue = totalRev.ToString("C");
            ViewBag.AllMovies    = GetAllMovies();
            return(View("Customers", seats.OrderBy(s => s.MovieOrder.ConfirmationNumber)));
        }
Beispiel #11
0
        public ActionResult ConfirmTransaction(FormCollection fl)
        {
            string userLoggedIn    = CookieController.GetCookie("userId");
            double totalOrderValue = 0;
            Order  o = new Order()
            {
                Date   = DateTime.Now,
                UserId = Convert.ToInt32(userLoggedIn),
            };

            db.Orders.Add(o);
            db.SaveChanges();

            if (ModelState.IsValid)
            {
                //now to reduce all items from database
                IList <Cart> carts = (IList <Cart>)db.Carts.SqlQuery("Select * from dbo.Carts where dbo.Carts.UserId = {0}", userLoggedIn).ToList();

                foreach (Cart c in carts)
                {
                    //we need to update MovieOrders,Orders,Cart,Movies

                    //first lets remove from Movies.
                    db.Database.ExecuteSqlCommand("UPDATE dbo.Movies SET Amount = Amount- {0} WHERE MovieId = {1}", c.Count, c.MovieId);
                    var currMoviePrice = db.Movies.SqlQuery("Select * from dbo.Movies where dbo.Movies.MovieId = {0}", c.MovieId).ToList();
                    totalOrderValue += c.Count * currMoviePrice[0].Price;

                    //now we create new movieOrder for each cart
                    MovieOrder mo = new MovieOrder()
                    {
                        OrderId = o.OrderId,
                        Amount  = c.Count,
                        MovieId = c.MovieId
                    };
                    db.MovieOrders.Add(mo);
                    //now we remove the cart.
                    db.Carts.Remove(c);
                    //now we add to orders
                    //now we add remove from Cart
                }

                db.Database.ExecuteSqlCommand("UPDATE dbo.Orders SET TotalAmountValue = TotalAmountValue + {0} WHERE OrderId = {1}", totalOrderValue, o.OrderId);
                db.SaveChanges();
                ViewBag.orderId = o.OrderId;
            }
            HttpContext.Application["date"]        = null;
            HttpContext.Application["tempdate"]    = null;
            HttpContext.Application["cameFromSet"] = null;

            return(RedirectToAction("Index", "Home"));
        }
Beispiel #12
0
        public async Task Seed()
        {
            _context.Database.EnsureCreated();
            var user = await _userManager.FindByEmailAsync("*****@*****.**");

            // Checking If user is not created
            if (user == null)
            {
                user = new SaveUser()
                {
                    FirstName = "Chander",
                    LastName  = "Dhall",
                    Email     = "*****@*****.**",
                    UserName  = "******"
                };

                var result = await _userManager.CreateAsync(user, "Password9!");

                if (result != IdentityResult.Success)
                {
                    throw new Exception("Unable to create user");
                }
            }
            if (!_context.Movies.Any())
            {
                // Insert new records
                var path    = Path.Combine(_env.ContentRootPath, "Data/movies.json");
                var content = File.ReadAllText(path);
                var movies  = JsonConvert.DeserializeObject <IEnumerable <Movie> >(content);
                _context.Movies.AddRange(movies);

                var movieOrder = new MovieOrder()
                {
                    OrderDateTime = DateTime.Now,
                    OrderNumber   = "123",
                    User          = user,
                    Items         = new List <MovieItem>()
                    {
                        new MovieItem()
                        {
                            Movie    = movies.Last(),
                            Quantity = 7,
                            Price    = movies.Last().Price
                        }
                    }
                };
                _context.MovieOrders.Add(movieOrder);
                _context.SaveChanges();
            }
        }
Beispiel #13
0
        // PUT: api/Orders/5
        public void Put(int id, [FromBody] string Movie_Name, int NumOftickets, DateTime date, TimeSpan time, string username, string password)
        {
            MovieOrder m = Ymdb.MovieOrders.FirstOrDefault(m1 => m1.OrderId == id);

            if (m != null)
            {
                m.MovieName    = Movie_Name + "gggg";
                m.NumOftickets = NumOftickets;
                m.Date         = date;
                m.Time         = time;
                m.UserName     = username;
                m.Password     = password;
                Ymdb.SaveChanges();
            }
        }
Beispiel #14
0
        public MovieOrder CreateOrder()
        {
            string orderNum = GenerateOrderNum();

            MovieOrder order = new MovieOrder()
            {
                OrderDate = DateTime.Now,
                StatusId  = 1,  //New by default.
                OrderNum  = orderNum
            };

            db.MovieOrders.Add(order);
            db.SaveChanges();
            return(order);
        }
 public Boolean CheckGiftUnder18(MovieOrder movieOrder)
 {
     if (movieOrder.isGift == true)
     {
         AppUser giftee = movieOrder.Recipient;
         foreach (Ticket t in movieOrder.Tickets)
         {
             if (t.MovieShowing.Movie.MPAARating == MPAARatings.NC17 || t.MovieShowing.Movie.MPAARating == MPAARatings.R)
             {
                 if (giftee.Age < 18)
                 {
                     return(true);
                 }
             }
         }
     }
     return(false);
 }
Beispiel #16
0
        public MovieOrder UpdateOrder(MovieOrder order)
        {
            var currentItems = db.OrderDetails.Where(d =>
                                                     d.MovieOrderId == order.Id).ToList();

            db.OrderDetails.RemoveRange(currentItems);
            db.SaveChanges();
            MovieOrder model = db.MovieOrders.Find(order.Id);

            model.OrderDesc = order.OrderDesc;
            model.StatusId  = order.StatusId;
            model.TotalCost = order.OrderDetails.Where(d =>
                                                       d.MovieOrderId == order.Id).Sum(m =>
                                                                                       m.Qty * m.Movie.Price);
            model.OrderDetails = order.OrderDetails;
            db.SaveChanges();
            order.TotalCost = model.TotalCost;
            return(model);
        }
Beispiel #17
0
        public ActionResult AddressAndPayment(FormCollection values)
        {
            var order = new MovieOrder();

            TryUpdateModel(order);
            try
            {
                order.Username  = User.Identity.Name;
                order.OrderDate = DateTime.Now;
                //Process the order
                var cart = ShoppingCart.GetCart(HttpContext);
                cart.CreateOrder(order);
                return(RedirectToAction("Complete", new { errortype = order.MovieOrderId }));
            }
            catch
            {
                //Invalid - redisplay with errors
                return(View(order));
            }
        }
Beispiel #18
0
        //Return view with filtered totals
        public IActionResult ReportedTotals(ReportViewModel rvm)
        {
            List <Ticket> ticks = _context.Tickets
                                  .Include(r => r.MovieOrder)
                                  .ThenInclude(o => o.Customer)
                                  .Include(r => r.MovieShowing)
                                  .ThenInclude(o => o.Movie)
                                  .ToList();
            List <Ticket> seats = new List <Ticket>();

            foreach (Ticket t in ticks)
            {
                if (t.MovieShowing != null)
                {
                    if (t.MovieShowing.IsPublished == true)
                    {
                        if (t.MovieOrder.OrderStatus == Status.Past || t.MovieOrder.OrderStatus == Status.Future)
                        {
                            seats.Add(t);
                        }
                    }
                }
            }
            Decimal totalRev = 0;
            var     group    = seats.GroupBy(t => t.MovieOrder.MovieOrderID);

            foreach (var g in group)
            {
                MovieOrder mo = g.ToList().First().MovieOrder;
                if (mo.UsingPopcornPoints != true)
                {
                    totalRev += mo.SubTotal;
                }
            }

            rvm.TotalRevenue = totalRev;
            rvm.SeatsSold    = seats.Count();

            return(View(rvm));
        }
        // GET: Tickets/Create
        public IActionResult Create(int movieOrderID, int?SelectedMovieId)
        {
            Ticket t = new Ticket();

            //find the registration that should be associated with this registration
            MovieOrder dbMovieOrder = _context.MovieOrders.Find(movieOrderID);

            //set the new registration detail's registration equal to the registration you just found
            t.MovieOrder = dbMovieOrder;
            if (SelectedMovieId != null && SelectedMovieId != 0)
            {
                //populate the ViewBag with a list of existing showings
                ViewBag.AllShowings = GetAllShowings((int)SelectedMovieId);
            }
            else
            {
                ViewBag.AllShowings = GetAllShowings();
            }

            //pass the newly created registration detail to the view
            return(View(t));
        }
        //NOTE: Non Action Result Methods
        public Boolean CheckDuplicateMovies(MovieOrder movieOrder)
        {
            // Get all unique showings
            HashSet <MovieShowing> showingSet = new HashSet <MovieShowing>();

            foreach (Ticket t in movieOrder.Tickets)
            {
                showingSet.Add(t.MovieShowing);
            }

            List <MovieShowing> showings = showingSet.ToList();

            // Loop through unique showings and find all the movies
            // for each showing
            List <String> movies = new List <String>();

            foreach (MovieShowing ms in showings)
            {
                movies.Add(ms.Movie.Title);
            }

            //Get a count of repetitions of each movie
            var q = from x in movies
                    group x by x into g
                    let count = g.Count()
                                orderby count descending
                                select new { Value = g.Key, Count = count };

            // Check for any movie duplicates
            foreach (var x in q)
            {
                if (x.Count > 1)
                {
                    return(true);
                }
            }
            return(false);
        }
        public async Task <IActionResult> Create(MovieOrder movieOrder, int SelectedMovie, String SelectedCustomer)
        {
            if (SelectedCustomer != null)
            {
                AppUser customer = _context.Users
                                   .Where(t => t.Email == SelectedCustomer)
                                   .Include(t => t.MovieOrders)
                                   .ThenInclude(t => t.Tickets)
                                   .FirstOrDefault();
                if (customer == null)
                {
                    return(View("Error", new String[] { "This customer was not found!" }));
                }
                //movieOrder.ConfirmationNumber = Utilities.GetConfirmationNumber.GetNextConfNumber(_context);
                movieOrder.DateOrdered = DateTime.Now;
                movieOrder.Customer    = customer;

                if (movieOrder.GiftRecipient != null)
                {
                    AppUser giftRecipient = _context.Users.FirstOrDefault(u => u.Email == movieOrder.GiftRecipient);

                    List <AppUser> allCustomers = AllCustomers();

                    if (giftRecipient != default && allCustomers.Contains(giftRecipient))
                    {
                        movieOrder.Recipient = giftRecipient;
                        movieOrder.isGift    = true;
                    }
                    else
                    {
                        ViewBag.GiftError    = "Giftee email is not in the database.";
                        ViewBag.AllCustomers = GetAllCustomers();
                        ViewBag.AllMovies    = GetAllMovies();
                        return(View("SelectCustomer", movieOrder));
                    }
                }

                if (ModelState.IsValid == false)
                {
                    ViewBag.AllCustomers = GetAllCustomers();
                    ViewBag.AllMovies    = GetAllMovies();
                    return(View("SelectCustomer", movieOrder));
                }

                _context.Add(movieOrder);
                await _context.SaveChangesAsync();
            }
            else
            {
                //set the value of Confirmation Number
                //movieOrder.ConfirmationNumber = Utilities.GetConfirmationNumber.GetNextConfNumber(_context);
                movieOrder.DateOrdered = DateTime.Now;
                movieOrder.Customer    = _context.Users
                                         .Include(t => t.MovieOrders)
                                         .ThenInclude(t => t.Tickets)
                                         .FirstOrDefault(u => u.UserName == User.Identity.Name);

                if (movieOrder.GiftRecipient != null)
                {
                    AppUser        giftRecipient = _context.Users.FirstOrDefault(u => u.Email == movieOrder.GiftRecipient);
                    List <AppUser> allCustomers  = AllCustomers();

                    if (giftRecipient != default && allCustomers.Contains(giftRecipient))
                    {
                        movieOrder.Recipient = giftRecipient;
                        movieOrder.isGift    = true;
                    }
                    else
                    {
                        ViewBag.GiftError = "Giftee email is not a customer in the database.";
                        ViewBag.AllMovies = GetAllMovies();
                        return(View(movieOrder));
                    }
                }

                if (ModelState.IsValid == false)
                {
                    ViewBag.AllMovies = GetAllMovies();
                    return(View(movieOrder));
                }

                _context.Add(movieOrder);
                await _context.SaveChangesAsync();
            }

            return(RedirectToAction("Create", "Tickets", new { MovieOrderID = movieOrder.MovieOrderID, SelectedMovieId = SelectedMovie }));
        }
        public async Task <IActionResult> Create(Ticket ticket, int SelectedShowing)
        {
            if (SelectedShowing == 0)
            {
                return(View("Error", new String[] { "You didn't select a showing." }));
            }
            if (ModelState.IsValid == false)
            {
                ViewBag.AllShowings = GetAllShowings();
                return(View(ticket));
            }
            MovieShowing dbMovieShowing = _context.MovieShowings
                                          .Where(ms => ms.IsPublished == true)
                                          .Include(ms => ms.Tickets)
                                          .ThenInclude(t => t.MovieOrder)
                                          .ThenInclude(t => t.Customer)
                                          .Include(t => t.Movie)
                                          .Where(ms => ms.MovieShowingID == SelectedShowing)
                                          .First();
            Price dbPrice = _context.Prices.First();

            ticket.MovieShowing = dbMovieShowing;

            Boolean inOrder = false;

            foreach (Ticket t in ticket.MovieOrder.Tickets)
            {
                if (t.Seat == ticket.Seat)
                {
                    inOrder = true;
                }
            }

            if (ticket.MovieShowing.StartTime < DateTime.Now)
            {
                ViewBag.AllShowings  = GetAllShowings(ticket.MovieShowing.Movie.MovieId);
                ViewBag.ErrorMessage = "That showing is in the past.";
                return(View(ticket));
            }

            if (ticket.ValidSeat() == false || inOrder == true)
            {
                ViewBag.AllShowings  = GetAllShowings(ticket.MovieShowing.Movie.MovieId);
                ViewBag.ErrorMessage = "Seat Unavailable.";
                return(View(ticket));
            }

            MovieOrder dbMovieOrder = _context.MovieOrders
                                      .Include(t => t.Tickets)
                                      .ThenInclude(t => t.MovieShowing)
                                      .Include(t => t.Customer)
                                      .Include(t => t.Recipient)
                                      .Where(t => t.MovieOrderID == ticket.MovieOrder.MovieOrderID)
                                      .FirstOrDefault();


            ticket.MovieOrder = dbMovieOrder;

            /*List<String> contained = new List<String>();
             * foreach (Ticket ticket1 in ticket.MovieOrder.Tickets)
             * {
             *  contained.Add(ticket1.Seat);
             * }
             * if (contained.Contains(ticket.Seat))
             * {
             *  ViewBag.AllShowings = GetAllShowings(ticket.MovieShowing.Movie.MovieId);
             *  ViewBag.ErrorMessage = "Can't add duplicate seat to order.";
             *  return View(ticket);
             * }*/

            if (CheckConflictingStarts(dbMovieOrder) == true)
            {
                ViewBag.AllShowings  = GetAllShowings(ticket.MovieShowing.Movie.MovieId);
                ViewBag.ErrorMessage = "You cannot purchase tickets to movies with conflicting showtimes in one order.";
                return(View(ticket));
                //return View("Error", new String[] { "You cannot purchase tickets to movies with conflicting showtimes in one order." });
            }

            if (ticket.MovieOrder.Customer.Age < 18 && (ticket.MovieShowing.Movie.MPAARating == MPAARatings.NC17 || ticket.MovieShowing.Movie.MPAARating == MPAARatings.R))
            {
                ViewBag.AllSeats     = GetAllSeats(SelectedShowing);
                ViewBag.AllShowings  = GetAllShowings(ticket.MovieShowing.Movie.MovieId);
                ViewBag.ErrorMessage = "You must be at least 18 to purchase tickets to an R or NC-17 showing.";
                return(View(ticket));
            }


            List <String> MatineeDays = new List <String>()
            {
                "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"
            };

            List <String> Weekdays = new List <String>()
            {
                "Monday", "Tuesday", "Wednesday", "Thursday"
            };

            DateTime start      = ticket.MovieShowing.StartTime;
            TimeSpan noonCutoff = new TimeSpan(12, 0, 0);
            TimeSpan fiveCutoff = new TimeSpan(17, 0, 0);

            if (ticket.MovieShowing.IsSpecial == false)
            {
                if (MatineeDays.Contains(start.DayOfWeek.ToString()) && start.TimeOfDay < noonCutoff)
                {
                    ticket.Discount    = ("Matinee");
                    ticket.TicketPrice = dbPrice.MatineePrice;
                }
                //Tuesday Price
                else if (start.DayOfWeek.ToString() == "Tuesday" && start.TimeOfDay >= noonCutoff && start.TimeOfDay < fiveCutoff)
                {
                    ticket.Discount    = ("Discount Tuesday");
                    ticket.TicketPrice = dbPrice.TuesdayPrice;
                }
                //Weekday price
                else if ((Weekdays.Contains(start.DayOfWeek.ToString()) && start.TimeOfDay >= noonCutoff) || (start.DayOfWeek.ToString() == "Friday" && start.TimeOfDay <= noonCutoff))
                {
                    ticket.Discount    = ("Weekday Price");
                    ticket.TicketPrice = dbPrice.WeekdayPrice;
                }
                //Weekend price
                else
                {
                    ticket.Discount    = ("Weekend Price");
                    ticket.TicketPrice = dbPrice.WeekendPrice;
                }
            }
            else
            {
                ticket.Discount    = "Special Showing";
                ticket.TicketPrice = dbPrice.SpecialPrice;
            }

            _context.Add(ticket);
            await _context.SaveChangesAsync();

            return(RedirectToAction("ConfirmOrder", "MovieOrders", new { id = ticket.MovieOrder.MovieOrderID }));
        }
Beispiel #23
0
        // Handles Later Request with Filters
        public IActionResult FilteredTotals(TotalReportFilterViewModel trfvm)
        {
            // this only works because each ticket is tied to a seat
            List <Ticket> seats;
            var           query = from s in _context.Tickets
                                  .Include(r => r.MovieOrder)
                                  .ThenInclude(o => o.Customer)
                                  .Include(r => r.MovieShowing)
                                  .ThenInclude(o => o.Movie)
                                  select s;

            //Filter by movie
            if (trfvm.MovieId != 0)
            {
                query = query.Where(s => s.MovieShowing.Movie.MovieId == trfvm.MovieId);
            }
            //Filter by MPAA rating
            if (trfvm.MPAARating != null)
            {
                switch (trfvm.MPAARating)
                {
                case MPAARatings.G:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.G);
                    break;

                case MPAARatings.PG:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.PG);
                    break;

                case MPAARatings.PG13:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.PG13);
                    break;

                case MPAARatings.NC17:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.NC17);
                    break;

                case MPAARatings.R:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.R);
                    break;

                case MPAARatings.Unrated:
                    query = query.Where(s => s.MovieShowing.Movie.MPAARating == MPAARatings.Unrated);
                    break;

                default:
                    break;
                }
            }
            //Filter by date range
            //Case where start exists and end is indefinite
            if (trfvm.DateRangeStart != null || trfvm.DateRangeEnd != null)
            {
                switch (trfvm.ChoiceTime)
                {
                case DateOrTime.DateRange:
                    /*if (trfvm.DateRangeStart != null && trfvm.DateRangeEnd == null)
                     * {
                     *  DateTime start = (DateTime)trfvm.DateRangeStart;
                     *  query = query.Where(s => s.MovieShowing.StartTime.Date.AddDays(1) > start.Date);
                     * }
                     * else if (trfvm.DateRangeStart == null && trfvm.DateRangeEnd != null)
                     * {
                     *  DateTime end = (DateTime)trfvm.DateRangeEnd;
                     *  query = query.Where(s => s.MovieShowing.EndTime.Date < end.Date.AddDays(1));
                     * }
                     * else if (trfvm.DateRangeStart != null && trfvm.DateRangeEnd != null)
                     * {
                     *  DateTime start = (DateTime)trfvm.DateRangeStart;
                     *  DateTime end = (DateTime)trfvm.DateRangeEnd;
                     *  query = query.Where(s => s.MovieShowing.StartTime.Date.AddDays(1) > start.Date && s.MovieShowing.EndTime.Date < end.Date.AddDays(1));
                     * }*/
                    DateTime start = trfvm.DateRangeStart ?? new DateTime(1900, 1, 1);
                    DateTime end   = trfvm.DateRangeEnd ?? new DateTime(2200, 1, 1);
                    if (start > end)
                    {
                        ViewBag.ErrorMessage = "Invalid Time Frame";
                        ViewBag.AllMovies    = GetAllMovies();
                        return(View("Totals", trfvm));
                    }
                    query = query.Where(mv => mv.MovieShowing.StartTime.Date.AddDays(1) > start.Date).Where(mv => mv.MovieShowing.StartTime.Date < end.Date.AddDays(1));
                    break;

                case DateOrTime.TimeOfDay:
                    if (trfvm.DateRangeStart != null && trfvm.DateRangeEnd == null)
                    {
                        DateTime startTime = (DateTime)trfvm.DateRangeStart;
                        query = query.Where(s => s.MovieShowing.StartTime.TimeOfDay >= startTime.TimeOfDay);
                    }
                    else if (trfvm.DateRangeStart == null && trfvm.DateRangeEnd != null)
                    {
                        DateTime endTime = (DateTime)trfvm.DateRangeEnd;
                        query = query.Where(s => s.MovieShowing.EndTime.TimeOfDay <= endTime.TimeOfDay);
                    }
                    else if (trfvm.DateRangeStart != null && trfvm.DateRangeEnd != null)
                    {
                        DateTime startTime = (DateTime)trfvm.DateRangeStart;
                        DateTime endTime   = (DateTime)trfvm.DateRangeEnd;

                        if (startTime > endTime)
                        {
                            ViewBag.ErrorMessage = "Invalid Time Frame";
                            ViewBag.AllMovies    = GetAllMovies();
                            return(View("Totals", trfvm));
                        }

                        query = query.Where(s => (s.MovieShowing.StartTime.TimeOfDay >= startTime.TimeOfDay) && (s.MovieShowing.EndTime.TimeOfDay <= endTime.TimeOfDay));
                    }
                    break;

                default:
                    break;
                }
            }

            List <Ticket> final = new List <Ticket>();

            seats = query.ToList();
            foreach (Ticket t in seats)
            {
                if (t.MovieShowing != null)
                {
                    if (t.MovieShowing.IsPublished == true)
                    {
                        if (t.MovieOrder.OrderStatus == Status.Past || t.MovieOrder.OrderStatus == Status.Future)
                        {
                            final.Add(t);
                        }
                    }
                }
            }
            Decimal totalRev = 0;
            var     group    = final.GroupBy(t => t.MovieOrder.MovieOrderID);

            foreach (var g in group)
            {
                MovieOrder mo = g.ToList().First().MovieOrder;
                if (mo.UsingPopcornPoints != true)
                {
                    totalRev += mo.SubTotal;
                }
            }
            ReportViewModel rvm = new ReportViewModel();

            rvm.SeatsSold    = final.Count();
            rvm.TotalRevenue = totalRev;

            ViewBag.TotalSeats   = final.Count();
            ViewBag.TotalRevenue = totalRev.ToString("C");
            ViewBag.AllMovies    = GetAllMovies();
            return(View("ReportedTotals", rvm));
        }
Beispiel #24
0
 // PUT: api/Orders/5
 public void Put(int id, [FromBody] MovieOrder order)
 {
     _ordersRepo.UpdateOrder(order);
 }
Beispiel #25
0
 // POST: api/Orders
 public void Post([FromBody] MovieOrder b1)
 {
     Ymdb.MovieOrders.Add(b1);
     Ymdb.SaveChanges();
 }
        public async Task <IActionResult> Edit(int id, MovieOrder movieOrder)
        {
            if (id != movieOrder.MovieOrderID)
            {
                return(View("Error", new String[] { "There was a problem editing this order. Try again!" }));
            }

            if (ModelState.IsValid == false)
            {
                return(View(movieOrder));
            }
            MovieOrder dbMovieOrder = _context.MovieOrders.Include(r => r.Tickets)
                                      .Include(o => o.Customer)
                                      .ThenInclude(o => o.MovieOrders)
                                      .ThenInclude(o => o.Tickets)
                                      .ThenInclude(o => o.MovieShowing)
                                      .Include(o => o.Recipient)
                                      .Include(o => o.Tickets)
                                      .ThenInclude(o => o.MovieShowing)
                                      .ThenInclude(o => o.Movie)
                                      .FirstOrDefault(m => m.MovieOrderID == id);

            int req    = dbMovieOrder.Tickets.Count() * 100;
            int points = dbMovieOrder.Customer.TotalPopcornPoints;

            if (movieOrder.UsingPopcornPoints == true)
            {
                if (req > points)
                {
                    return(View("Error", new string[] { "You don't have enough popcorn points to pay for this order." }));
                }
            }

            foreach (Ticket t in movieOrder.Tickets)
            {
                if ((t.MovieShowing.Movie.MPAARating == MPAARatings.R || t.MovieShowing.Movie.MPAARating == MPAARatings.NC17) && movieOrder.Customer.Age < 18)
                {
                    return(View("Error", new string[] { "You must be at least 18 to purchase tickets to an R or NC-17 showing." }));
                }
            }

            if (CheckGiftUnder18(movieOrder) == true)
            {
                return(View("Error", new string[] { "You cannot purchase" +
                                                    "these tickets for a customer under 18." }));
            }

            if (CheckConflictingStarts(movieOrder) == true)
            {
                return(View("Error", new String[] { "You cannot purchase tickets to movies with conflicting showtimes in one order." }));
            }

            if (CheckDuplicateMovies(movieOrder) == true)
            {
                return(View("Error", new string[] { "You cannot purchase tickets to more than " +
                                                    "one showing of the same movie in a single order." }));
            }

            //if code gets this far, update the record
            try
            {
                //find the record in the database
                MovieOrder dbmovieOrder = _context.MovieOrders.Find(movieOrder.MovieOrderID);

                //update the notes
                dbmovieOrder.UsingPopcornPoints = movieOrder.UsingPopcornPoints;


                _context.Update(dbmovieOrder);
                await _context.SaveChangesAsync();
            }
            catch (Exception ex)
            {
                return(View("Error", new String[] { "There was an error updating this order!", ex.Message }));
            }

            //send the user to the Confirmation page.
            return(RedirectToAction("ConfirmOrder", new { id = movieOrder.MovieOrderID }));
        }