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; }