CondicionantesController.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <?php
  2. namespace app\modules\publico\controllers;
  3. use common\data\Respuesta;
  4. use common\rest\JsonController;
  5. use v1\models\FinMovilizacion;
  6. use v1\models\Municipio;
  7. use v1\models\Producto;
  8. use yii\db\Query;
  9. class CondicionantesController extends JsonController {
  10. public function actionIndex() {
  11. $fin = intval($this->req->get("fin", "0"));
  12. $tipo = intval($this->req->get("tipo", "0"));
  13. $estado = intval($this->req->get("origen", 0));
  14. $ciudad = intval($this->req->get("ciudad", 0));
  15. $producto = intval($this->req->get("producto", 0));
  16. $condicionante = (new Query())
  17. ->select("{{Condicionante}}.[[id]],{{Condicionante}}.[[titulo]],{{Condicionante}}.[[descripcion]]")
  18. ->from("Condicionante")
  19. ->andWhere(["{{Condicionante}}.[[eliminado]]" => null]);
  20. if ($producto > 0) {
  21. $query = (new Query)
  22. ->select("id")
  23. ->from("Producto")
  24. ->andWhere([
  25. "eliminado" => null,
  26. "idSagarhpa" => $producto
  27. ]);
  28. $productos = (clone $query)
  29. ->union((clone $query)->select("[[idPadre]] [[id]]"))
  30. ->column();
  31. $idProductos = (new Query)
  32. ->from("Producto")
  33. ->select("id")
  34. ->andWhere(["eliminado" => null])
  35. ->andWhere(["OR", ["id" => $productos], ["idPadre" => $productos]])
  36. ->column();
  37. $condicionante->andWhere(["idProducto" => $idProductos]);
  38. }
  39. /* # En el front no se pueden elegir ciudades*/
  40. if ($ciudad > 0) {
  41. $nivel = (new Query())
  42. ->select(["{{Nivel}}.[[clave]]"])
  43. ->from("Nivel")
  44. ->innerJoin("NivelMunicipio", "{{Nivel}}.id = {{NivelMunicipio}}.[[idNivel]]")
  45. ->innerJoin("Municipio", "{{Municipio}}.id = {{NivelMunicipio}}.[[idMunicipio]]")
  46. ->innerJoin("Estado", "{{Estado}}.id = {{Municipio}}.[[idEstado]]")
  47. ->andWhere([
  48. "{{Estado}}.[[clave]]" => $estado,
  49. "{{Municipio}}.[[clave]]" => $ciudad,
  50. ])
  51. ->column();
  52. $nivel[] = "TODOS";
  53. $condicionante->innerJoin("Nivel", "{{Nivel}}.id = {{Condicionante}}.[[idNivel]]")
  54. ->andWhere(["{{Nivel}}.[[clave]]" => $nivel]);
  55. }
  56. if ($fin > 0) {
  57. $idFin = FinMovilizacion::find()
  58. ->select("id")
  59. ->andWhere(["eliminado" => null])
  60. ->andWhere(new \yii\db\Expression("[[idSagarhpa]] @> ARRAY[(:fin)::INTEGER]"))
  61. ->addParams([":fin" => $fin])
  62. ->column();
  63. $condicionante
  64. ->leftJoin("CondicionanteFin", "{{CondicionanteFin}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  65. ->andWhere(["{{CondicionanteFin}}.[[idFin]]" => $idFin]);
  66. }
  67. if ($tipo > 0) {
  68. $condicionante
  69. ->leftJoin("CondicionanteTipo", "{{CondicionanteTipo}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  70. ->leftJoin("TipoMovilizacion", "{{CondicionanteTipo}}.[[idTipo]] = {{TipoMovilizacion}}.[[id]]")
  71. ->andWhere(["{{TipoMovilizacion}}.[[idSagarhpa]]" => $tipo, "{{TipoMovilizacion}}.[[eliminado]]" => null]);
  72. }
  73. if ($ciudad > 0) {
  74. // $condicionante->orderBy(["{{Municipio}}.[[nombre]]" => SORT_DESC]);
  75. }
  76. return (new Respuesta($condicionante));
  77. }
  78. public function actionNivelCiudad() {
  79. $idCiudad = intval($this->req->get("ciudad", 0));
  80. $idEstado = intval($this->req->get("estado", 0));
  81. if ($idCiudad <= 0) {
  82. return (new Respuesta())
  83. ->esError()
  84. ->mensaje("Identificador de la ciudad no proporcionado.");
  85. }
  86. $ciudad = (new Query())
  87. ->select("{{Municipio}}.[[nombre]] ||', '||{{Estado}}.[[nombre]]")
  88. ->from("Municipio")
  89. ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]")
  90. ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado])
  91. ->scalar();
  92. $niveles = (new Query())
  93. ->select("{{Nivel}}.[[nombre]],{{Municipio}}.[[nombre]] as [[ciudad]]")
  94. ->from("NivelMunicipio")
  95. ->innerJoin("Municipio", "{{Municipio}}.[[id]] = {{NivelMunicipio}}.[[idMunicipio]]")
  96. ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]")
  97. ->innerJoin("Nivel", "{{NivelMunicipio}}.[[idNivel]] = {{Nivel}}.[[id]]")
  98. ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado])
  99. ->column();
  100. return (new Respuesta($niveles))->detalle($ciudad);
  101. }
  102. }