|
@@ -170,9 +170,10 @@ class ONUController extends Controller
|
|
|
{
|
|
|
$lat = $request->query->get('lat', '');
|
|
|
$lng = $request->query->get('lng', '');
|
|
|
+ $napId = $request->query->get('napId', 0);
|
|
|
if (isset($lat) && isset($lng)) {
|
|
|
// calculo las distancias
|
|
|
- $naps = $this->calculateDistance($lat, $lng);
|
|
|
+ $naps = $this->calculateDistance($lat, $lng, $napId);
|
|
|
// ordeno las distancias con valores positivos
|
|
|
usort($naps, array($this, "orderDistances"));
|
|
|
} else {
|
|
@@ -211,7 +212,7 @@ class ONUController extends Controller
|
|
|
// from miles
|
|
|
$meterConversion = 1609;
|
|
|
$geopointDistance = $dist * $meterConversion;
|
|
|
-
|
|
|
+ // divido por 1000 para pasarlo de metros a kilometros
|
|
|
return round(($km ? ($geopointDistance / 1000) : $geopointDistance), 3, PHP_ROUND_HALF_UP);
|
|
|
}
|
|
|
|
|
@@ -219,9 +220,10 @@ class ONUController extends Controller
|
|
|
* Calcula la distancia de los NAP al punto pasado.
|
|
|
* @param $lat
|
|
|
* @param $lng
|
|
|
+ * @param $napId
|
|
|
* @return array Retorna una array con los datos de los NAP y con las distancias calculadas.
|
|
|
*/
|
|
|
- private function calculateDistance($lat, $lng)
|
|
|
+ private function calculateDistance($lat, $lng, $napId)
|
|
|
{
|
|
|
$naps = array();
|
|
|
$em = $this->container->get("doctrine.orm.entity_manager");
|
|
@@ -236,10 +238,24 @@ class ONUController extends Controller
|
|
|
$nap->setContainer($this->container);
|
|
|
if (isset($extraData['lat']) && isset($extraData['lng'])) {
|
|
|
$distance = $this->distanceGeoPoints($lat, $lng, $extraData['lat'], $extraData['lng'], true);
|
|
|
- // divido por 1000 para pasarlo de metros a kilometros
|
|
|
- $naps[$nap->getId()] = ['id' => $nap->getId(), 'name' => $nap->getName(), 'distance' => $distance, 'freePort' => $nap->getFreePort(), 'address' => $extraData['Address']];
|
|
|
+ if ($this->container->hasParameter('onu.distance.nap')) {
|
|
|
+ if ($this->container->getParameter('onu.distance.nap') >= $distance ||
|
|
|
+ $napId == $nap->getId()) {
|
|
|
+ // controlo la distancia y el codigo de nap
|
|
|
+ $naps[$nap->getId()] = ['id' => $nap->getId(), 'name' => $nap->getName(), 'distance' => $distance, 'freePort' => $nap->getFreePort(), 'address' => $extraData['Address'], 'slot' => $extraData['slot'], 'link' => $extraData['link']];
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if ($napId == $nap->getId()) {
|
|
|
+ // si el codigo de napId coincide tengo que cargar la nap
|
|
|
+ $naps[$nap->getId()] = ['id' => $nap->getId(), 'name' => $nap->getName(), 'distance' => $distance, 'freePort' => $nap->getFreePort(), 'address' => $extraData['Address'], 'slot' => $extraData['slot'], 'link' => $extraData['link']];
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
- $naps[$nap->getId()] = ['id' => $nap->getId(), 'name' => $nap->getName(), 'distance' => -1, 'freePort' => $nap->getFreePort(), 'address' => ''];
|
|
|
+ if ($napId == $nap->getId()) {
|
|
|
+ // si el codigo de napId coincide tengo que cargar la nap
|
|
|
+ $naps[$nap->getId()] = ['id' => $nap->getId(), 'name' => $nap->getName(), 'distance' => -1, 'freePort' => $nap->getFreePort(), 'address' => '', 'slot' => $extraData['slot'], 'link' => $extraData['link']];
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|