public async Task <IActionResult> PostExperienceAsync([FromBody] Experience experience)
        {
            if (experience == null)
            {
                return(BadRequest(new { general = "Failed to create new experience" }));
            }
            Dictionary <string, string> errors = experience.Validate();

            if (errors.Count == 0)
            {
                _context.Experiences.Add(experience);
                await _context.SaveChangesAsync();

                return(CreatedAtRoute("GetExperience", new { id = experience.ExperienceID }, experience));
            }
            return(BadRequest(errors));
        }
예제 #2
0
        public async Task <IActionResult> PutRoomAsync(int id, [FromBody] Room updatedRoom)
        {
            if (id != updatedRoom.RoomID)
            {
                return(BadRequest(new { general = "Failed to update room." }));
            }

            Dictionary <string, string> errors = updatedRoom.Validate();

            if (errors.Count == 0)
            {
                _context.Entry(updatedRoom).State = EntityState.Modified;
                await _context.SaveChangesAsync();

                return(NoContent());
            }
            return(BadRequest(errors));
        }
예제 #3
0
        public async Task <IActionResult> PostReservationAsync(string email, int adultTickets, int childTickets, int showtimeID)
        {
            if (email == "")
            {
                return(BadRequest(new { general = "Please enter your email" }));
            }
            else if (adultTickets + childTickets == 0)
            {
                return(BadRequest(new { general = "You must reserve at least one ticket" }));
            }

            int reservationsMade = _context.Reservations
                                   .Where(r => r.ShowtimeID == showtimeID)
                                   .Count();
            int roomCapacity = _context.Showtimes
                               .Where(s => s.ShowtimeID == showtimeID)
                               .Select(s => s.Room.Capacity)
                               .Single();

            if (reservationsMade + adultTickets + childTickets > roomCapacity)
            {
                return(BadRequest(new { general = "There aren't enough free seats to complete your reservation. " +
                                                  "Please choose a different showtime." }));
            }

            for (int i = 0; i < adultTickets; i++)
            {
                Reservation reservation = new Reservation
                {
                    ShowtimeID = showtimeID,
                    Type       = "Adult",
                    Email      = email
                };
                _context.Reservations.Add(reservation);
            }
            for (int i = 0; i < childTickets; i++)
            {
                Reservation reservation = new Reservation
                {
                    ShowtimeID = showtimeID,
                    Type       = "Child",
                    Email      = email
                };
                _context.Reservations.Add(reservation);
            }

            if (reservationsMade + adultTickets + childTickets == roomCapacity)
            {
                Showtime showtime = await _context.Showtimes.FindAsync(showtimeID);

                showtime.Soldout = true;
            }

            await _context.SaveChangesAsync();

            return(Ok());
        }
예제 #4
0
        public async Task <IActionResult> PostMovieAsync([FromBody] Movie newMovie)
        {
            if (newMovie == null)
            {
                return(BadRequest(new { general = "There was an unexpected error. Try again later." }));
            }

            Dictionary <string, string> errors = newMovie.Validate();

            if (errors.Count == 0)
            {
                _context.Movies.Add(newMovie);
                await _context.SaveChangesAsync();

                return(CreatedAtRoute("GetMovie", new { id = newMovie.MovieID }, newMovie));
            }
            return(BadRequest(errors));
        }