예제 #1
0
        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"));
            }
        }