CreateReservation([FromBody] ReservationPostDto reservation)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var availability = await _context.Availabilities
                               .Include(a => a.Reservation)
                               .Include(a => a.Venue)
                               .FirstOrDefaultAsync(
                a => a.Date == reservation.EventDate &&
                a.VenueCode == reservation.VenueCode);

            if (availability == null || availability.Reservation != null)
            {
                return(BadRequest("Venue is not available on the requested date."));
            }

            availability.Reservation = new Reservation
            {
                Reference = $"{availability.VenueCode}{availability.Date:yyyyMMdd}",
                EventDate = availability.Date,
                VenueCode = availability.VenueCode,
                WhenMade  = DateTime.Now,
                StaffId   = reservation.StaffId
            };
            await _context.SaveChangesAsync();

            return(CreatedAtAction("GetReservation",
                                   new { reference = availability.Reservation.Reference },
                                   ReservationGetDto.FromModel(availability.Reservation)));
        }
Exemple #2
0
        public async Task <IActionResult> Create([Bind("Code,Name,Description,Capacity")] Venue venue)
        {
            if (ModelState.IsValid)
            {
                _context.Add(venue);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(venue));
        }