CondicionantesController.php 3.6 KB

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