EventoNotificacionController.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  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. "{{UsuarioDependencia}}.[[idDependencia]]"
  35. ])
  36. ->from("Evento")
  37. ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
  38. ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
  39. ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
  40. ->innerJoin("Usuario", "{{Usuario}}.[[id]] = {{UsuarioGrupo}}.[[idUsuario]]")
  41. ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.id")
  42. ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
  43. ->andWhere(["{{Usuario}}.eliminado" => null])
  44. ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
  45. /* ->andWhere([
  46. "AND",
  47. [">=", "fechaFinal", $desde],
  48. ["<=", "fechaFinal", $hasta]
  49. ]) */
  50. ->groupBy([
  51. "{{Usuario}}.nombre",
  52. "{{Usuario}}.telefono",
  53. "{{Usuario}}.id",
  54. "tag",
  55. "{{UsuarioDependencia}}.[[idDependencia]]"
  56. ])
  57. ->orderBy([
  58. "{{Usuario}}.id" => SORT_ASC,
  59. // "tag" => SORT_ASC,
  60. "[[Participo]]" => SORT_DESC,
  61. ]);
  62. $aux = [];
  63. $auxDependencia = [];
  64. foreach ($query2->each() as $consulta) {
  65. if (!isset($aux[$consulta['id']])) {
  66. $aux[$consulta['id']] = [
  67. "nombreUsuario" => $consulta['nombre'],
  68. "telefono" => $consulta['telefono'],
  69. "id" => $consulta['id'],
  70. "idDependencia" => $consulta['idDependencia'],
  71. "eventosFaltantes" => [],
  72. "eventosParticipo" => []
  73. ];
  74. }
  75. $nombreEvento = $eventos[$consulta['tag']];
  76. if ($consulta['Participo']) {
  77. $aux[$consulta['id']]['eventosParticipo'][] = $nombreEvento;
  78. } else {
  79. $aux[$consulta['id']]['eventosFaltantes'][] = $nombreEvento;
  80. }
  81. }
  82. foreach ($aux as $consulta) {
  83. if (!isset($auxDependencia[$consulta['idDependencia']])) {
  84. $auxDependencia[$consulta['idDependencia']] = [
  85. "id" => $consulta['idDependencia'],
  86. "eventosFaltantes" => 0,
  87. "eventosParticipo" => 0
  88. ];
  89. }
  90. $eventosFaltantes = count($consulta['eventosFaltantes']);
  91. $auxDependencia[$consulta['idDependencia']]['eventosFaltantes']+= $eventosFaltantes;
  92. $eventosParticipo = count($consulta['eventosParticipo']);
  93. $auxDependencia[$consulta['idDependencia']]['eventosParticipo']+= $eventosParticipo;
  94. /* if ($consulta['Participo']) {
  95. // $auxDependencia[$consulta['idDependencia']]['eventosParticipo'][] = $nombreEvento;
  96. $auxDependencia[$consulta['idDependencia']]['eventosParticipo'][] = $aux[$consulta['id']]['eventosParticipo'];
  97. } else {
  98. // $auxDependencia[$consulta['idDependencia']]['eventosFaltantes'][] = $nombreEvento;
  99. $auxDependencia[$consulta['idDependencia']]['eventosFaltantes'][] = $aux[$consulta['id']]['eventosFaltantes'];
  100. } */
  101. }
  102. return (new Respuesta())
  103. ->detalle($aux);
  104. // ->detalle($auxDependencia);
  105. }
  106. }