public HttpResponseMessage BookJourney(BookingCreateDto bookingDto) { if (bookingDto == null) { HttpError err = new HttpError("The bookingDto cannot be null"); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (bookingBusiness.IsAttributeNull(bookingDto)) { HttpError err = new HttpError("There is at least one value missing"); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else { string routeID = bookingDto.routeID; string userID = bookingDto.userID; if (!bookingBusiness.IsUserIDValid(userID)) { HttpError err = new HttpError("The userID you entered is not valid."); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (bookingBusiness.SameDepartureTime(routeID, userID)) { HttpError err = new HttpError("Have Already Booked A Journey With the Same Departure Time"); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (bookingBusiness.UpperNearDepartureTime(routeID, userID)) { HttpError err = new HttpError("A Journey which has a departure time within 3 hours of new booking was already booked "); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (bookingBusiness.BookingExists(routeID, userID)) { HttpError err = new HttpError("User Already Booked This Journey"); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (!bookingBusiness.HasAlreadyBookedThisJourney(routeID, userID)) { HttpError err = new HttpError("You have already have a booking in this journey."); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } else if (bookingBusiness.IsSeatsAvailable(routeID)) { HttpError err = new HttpError("No Seats Available"); return(Request.CreateResponse(HttpStatusCode.BadRequest, err)); } bookingBusiness.BookJourney(routeID, userID); return(Request.CreateResponse(HttpStatusCode.OK, "Journey Booked")); } }