public IEnumerable<Reservation> Get(int movie_id, int show_id)
        {
            CinemaContext context = new CinemaContext();
            MoviesController moviesController = new MoviesController(context);
            ShowsController showsController = new ShowsController(context);

            Movie movie = moviesController.Get(movie_id);
            if (movie != null)
            {
                Show show = showsController.Get(movie_id, show_id);
                if (show != null)
                {
                    return show.Reservations.Select(reservation =>
                    {
                        reservation.ParentShowId = show.Id;
                        return reservation;
                    });
                }
                else
                {
                    throw new Exception("invalid show id");
                }
            }
            else
            {
                throw new Exception("invalid movie id");
            }
        }
        public async Task<object> AddNew(int movie_id, int show_id)
        {
            Reservation reservation;
            using (CinemaContext context = new CinemaContext())
            {
                ShowsController shows = new ShowsController(context);
                Show show = shows.Get(movie_id, show_id);

                string json = await this.Request.Content.ReadAsStringAsync();
                reservation = JsonConvert.DeserializeObject<Reservation>(json);

                if (reservation.TicketCount < 1)
                {
                    return new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new JsonHttpContent(new { Message = "Sie müssen mindestens eine Karte kaufen." })
                    };
                }

                if (show.FreeSeats - reservation.TicketCount < 0)
                {
                    return new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new JsonHttpContent(new { Message = "Für diese Vorstellung sind nicht mehr genug Plätze vorhanden." })
                    };
                }

                if (reservation.TicketCount > 10)
                {
                    return new HttpResponseMessage(HttpStatusCode.BadRequest)                    
                    {
                        Content = new JsonHttpContent(new { Message = "Es können nicht mehr als 10 Tickets online gebucht werden. Bitte rufen Sie uns an, wenn Sie Karten in dieser Menge bestellen möchten." })
                    };
                }

                reservation.ParentShowId = show.Id;
                show.Reservations.Add(reservation);

                context.SaveChanges();
            }

            // send notification to all clients
            GlobalHost.ConnectionManager.GetHubContext<ReservationHub>().Clients.All.newReservation(reservation);

            return reservation;
        }