CondicionantesController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. $producto = Producto::find()
  22. ->andWhere(["idSagarhpa" => $producto])
  23. ->one();
  24. $condicionante
  25. ->andWhere(["OR", ["{{Condicionante}}.[[idProducto]]" => $producto->id], ["{{Condicionante}}.[[idProducto]]" => $producto->idPadre]]);
  26. }
  27. /* # En el front no se pueden elegir ciudades*/
  28. if ($ciudad > 0) {
  29. $nivel = (new Query())
  30. ->select(["{{Nivel}}.[[clave]]"])
  31. ->from("Nivel")
  32. ->innerJoin("NivelMunicipio", "{{Nivel}}.id = {{NivelMunicipio}}.[[idNivel]]")
  33. ->innerJoin("Municipio", "{{Municipio}}.id = {{NivelMunicipio}}.[[idMunicipio]]")
  34. ->innerJoin("Estado", "{{Estado}}.id = {{Municipio}}.[[idEstado]]")
  35. ->andWhere([
  36. "{{Estado}}.[[clave]]" => $estado,
  37. "{{Municipio}}.[[clave]]" => $ciudad,
  38. ])
  39. ->column();
  40. $nivel[] = "TODOS";
  41. $condicionante->innerJoin("Nivel", "{{Nivel}}.id = {{Condicionante}}.[[idNivel]]")
  42. ->andWhere(["{{Nivel}}.[[clave]]" => $nivel]);
  43. }
  44. if ($fin > 0) {
  45. $idFin = FinMovilizacion::find()
  46. ->select("id")
  47. ->andWhere(["eliminado" => null])
  48. ->andWhere(new \yii\db\Expression("[[idSagarhpa]] @> ARRAY[(:fin)::INTEGER]"))
  49. ->addParams([":fin" => $fin])
  50. ->column();
  51. $condicionante
  52. ->leftJoin("CondicionanteFin", "{{CondicionanteFin}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  53. ->andWhere(["{{CondicionanteFin}}.[[idFin]]" => $idFin]);
  54. }
  55. if ($tipo > 0) {
  56. $condicionante
  57. ->leftJoin("CondicionanteTipo", "{{CondicionanteTipo}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  58. ->leftJoin("TipoMovilizacion", "{{CondicionanteTipo}}.[[idTipo]] = {{TipoMovilizacion}}.[[id]]")
  59. ->andWhere(["{{TipoMovilizacion}}.[[idSagarhpa]]" => $tipo, "{{TipoMovilizacion}}.[[eliminado]]" => null]);
  60. }
  61. if ($ciudad > 0) {
  62. // $condicionante->orderBy(["{{Municipio}}.[[nombre]]" => SORT_DESC]);
  63. }
  64. return (new Respuesta($condicionante));
  65. }
  66. public function actionNivelCiudad() {
  67. $idCiudad = intval($this->req->get("ciudad", 0));
  68. $idEstado = intval($this->req->get("estado", 0));
  69. if ($idCiudad <= 0) {
  70. return (new Respuesta())
  71. ->esError()
  72. ->mensaje("Identificador de la ciudad no proporcionado.");
  73. }
  74. $ciudad = (new Query())
  75. ->select("{{Municipio}}.[[nombre]] ||', '||{{Estado}}.[[nombre]]")
  76. ->from("Municipio")
  77. ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]")
  78. ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado])
  79. ->scalar();
  80. $niveles = (new Query())
  81. ->select("{{Nivel}}.[[nombre]],{{Municipio}}.[[nombre]] as [[ciudad]]")
  82. ->from("NivelMunicipio")
  83. ->innerJoin("Municipio", "{{Municipio}}.[[id]] = {{NivelMunicipio}}.[[idMunicipio]]")
  84. ->innerJoin("Estado", "{{Estado}}.[[id]] = {{Municipio}}.[[idEstado]]")
  85. ->innerJoin("Nivel", "{{NivelMunicipio}}.[[idNivel]] = {{Nivel}}.[[id]]")
  86. ->andWhere(["{{Municipio}}.[[clave]]" => $idCiudad, "{{Estado}}.[[clave]]" => $idEstado])
  87. ->column();
  88. return (new Respuesta($niveles))->detalle($ciudad);
  89. }
  90. }