req->get("fin", "0")); $tipo = intval($this->req->get("tipo", "0")); $estado = intval($this->req->get("origen", 0)); $ciudad = intval($this->req->get("ciudad", 0)); $producto = intval($this->req->get("producto", 0)); $condicionante = (new Query()) ->select("{{Condicionante}}.[[id]],{{Condicionante}}.[[titulo]],{{Condicionante}}.[[descripcion]]") ->from("Condicionante") ->andWhere(["{{Condicionante}}.[[eliminado]]" => null]); if ($producto > 0) { $producto = Producto::find() ->andWhere(["idSagarhpa" => $producto]) ->one(); $condicionante ->andWhere(["OR", ["{{Condicionante}}.[[idProducto]]" => $producto->id], ["{{Condicionante}}.[[idProducto]]" => $producto->idPadre]]); } /* # En el front no se pueden elegir ciudades*/ if ($ciudad > 0) { $nivel = (new Query()) ->select(["{{Nivel}}.[[clave]]"]) ->from("Nivel") ->innerJoin("NivelMunicipio", "{{Nivel}}.id = {{NivelMunicipio}}.[[idNivel]]") ->innerJoin("Municipio", "{{Municipio}}.id = {{NivelMunicipio}}.[[idMunicipio]]") ->innerJoin("Estado", "{{Estado}}.id = {{Municipio}}.[[idEstado]]") ->andWhere([ "{{Estado}}.[[clave]]" => $estado, "{{Municipio}}.[[clave]]" => $ciudad, ]) ->column(); $nivel[] = "TODOS"; $condicionante->innerJoin("Nivel", "{{Nivel}}.id = {{Condicionante}}.[[idNivel]]") ->andWhere(["{{Nivel}}.[[clave]]" => $nivel]); } if ($fin > 0) { $idFin = FinMovilizacion::find() ->select("id") ->andWhere(["eliminado" => null]) ->andWhere(new \yii\db\Expression("[[idSagarhpa]] @> ARRAY[(:fin)::INTEGER]")) ->addParams([":fin" => $fin]) ->column(); $condicionante ->leftJoin("CondicionanteFin", "{{CondicionanteFin}}.[[idCondicionante]] = {{Condicionante}}.[[id]]") ->andWhere(["{{CondicionanteFin}}.[[idFin]]" => $idFin]); } if ($tipo > 0) { $condicionante ->leftJoin("CondicionanteTipo", "{{CondicionanteTipo}}.[[idCondicionante]] = {{Condicionante}}.[[id]]") ->leftJoin("TipoMovilizacion", "{{CondicionanteTipo}}.[[idTipo]] = {{TipoMovilizacion}}.[[id]]") ->andWhere(["{{TipoMovilizacion}}.[[idSagarhpa]]" => $tipo, "{{TipoMovilizacion}}.[[eliminado]]" => null]); } if ($ciudad > 0) { // $condicionante->orderBy(["{{Municipio}}.[[nombre]]" => SORT_DESC]); } return (new Respuesta($condicionante)); } public function actionNivelCiudad() { $idCiudad = intval($this->req->get("ciudad", 0)); $idEstado = intval($this->req->get("estado", 0)); if ($idCiudad <= 0) { return (new Respuesta()) ->esError() ->mensaje("Identificador de la ciudad no proporcionado."); } $ciudad = (new Query()) ->select("{{Municipio}}.[[nombre]] ||', '||{{Estado}}.[[nombre]]") ->from("Municipio") ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]") ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado]) ->scalar(); $niveles = (new Query()) ->select("{{Nivel}}.[[nombre]],{{Municipio}}.[[nombre]] as [[ciudad]]") ->from("NivelMunicipio") ->innerJoin("Municipio", "{{Municipio}}.[[id]] = {{NivelMunicipio}}.[[idMunicipio]]") ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]") ->innerJoin("Nivel", "{{NivelMunicipio}}.[[idNivel]] = {{Nivel}}.[[id]]") ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado]) ->column(); return (new Respuesta($niveles))->detalle($ciudad); } }