public function actionDistancia($lat, $lon) { $puntosv = PuntoVenta::model()->findAll(); $pdvCerca = array('pdv' => null, 'dist' => -1); foreach ($puntosv as $pdv) { $dist = distanciaCoordenadas($lat, $lon, $pdv->longitudGoogle, $pdv->latitudGoogle); echo "{$pdv->idPuntoDeVenta}|{$pdv->nombrePuntoDeVenta}|{$pdv->codigoCiudad}|{$pdv->longitudGoogle}|{$pdv->latitudGoogle}|{$dist}<br/>"; if ($pdvCerca['pdv'] == null) { $pdvCerca['pdv'] = $pdv; $pdvCerca['dist'] = $dist; } else { if ($dist < $pdvCerca['dist']) { $pdvCerca['pdv'] = $pdv; $pdvCerca['dist'] = $dist; } } } }
public function actionGps() { if (Yii::app()->request->isPostRequest) { Yii::app()->session[Yii::app()->params->sesion['pdvEntrega']] = null; /* Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']] = null; Yii::app()->session[Yii::app()->params->sesion['subSectorCiudadEntrega']] = null; */ $lat = Yii::app()->getRequest()->getPost('lat'); $lon = Yii::app()->getRequest()->getPost('lon'); try { $puntosv = PuntoVenta::model()->findAll(); $pdvCerca = array('pdv' => null, 'dist' => -1); foreach ($puntosv as $pdv) { $dist = distanciaCoordenadas($lat, $lon, $pdv->latitudGoogle, $pdv->longitudGoogle); if ($dist > Yii::app()->params->gps['distanciaMaxima']) { continue; } if ($pdvCerca['pdv'] == null) { $pdvCerca['pdv'] = $pdv; $pdvCerca['dist'] = $dist; } else { if ($dist < $pdvCerca['dist']) { $pdvCerca['pdv'] = $pdv; $pdvCerca['dist'] = $dist; } } } if ($pdvCerca['pdv'] == null) { echo CJSON::encode(array('result' => 'error', 'response' => 'No se encuentra punto de venta cercano')); Yii::app()->end(); } $objCiudadSector = SectorCiudad::model()->find(array('with' => array('objCiudad', 'objSector'), 'condition' => 't.codigoCiudad=:ciudad AND t.codigoSector=:sector AND t.estadoCiudadSector=:estado', 'params' => array('ciudad' => $pdvCerca['pdv']->codigoCiudad, 'sector' => $pdvCerca['pdv']->idSectorLRV, 'estado' => 1))); if ($objCiudadSector == null) { echo CJSON::encode(array('result' => 'error', 'response' => 'No se encuentra sector cercano')); Yii::app()->end(); } Yii::app()->session[Yii::app()->params->sesion['pdvEntrega']] = $pdvCerca['pdv']; //Yii::app()->session[Yii::app()->params->sesion['sectorCiudadEntrega']] = $sectorCiudad; /* Yii::app()->session[Yii::app()->params->sesion['subSectorCiudadEntrega']] = null; */ $mensajeUbicacion = "<strong>" . $objCiudadSector->objCiudad->nombreCiudad . " - " . $objCiudadSector->objSector->nombreSector . "</strong>"; if (!isset(Yii::app()->session[Yii::app()->params->sesion['tipoEntrega']]) || Yii::app()->session[Yii::app()->params->sesion['tipoEntrega']] != Yii::app()->params->entrega['tipo']['presencial']) { $objHorarioSecCiud = HorariosCiudadSector::model()->find(array('condition' => 'codigoCiudad=:ciudad AND codigoSector=:sector', 'params' => array(':ciudad' => $objCiudadSector->codigoCiudad, ':sector' => $objCiudadSector->codigoSector))); if ($objHorarioSecCiud != null && $objHorarioSecCiud->sadCiudadSector == 0) { $mensajeUbicacion .= "<br/>No contamos con servicio de entrega a domicilio para esta ubicación, los pedidos deben ser recogidos en el Punto de Venta seleccionado por usted al momento de finalizar la compra."; } } echo CJSON::encode(array('result' => 'ok', 'response' => array('ubicacion' => $mensajeUbicacion, 'url' => CController::createUrl('/sitio/ubicacionSeleccion', array('ciudad' => $pdvCerca['pdv']->codigoCiudad, 'sector' => $pdvCerca['pdv']->idSectorLRV))))); Yii::app()->end(); } catch (Exception $exc) { Yii::log($exc->getMessage() . "\n" . $exc->getTraceAsString(), CLogger::LEVEL_ERROR, 'application'); echo CJSON::encode(array('result' => 'error', 'response' => 'Error: ' . $exc->getMessage())); Yii::app()->end(); } } else { echo CJSON::encode(array('result' => 'error', 'response' => 'Solicitud invalida.')); Yii::app()->end(); } }