Exemplo n.º 1
0
        public async Task <IActionResult> CreateBooking([FromBody] SaveBookingResource bookingResource)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var booking = mapper.Map <SaveBookingResource, Booking>(bookingResource);

            var roomExist     = repository.BookingRoomExist(booking);
            var offeringExist = repository.BookingOfferingExist(booking);

            if (roomExist && offeringExist)
            {
                return(Conflict("The room and module is already taken"));
            }
            else if (roomExist)
            {
                return(Conflict("The room is already taken"));
            }
            else if (offeringExist)
            {
                return(Conflict("The module is already booked in the same time slot"));
            }

            repository.Add(booking);
            await unitOfWork.CompleteAsync();

            booking = await repository.GetBooking(booking.Id);

            var result = mapper.Map <Booking, BookingResource>(booking);

            return(Ok(result));
        }