示例#1
0
        public async Task <IActionResult> Create([Bind("ID,Name,MaxSeats")] Salon salon)
        {
            if (ModelState.IsValid)
            {
                _context.Add(salon);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(salon));
        }
示例#2
0
        public async Task <IActionResult> Create([Bind("ID,MovieID,SalonID,Date")] Showing showing)
        {
            if (ModelState.IsValid)
            {
                _context.Add(showing);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MovieID"] = new SelectList(_context.Movies, "ID", "Title", showing.MovieID);
            ViewData["SalonID"] = new SelectList(_context.Salons, "ID", "Name", showing.SalonID);
            return(View(showing));
        }
示例#3
0
        public async Task <IActionResult> Thanks(int?id, int seatsInput)
        {
            var movie = _context.Conjunction
                        .Where(c => c.Id == id)
                        .Include(m => m.Movie);

            foreach (var i in movie)
            {
                i.Movie.SeatsNr -= seatsInput;
            }

            var context = _context.Conjunction
                          .Where(c => c.Id == id)
                          .Include(m => m.Movie)
                          .Include(r => r.Room);

            foreach (var i in context)
            {
                tempmovie   = i.Movie;
                tempRoom    = i.Room;
                temptstatus = i.Status;
            }

            ticket = new BookingTicket()
            {
                Movie       = tempmovie,
                Room        = tempRoom,
                BookingDate = DateTime.Now
            };

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

            var view = _context.BookingTickets
                       .Include(t => t.Movie)
                       .Include(t => t.Room).OrderByDescending(t => t.Id).ToList();

            return(View(view));
        }
示例#4
0
        public async Task <IActionResult> BookTicket([Bind("NumOfSeats,ShowingID")] Booking booking)
        {
            if (ModelState.IsValid)
            {
                if (booking.NumOfSeats < 0)
                {
                    return(RedirectToAction(nameof(Error)));
                }

                var showing = await _context.Showings.Where(s => s.ID == booking.ShowingID).Include(s => s.Bookings).Include(s => s.Salon).Include(s => s.Movie).SingleOrDefaultAsync();

                int remainingSeats = showing.Salon.MaxSeats - showing.Bookings.Sum(b => b.NumOfSeats);

                if (booking.NumOfSeats > remainingSeats)
                {
                    return(RedirectToAction(nameof(Error))); // Make custom view for order errors?
                }

                _context.Bookings.Add(booking);

                await _context.SaveChangesAsync();

                var bookingVm = new BookingViewModel
                {
                    ID         = booking.ID,
                    MovieTitle = showing.Movie.Title,
                    SalonName  = showing.Salon.Name,
                    NumOfSeats = booking.NumOfSeats,
                    Date       = booking.Showing.Date
                };

                return(View("Booking", bookingVm));
            }

            return(RedirectToAction(nameof(Error)));
        }