Example #1
0
 /**
  * Handle incoming requests that query for average noise level in neighbourhood.
  * Sound levels are taken from the database and average is calculated
  * across all values in range.
  */
 public static function handleAverageNoiseLevelRequest($latitude, $longitude, $range)
 {
     // Validate geo coordinates
     if (!MediaServer::validGeoCoordinates($latitude, $longitude)) {
         return array('Statuscode' => 'Error', 'Message' => 'Invalid or no geo coordinates provided.');
     }
     // Return average noise level from neighbourhood
     $database = new Database();
     $resultSet = $database->getNoiseLevels($latitude, $longitude, $range);
     if (count($resultSet) <= 0) {
         return array('Statuscode' => 'Info', 'Message' => 'No nearby sound levels found.');
     }
     // Calculate average value and return as integer
     $sum = 0;
     foreach ($resultSet as $data) {
         $sum += $data['noiseLevel'];
     }
     $averageNoiseLevel = intval($sum / count($resultSet));
     // Log average noise levels request
     Logger::log('Average noise levels requested by range.', Logger::NOISE_AVG_REQUEST);
     // Send response
     return array('Statuscode' => 'OK', 'Message' => 'Average sound level queried successfully.', 'AverageNoiseLevel' => $averageNoiseLevel);
 }