/**
  * Does different searches depending on the indexes of the $query
  *
  * @query['address'] Will do a search in CRM and a search for addresses in Master Address
  * @query['street'] Will do a search in CRM and a search for streets in Master Address
  * @query['text'] Will only do a search in CRM
  *
  * Addresses will be return as $array['location text'] = $flag
  * where $flag is true if returned by AddressService
  *
  * @param array $query
  * @return array
  */
 public static function search($query)
 {
     $results = array();
     $crm_query = '';
     if (isset($query['address']) && $query['address']) {
         $crm_query = $query['address'];
     } elseif (isset($query['text']) && $query['text']) {
         $crm_query = $query['text'];
     }
     if ($crm_query) {
         $zend_db = Database::getConnection();
         $sql = "select location, addressId, city,\n\t\t\t\t\t'database' as source,\n\t\t\t\t\tcount(*) as ticketCount\n\t\t\t\t\tfrom tickets where location like ?\n\t\t\t\t\tgroup by location, addressId, city";
         $q = $zend_db->query($sql)->execute(["{$crm_query}%"]);
         foreach ($q as $row) {
             $results[$row['location']] = $row;
         }
     }
     if (isset($query['address']) && $query['address']) {
         foreach (AddressService::searchAddresses($query['address']) as $location => $data) {
             if (!isset($results[$location])) {
                 $results[$location] = $data;
             } else {
                 $results[$location] = array_merge($results[$location], $data);
             }
             $results[$location]['source'] = 'Master Address';
         }
     } elseif (isset($query['street']) && $query['street']) {
         foreach (AddressService::searchStreets($query['street']) as $location => $street_id) {
             $results[$location]['addressId'] = $street_id;
             $results[$location]['source'] = 'Master Address';
         }
     }
     return $results;
 }
 public function testSearchAddresses()
 {
     $result = AddressService::searchAddresses('Somersbe Pl');
     $this->assertEquals(40, count($result));
 }