/**
  * Get the matching request for the given request id.
  *
  * @param  int  $id
  * @return Response
  */
 public function show($id)
 {
     //Unique namespace for request PMRequest.
     $request = PMRequest::find($id);
     //Not a valid request
     if (empty($request)) {
         return parent::InvalidRequestResponseHandler();
         exit;
     }
     $request_pickup_times = $request->requestPickupTimes->toArray();
     $request_pickup_times_array = array();
     foreach ($request_pickup_times as $index => $vArray) {
         $request_pickup_times_array[] = $vArray['pickup_timestamp'];
     }
     $request_pickup_times_hash = array_flip($request_pickup_times_array);
     $time_filtered_requests = RequestPickupTimes::getRequestWithMatchingPickup($request_pickup_times_array, $id, $request->requester_id);
     //No requests matched, you want to suggest somthing to the user here
     if (empty($time_filtered_requests)) {
         return parent::NoRequestMatchResponseHandler();
         exit;
     }
     $result = array();
     foreach ($time_filtered_requests as $index => $request_info) {
         if (!isset($result[$request_info->request_id])) {
             $result[$request_info->request_id] = array();
         }
         $result[$request_info->request_id]['pickup_time'][] = $request_info->pickup_timestamp;
     }
     $time_filtered_requests_ids = array_keys($result);
     //get source address for my request
     $source_address = $request->sourceAddress;
     //get destination address for my request.
     $destination_address = $request->destinationAddress;
     //Get spatial distance from MySQL for source address
     $requests_by_source_distance = EntityAddress::getDistanceAmongRequestsByTimeFilteredIds($time_filtered_requests_ids, $source_address->lat, $source_address->lng, "source_address_id", $request_pickup_times_hash);
     $requests_by_destination_distance = EntityAddress::getDistanceAmongRequestsByTimeFilteredIds($time_filtered_requests_ids, $destination_address->lat, $destination_address->lng, "destination_address_id", $request_pickup_times_hash);
     $gdm_request_source = EntityAddress::getCSVForLatLong($source_address);
     $gdm_request_destination = EntityAddress::getCSVForLatLong($destination_address);
     $gdm_request_potential_source_matches = EntityAddress::getCSVForLatLong($requests_by_source_distance);
     $gdm_request_potential_destination_matches = EntityAddress::getCSVForLatLong($requests_by_destination_distance);
     $gdm_request_potential_source_matches = GoogleDistanceMatrixManager::get_distance_matrix($gdm_request_source, $gdm_request_potential_source_matches, Config::get('pm_constants.formats.array'));
     $gdm_request_potential_destination_matches = GoogleDistanceMatrixManager::get_distance_matrix($gdm_request_destination, $gdm_request_potential_destination_matches, Config::get('pm_constants.formats.array'));
     $api_response = PMRequest::formatAPIResponse($request, $source_address, $destination_address, $requests_by_source_distance, $requests_by_destination_distance, $gdm_request_potential_source_matches, $gdm_request_potential_destination_matches);
     return parent::ValidResponseHandler($api_response);
 }