getComponentContainer()->getCitiesComponent();
$term = $request->get('term');
$context = $request->get('context');
$data = [
'boost' => 'population',
];
if (strlen($term) == 5 && is_numeric($term)) {
$data['codePostal'] = $term;
} else {
$data['nom'] = $term;
}
// Uniquement bourgogne franche-comté
/*$result = array_merge(
json_decode($citiesComponent->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 27]))),
json_decode($citiesComponent->callCitiesApi('get', 'communes', array_merge($data, ['codeRegion' => 44])))
);*/
$result = json_decode($citiesComponent->callCitiesApi('get', 'communes', $data));
$return = [];
foreach ($result as $city) {
$codesPostaux = $city->codesPostaux;
if ($context == 'frontend') {
$label = '' . $city->nom . ' ' . $codesPostaux[0] . '';
} else {
$label = $city->nom . ' - ' . $codesPostaux[0];
}
$return[] = [
'label' => $label,
'city' => $city->nom,
'value' => $city->code
];
}
if ($context == 'frontend') {
$return = [
'items' => $return
];
}
return new JsonResponse($return);
}
/**
* @Route("/api-addresses", name="api_addresses")
*/
public function addresses(Request $request): JsonResponse
{
$citiesComponent = $this->getComponentContainer()->getCitiesComponent();
$return = [];
$address = $request->get('address');
$context = $request->get('context');
$results = $citiesComponent->callAddressApi($address);
foreach ($results as $result) {
if ($result->getStreetNumber() && strlen($result->getStreetNumber()) > 0) {
$streetNameNumber = $result->getStreetNumber() . ' ' . $result->getStreetName();
$return[] = [
'label' => $streetNameNumber,
'value' => $streetNameNumber,
'latitude' => $result->getCoordinates()->getLatitude(),
'longitude' => $result->getCoordinates()->getLongitude()
];
}
}
if ($context == 'frontend') {
$return = [
'items' => $return
];
}
return new JsonResponse($return);
}
}