public IHttpActionResult CreateBooking([FromBody] CreateReservation message)
        {
            var room          = roomProvider.GetRoom(message.RoomNumber);
            var user          = userProvider.GetFromUserName(new UserName(message.UserName.LastName, message.UserName.FirstName));
            var day           = Day.From(message.Hour.Date);
            var timeSlot      = day.ComputeSlots(Constraints.SlotDuration).First(s => s.Contains(message.Hour));
            var bookingResult = reservationService.BookRoom(room, user, timeSlot);

            if (bookingResult.Status == BookingStatus.Accepted)
            {
                return(Content(HttpStatusCode.Accepted, bookingResult.ReservationId));
            }

            var availableSlotStarts = reservationService.GetBookableTimeSlots(room, timeSlot).Select(s => s.Start).ToList();

            return(Content(HttpStatusCode.Conflict, availableSlotStarts));
        }