CondicionantesController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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(["{{NivelMunicipio}}.[[idNivel]]"])
  30. ->from("NivelMunicipio")
  31. ->innerJoin("Municipio", "{{Municipio}}.id = {{NivelMunicipio}}.[[idMunicipio]]")
  32. ->innerJoin("Estado", "{{Estado}}.id = {{Municipio}}.[[idEstado]]")
  33. ->andWhere([
  34. "{{Estado}}.[[clave]]" => $estado,
  35. "{{Municipio}}.[[clave]]" => $ciudad,
  36. ])
  37. ->column();
  38. $condicionante->andWhere(["idNivel" => $nivel]);
  39. }
  40. if ($fin > 0) {
  41. $condicionante
  42. ->leftJoin("CondicionanteFin", "{{CondicionanteFin}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  43. ->leftJoin("FinMovilizacion", "{{CondicionanteFin}}.[[idFin]] = {{FinMovilizacion}}.[[id]]")
  44. ->andWhere(["{{FinMovilizacion}}.[[idSagarhpa]]" => $fin, "{{FinMovilizacion}}.[[eliminado]]" => null]);
  45. }
  46. if ($tipo > 0) {
  47. $condicionante
  48. ->leftJoin("CondicionanteTipo", "{{CondicionanteTipo}}.[[idCondicionante]] = {{Condicionante}}.[[id]]")
  49. ->leftJoin("TipoMovilizacion", "{{CondicionanteTipo}}.[[idTipo]] = {{TipoMovilizacion}}.[[id]]")
  50. ->andWhere(["{{TipoMovilizacion}}.[[idSagarhpa]]" => $tipo, "{{TipoMovilizacion}}.[[eliminado]]" => null]);
  51. }
  52. if ($ciudad > 0) {
  53. // $condicionante->orderBy(["{{Municipio}}.[[nombre]]" => SORT_DESC]);
  54. }
  55. return (new Respuesta($condicionante));
  56. }
  57. }