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