/**
  * @inheritdoc
  */
 public function rules()
 {
     return [[['nombre', 'latitud', 'longitud', 'dia', 'prioridad', 'esActivo', 'direccion'], 'required'], [['nombre'], 'unique'], [['latitud', 'longitud'], 'number'], [['direccion'], 'string', 'max' => 255], [['dia', 'prioridad', 'esActivo'], 'integer'], [['nombre'], 'string', 'max' => 50], [['direccion'], function ($attribute, $params) {
         if ($this->direccion !== null) {
             if (!sysconfigs::getCoordinates($this->direccion)) {
                 $this->addError($attribute, \Yii::t('core', 'Address doesnt exist'));
             }
         }
     }]];
 }
 public static function actionView($id)
 {
     $user = User::findIdentityByAccessToken($id);
     //find()->where(['id'=>$id])->one();
     if ($user->tieneRutaDiariaActiva()) {
         $rutaDiaria = RutaDiaria::find()->where(['id_usuario' => $user->id])->andWhere(['fecha' => date('Y-m-d')])->one();
         $comercios = $rutaDiaria->getComerciosOrdenados();
         return ['status' => 'ok', 'requestJson' => sysconfigs::getRutaRequestParaMostrar($user, $comercios)];
     } else {
         return ['status' => 'error', "mensaje" => Yii::t('core', 'there are no routes for today')];
     }
 }
 public function actionView($id)
 {
     $model = $this->findModel($id);
     $comerciosOrdenados = $model->getComerciosOrdenados();
     $usuario = User::findOne($model->id_usuario);
     $comercios = [];
     $datosGrillaPasos = [];
     $datosGrillaPasos[0] = ['orden' => 0, 'tipo' => Yii::t('core', 'User'), 'nombre' => $usuario->username, 'direccion' => $usuario->direccion, 'id_ruta_diaria' => $model->id, "id_comercio" => ''];
     $i = 0;
     foreach ($comerciosOrdenados as $comercio) {
         $datosGrillaPasos[$i + 1] = ['orden' => $i + 1, 'tipo' => Yii::t('core', 'Store'), 'nombre' => $comercio->nombre, 'direccion' => $comercio->direccion, 'id_ruta_diaria' => $model->id, "id_comercio" => $comercio->id];
         $i++;
     }
     $requestRuta = json_encode(sysconfigs::getRutaRequestParaMostrar($usuario, $comerciosOrdenados));
     return $this->render('view', ['model' => $this->findModel($id), 'requestRuta' => $requestRuta, 'datosGrillaPasos' => $datosGrillaPasos]);
 }
    <h1><?php 
echo Html::encode($this->title);
?>
</h1>

    <p>
        <?php 
echo Html::a(Yii::t('core', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']);
?>
    </p>
    <?php 
$usuario = User::findOne($model->id_usuario)->username;
?>

    <?php 
echo DetailView::widget(['model' => $model, 'attributes' => [['attribute' => 'dia', 'label' => Yii::t('core', 'Open on'), 'format' => 'raw', 'value' => Yii::t('core', sysconfigs::getNombreDia($model->dia))], ['attribute' => 'esActivo', 'label' => Yii::t('core', 'Active?'), 'format' => 'raw', 'value' => $model->esActivo ? '<span class="label label-success">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>' : '<span class="label label-danger">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>', 'widgetOptions' => ['pluginOptions' => ['onText' => 'Yes', 'offText' => 'No']]], ['attribute' => 'id_usuario', 'label' => Yii::t('core', 'User'), 'format' => 'raw', 'value' => $usuario]]]);
?>
    <?php 
if (isset($tieneRecorrido)) {
    echo Html::hiddenInput('jsonRequest', $requestRuta, ['id' => 'jsonRequest']);
    ?>
    <h2><?php 
    echo Html::encode(Yii::t('core', 'Schedule'));
    ?>
</h2>
    <?php 
    $provider = new ArrayDataProvider(['allModels' => $datosGrillaPasos, 'sort' => ['attributes' => ['orden', 'tipo', 'nombre', 'direccion']], 'pagination' => ['pageSize' => 10]]);
    echo GridView::widget(['dataProvider' => $provider, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], 'orden', 'tipo', 'nombre', 'direccion']]);
    ?>

use backend\helpers\sysconfigs;
use yii\helpers\Html;
use yii\widgets\DetailView;
/* @var $this yii\web\View */
/* @var $model backend\models\Categoria */
$this->title = $model->nombre;
$this->params['breadcrumbs'][] = ['label' => Yii::t('core', 'Categories'), 'url' => ['index']];
$this->params['breadcrumbs'][] = $this->title;
?>
<div class="categoria-view">

    <h1><?php 
echo Html::encode($this->title);
?>
</h1>

    <p>
        <?php 
echo Html::a(Yii::t('core', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']);
?>
        <?php 
echo Html::a(Yii::t('core', 'Delete'), ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => Yii::t('core', 'Are you sure you want to delete this item?'), 'method' => 'post']]);
?>
    </p>

    <?php 
echo DetailView::widget(['model' => $model, 'attributes' => [['attribute' => 'nombre', 'label' => Yii::t('core', 'Name')], ['attribute' => 'descripcion', 'label' => Yii::t('core', 'Description')], ['attribute' => 'esActivo', 'label' => Yii::t('core', 'Active?'), 'format' => 'raw', 'value' => $model->esActivo ? '<span class="label label-success">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>' : '<span class="label label-danger">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>', 'widgetOptions' => ['pluginOptions' => ['onText' => 'Yes', 'offText' => 'No']]]]]);
?>

</div>
    <h1><?php 
echo Html::encode($this->title);
?>
</h1>
    <?php 
// echo $this->render('_search', ['model' => $searchModel]);
?>

    <p>
        <?php 
echo Html::a(Yii::t('core', 'Create Store'), ['create'], ['class' => 'btn btn-success']);
?>
    </p>

    <?php 
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel, 'columns' => [['class' => 'yii\\grid\\SerialColumn'], ['attribute' => 'nombre', 'label' => Yii::t('core', 'Name')], ['attribute' => 'dia', 'label' => Yii::t('core', 'Open on'), 'format' => 'raw', 'value' => function ($data) {
    return Yii::t('core', sysconfigs::getNombreDia($data->dia));
}], ['attribute' => 'prioridad', 'label' => Yii::t('core', 'Priority'), 'format' => 'raw', 'value' => function ($data) {
    return Yii::t('core', sysconfigs::getNombrePrioridad($data->prioridad));
}], ['attribute' => 'esActivo', 'label' => Yii::t('core', 'Active?'), 'format' => 'raw', 'value' => function ($data) {
    if ($data->esActivo == 0) {
        return '<span class="label label-danger">' . Yii::t('core', sysconfigs::getNombreEsActivo($data->esActivo)) . '</span>';
    } else {
        return '<span class="label label-success">' . Yii::t('core', sysconfigs::getNombreEsActivo($data->esActivo)) . '</span>';
    }
}], ['class' => 'yii\\grid\\ActionColumn']]]);
?>

