123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace app\modules\publico\controllers;
- use common\data\Respuesta;
- use common\rest\JsonController;
- use v1\models\FinMovilizacion;
- use v1\models\Municipio;
- use v1\models\Producto;
- use yii\db\Query;
- class CondicionantesController extends JsonController {
- public function actionIndex() {
- $fin = intval($this->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));
- $q = trim($this->req->get("q", ""));
- $condicionante = (new Query())
- ->select("{{Condicionante}}.[[id]],{{Condicionante}}.[[titulo]],{{Condicionante}}.[[descripcion]]")
- ->from("Condicionante")
- ->andWhere(["{{Condicionante}}.[[eliminado]]" => null]);
- if ($producto > 0) {
- $query = (new Query)
- ->select("id")
- ->from("Producto")
- ->andWhere([
- "eliminado" => null,
- "idSagarhpa" => $producto
- ]);
- $productos = (clone $query)
- ->union((clone $query)->select("[[idPadre]] [[id]]"))
- ->column();
- $idProductos = (new Query)
- ->from("Producto")
- ->select("id")
- ->andWhere(["eliminado" => null])
- ->andWhere(["OR", ["id" => $productos], ["idPadre" => $productos]])
- ->column();
- $condicionante->andWhere(["idProducto" => $idProductos]);
- }
- /* # 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]);
- }
- if($q !== "") {
- $condicionante->andWhere("f_unaccent([[titulo]]) ilike f_unaccent(:q)")
- ->addParams([':q' => "%{$q}%"]);
- }
- 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);
- }
- }
|