Example #1
0
        public IHttpActionResult GetAuditoriums(long id)
        {
            auditoriums auditoriums = db.auditoriums.Find(id);

            if (auditoriums == null)
            {
                return(NotFound());
            }

            return(Ok(auditoriums));
        }
Example #2
0
        public IHttpActionResult booking()
        {
            string token   = formData("token");
            string email   = formData("email");
            long   show_id = long.Parse(formData("show_id"));
            int    seats   = int.Parse(formData("seats"));

            users user;

            if (token == null)
            {
                user = UserController.userByEmail(db, email);

                if (user == null)
                {
                    //Creat new user
                    user       = new users();
                    user.email = email;

                    db.users.Add(user);
                    db.SaveChanges();
                }
            }
            else
            {
                user = UserController.userByToken(db, token);

                if (user == null)
                {
                    return(Content(HttpStatusCode.Forbidden, "You took a wrong turn somewere"));
                }
            }

            shows show = db.shows.Find(show_id);

            if (show == null)
            {
                return(Content(HttpStatusCode.BadRequest, "Show not fund"));
            }

            if (DateTime.Compare(show.start_at, DateTime.Now) < 0)
            {
                return(Content(HttpStatusCode.Gone, "Show alredy started"));
            }

            auditoriums auditorium = db.auditoriums.Find(show.auditorium_id);

            IQueryable <reservations> querry = db.reservations.Where(reservations => reservations.show_id == show_id);
            int seatsTaken     = querry.Sum(reservations => reservations.seat_count);
            int seatsRemaining = auditorium.seats_total - seatsTaken;

            if (seats > seatsRemaining)
            {
                return(Content(HttpStatusCode.Conflict, "Not enough seats available"));
            }

            reservations reservation = new reservations();

            reservation.user_id           = user.id;
            reservation.show_id           = show_id;
            reservation.seat_count        = seats;
            reservation.first_seat_number = seatsTaken + 1;
            reservation.reserved_at       = DateTime.Now;

            db.reservations.Add(reservation);
            db.SaveChanges();

            return(Ok(reservation));
        }