EventoNotificacionController.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. namespace v1\controllers;
  3. use common\data\Respuesta;
  4. use common\rest\JsonController;
  5. use yii\db\Expression;
  6. use yii\db\Query;
  7. class EventoNotificacionController extends JsonController {
  8. public function actionIndex() {
  9. /* $desde = trim($this->req->get("desde", ""));
  10. $hasta = trim($this->req->get("hasta", "")); */
  11. $eventos = (new Query())
  12. ->select([
  13. "nombre",
  14. "tag"
  15. ])
  16. ->from("Evento")
  17. ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
  18. // ->andWhere([
  19. // "AND",
  20. // [">=", "fechaFinal", $desde],
  21. // ["<=", "fechaFinal", $hasta]
  22. // ])
  23. ->groupBy(["tag", "nombre"])
  24. ->indexBy("tag")
  25. ->column();
  26. // $sql = $eventos->createCommand()->getRawSql();
  27. $query2 = (new Query())
  28. ->select([
  29. "tag",
  30. "{{Usuario}}.id",
  31. "{{Usuario}}.nombre",
  32. "{{Usuario}}.telefono",
  33. "case when count({{Resultado}}.accion) > 0 then true else false end as [[Participo]]"
  34. ])
  35. ->from("Evento")
  36. ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
  37. ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
  38. ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
  39. ->innerJoin("Usuario", "{{Usuario}}.[[id]] = {{UsuarioGrupo}}.[[idUsuario]]")
  40. ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.id")
  41. ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
  42. ->andWhere(["{{Usuario}}.eliminado" => null])
  43. ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
  44. /* ->andWhere([
  45. "AND",
  46. [">=", "fechaFinal", $desde],
  47. ["<=", "fechaFinal", $hasta]
  48. ]) */
  49. ->groupBy([
  50. "{{Usuario}}.nombre",
  51. "{{Usuario}}.telefono",
  52. "{{Usuario}}.id",
  53. "tag"
  54. ])
  55. ->orderBy([
  56. "{{Usuario}}.id" => SORT_ASC,
  57. // "tag" => SORT_ASC,
  58. "[[Participo]]" => SORT_DESC,
  59. ]);
  60. $aux = [];
  61. foreach ($query2->each() as $consulta) {
  62. if (!isset($aux[$consulta['id']])) {
  63. $aux[$consulta['id']] = [
  64. "nombreUsuario" => $consulta['nombre'],
  65. "telefono" => $consulta['telefono'],
  66. "id" => $consulta['id'],
  67. "eventosFaltantes" => [],
  68. "eventosParticipo" => []
  69. ];
  70. }
  71. $nombreEvento = $eventos[$consulta['tag']];
  72. if ($consulta['Participo']) {
  73. $aux[$consulta['id']]['eventosParticipo'][] = $nombreEvento;
  74. } else {
  75. $aux[$consulta['id']]['eventosFaltantes'][] = $nombreEvento;
  76. }
  77. }
  78. return (new Respuesta())
  79. ->detalle($aux);
  80. }
  81. }