</div>
        console.log(marker);
    }
    google.maps.event.addDomListener(window, 'load', initMap);

</script>

<div class="comercio-view">

    <h1><?php 
echo Html::encode($this->title);
?>
</h1>

    <p>
        <?php 
echo Html::a(Yii::t('core', 'Update'), ['update', 'id' => $model->id], ['class' => 'btn btn-primary']);
?>
        <?php 
echo Html::a(Yii::t('core', 'Delete'), ['delete', 'id' => $model->id], ['class' => 'btn btn-danger', 'data' => ['confirm' => Yii::t('core', 'Are you sure you want to delete this item?'), 'method' => 'post']]);
?>
    </p>

    <?php 
echo DetailView::widget(['model' => $model, 'attributes' => [['attribute' => 'nombre', 'label' => Yii::t('core', 'Name')], ['attribute' => 'direccion', 'label' => Yii::t('core', 'Adress')], ['attribute' => 'dia', 'label' => Yii::t('core', 'Open on'), 'format' => 'raw', 'value' => Yii::t('core', sysconfigs::getNombreDia($model->dia))], ['attribute' => 'prioridad', 'label' => Yii::t('core', 'Priority'), 'format' => 'raw', 'value' => Yii::t('core', sysconfigs::getNombrePrioridad($model->prioridad))], ['attribute' => 'esActivo', 'label' => Yii::t('core', 'Active?'), 'format' => 'raw', 'value' => $model->esActivo ? '<span class="label label-success">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>' : '<span class="label label-danger">' . Yii::t('core', sysconfigs::getNombreEsActivo($model->esActivo)) . '</span>', 'widgetOptions' => ['pluginOptions' => ['onText' => 'Yes', 'offText' => 'No']]]]]);
?>

</div>

<div id="map-canvas" style="height: 300px; width: 200px;border: 1px solid black"></div>

 /**
  * Updates an existing Ruta model.
  * If update is successful, the browser will be redirected to the 'view' page.
  * @param integer $id
  * @return mixed
  */
 public function actionUpdate($id)
 {
     $model = $this->findModel($id);
     if ($model->load(Yii::$app->request->post())) {
         $validar = $model->validar();
         if ($validar == 'OK' && $model->save()) {
             return $this->redirect(['view', 'id' => $model->id]);
         } else {
             Yii::$app->getSession()->setFlash('danger', $validar);
             return $this->redirect(['update', 'id' => $model->id]);
         }
     } else {
         if ($model->getOrdenComercios()->count() != 0) {
             $ordenComercios = $model->getOrdenComercios()->all();
             $usuario = User::findOne($model->id_usuario);
             $comercios = [];
             $i = 0;
             foreach ($ordenComercios as $ordenComercio) {
                 $comercios[$i] = Comercio::find()->where(['id' => $ordenComercio->id_comercio])->one();
                 $i++;
             }
             $requestRuta = json_encode(sysconfigs::getRutaRequestParaMostrar($usuario, $comercios));
             return $this->render('update', ['model' => $this->findModel($id), 'tieneRecorrido' => true, 'requestRuta' => $requestRuta]);
         } else {
             return $this->render('update', ['model' => $model]);
         }
     }
 }
 /**
  * Retorna los comercios que cumplan los siguientes requisitos:
  * -El comercio es activo
  * -El comercio no pertenece a una ruta activa
  * -El dia del comercio es el pasado por parametro
  * -El comercio esta en el radio del usuario con el id pasado por parametro
  * @param $dia : numero del dia elegido, donde 1 es Lunes y 7 es Domingo
  * @param $idUsuario
  */
 public function obtenerComerciosDisponiblesUsuario($dia, $usuario)
 {
     $comercios = $this->comerciosPorDiaSinRutasActivas($dia);
     $comerciosValidos = [];
     $coordenadasUsuario = ['latitud' => $usuario->latitud, 'longitud' => $usuario->longitud];
     $i = 0;
     foreach ($comercios as $comercio) {
         $i++;
         $coordenadasComercio = ['latitud' => $comercio->latitud, 'longitud' => $comercio->longitud];
         $distanciaUsuarioComercio = sysconfigs::getDistanciaEntreCoordenadas($coordenadasUsuario, $coordenadasComercio);
         if ($distanciaUsuarioComercio <= sysconfigs::RADIO_RELEVADOR) {
             $comerciosValidos[$comercio->id] = $comercio;
         }
     }
     return $comerciosValidos;
 }