public function actionBuscaVehiculos($grupo, $id_persona) { // recupera los vehiculos utilizados por la persona en ingresos/egresos $vehiculos = Accesos::getVehiculosPorPersona($id_persona, false, false); // Si la persona es nueva o nunca tuvo accesos devuelve una bandera para que no se muestre el modal if (count($vehiculos) == 0) { return 'notFound'; } // siempre debe agregar al principio de la lista los ids de vehiculos "sin vehiculo" y "bicicleta" // recorre el array para chequear si corresponde insertar al pcio de la lista $estaIDsinVehiculo = false; $estaIDbicicleta = false; foreach ($vehiculos as $vehiculo) { if ($vehiculo['id_vehiculo'] == \Yii::$app->params['sinVehiculo.id']) { $estaIDsinVehiculo = true; break; } } foreach ($vehiculos as $vehiculo) { if ($vehiculo['id_vehiculo'] == \Yii::$app->params['bicicleta.id']) { $estaIDbicicleta = true; break; } } // inserta al principio de la lista if (!$estaIDbicicleta) { array_unshift($vehiculos, ['id_vehiculo' => \Yii::$app->params['bicicleta.id'], 'desc_vehiculo' => '']); } if (!$estaIDsinVehiculo) { array_unshift($vehiculos, ['id_vehiculo' => \Yii::$app->params['sinVehiculo.id'], 'desc_vehiculo' => '']); } $aux = []; foreach ($vehiculos as $vehiculo) { $aux[] = ['id_vehiculo' => $vehiculo['id_vehiculo'], 'desc_vehiculo' => Vehiculos::formateaVehiculoSelect2($vehiculo['id_vehiculo'])]; } // el parametro true se refiere a $ultimoVehiculo, es decir, que traiga el vehiculo del último ingreso de la persona // esto se hace para armar la seleccion $ultVehiculo = Accesos::getVehiculosPorPersona($id_persona, true, false); // ultVehiculo es un array de arrays [idVehiculo=>valor] $seleccion = []; foreach ($ultVehiculo as $v) { foreach ($v as $key => $valor) { $seleccion[] = $valor; } } if ($grupo == 'ingpersonas') { return $this->renderAjax('_ingvehiculos', ['vehiculos' => $aux, 'seleccion' => $seleccion]); } else { return $this->renderAjax('_egrvehiculos', ['vehiculos' => $aux, 'seleccion' => $seleccion]); } }
public function actionVehiculoslist($q = null, $id = null) { \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON; $out = ['results' => ['id' => '', 'text' => '']]; if (!is_null($q)) { $q = str_replace(' ', '%', $q); $sp = 'CALL vehiculos_busca(:query)'; $command = Yii::$app->db->createCommand($sp); $q = trim($q); $command->bindParam(":query", $q); $data = $command->queryAll(); // el command devuelve un array de array con forma id=>n,text=>'' // se recorre todo el array, se detecta el key id y con su valor se busca el vehiculo // y se agrega a un nuevo array para despues ordenarlo por text y devolverlo $aux = ['id' => '', 'text' => '']; foreach ($data as $cadauno) { foreach ($cadauno as $key => $valor) { if ($key == 'id') { $t = Vehiculos::formateaVehiculoSelect2($valor); $aux[] = ['id' => $valor, 'text' => $t]; } } } asort($aux); $out['results'] = array_values($aux); } elseif ($id > 0) { $out['results'] = ['id' => $id, 'text' => Vehiculos::formateaVehiculoSelect2($id)]; } return $out; }