| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?php
- namespace v1\controllers;
- use common\data\Respuesta;
- use common\rest\JsonController;
- use yii\db\Expression;
- use yii\db\Query;
- class EventoNotificacionController extends JsonController {
- public function actionIndex() {
- /* $desde = trim($this->req->get("desde", ""));
- $hasta = trim($this->req->get("hasta", "")); */
- $eventos = (new Query())
- ->select([
- "nombre",
- "tag"
- ])
- ->from("Evento")
- ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
- // ->andWhere([
- // "AND",
- // [">=", "fechaFinal", $desde],
- // ["<=", "fechaFinal", $hasta]
- // ])
- ->groupBy(["tag", "nombre"])
- ->indexBy("tag")
- ->column();
- // $sql = $eventos->createCommand()->getRawSql();
- $query2 = (new Query())
- ->select([
- "tag",
- "{{Usuario}}.id",
- "{{Usuario}}.nombre",
- "{{Usuario}}.telefono",
- "case when count({{Resultado}}.accion) > 0 then true else false end as [[Participo]]"
- ])
- ->from("Evento")
- ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
- ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
- ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
- ->innerJoin("Usuario", "{{Usuario}}.[[id]] = {{UsuarioGrupo}}.[[idUsuario]]")
- ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.id")
- ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
- ->andWhere(["{{Usuario}}.eliminado" => null])
- ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
- /* ->andWhere([
- "AND",
- [">=", "fechaFinal", $desde],
- ["<=", "fechaFinal", $hasta]
- ]) */
- ->groupBy([
- "{{Usuario}}.nombre",
- "{{Usuario}}.telefono",
- "{{Usuario}}.id",
- "tag"
- ])
- ->orderBy([
- "{{Usuario}}.id" => SORT_ASC,
- // "tag" => SORT_ASC,
- "[[Participo]]" => SORT_DESC,
- ]);
- $aux = [];
- foreach ($query2->each() as $consulta) {
- if (!isset($aux[$consulta['id']])) {
- $aux[$consulta['id']] = [
- "nombreUsuario" => $consulta['nombre'],
- "telefono" => $consulta['telefono'],
- "id" => $consulta['id'],
- "eventosFaltantes" => [],
- "eventosParticipo" => []
- ];
- }
- $nombreEvento = $eventos[$consulta['tag']];
- if ($consulta['Participo']) {
- $aux[$consulta['id']]['eventosParticipo'][] = $nombreEvento;
- } else {
- $aux[$consulta['id']]['eventosFaltantes'][] = $nombreEvento;
- }
- }
- return (new Respuesta())
- ->detalle($aux);
- }
- }
|