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]]", "{{UsuarioDependencia}}.[[idDependencia]]" ]) ->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", "{{UsuarioDependencia}}.[[idDependencia]]" ]) ->orderBy([ "{{Usuario}}.id" => SORT_ASC, // "tag" => SORT_ASC, "[[Participo]]" => SORT_DESC, ]); $aux = []; $auxDependencia = []; foreach ($query2->each() as $consulta) { if (!isset($aux[$consulta['id']])) { $aux[$consulta['id']] = [ "nombreUsuario" => $consulta['nombre'], "telefono" => $consulta['telefono'], "id" => $consulta['id'], "idDependencia" => $consulta['idDependencia'], "eventosFaltantes" => [], "eventosParticipo" => [] ]; } $nombreEvento = $eventos[$consulta['tag']]; if ($consulta['Participo']) { $aux[$consulta['id']]['eventosParticipo'][] = $nombreEvento; } else { $aux[$consulta['id']]['eventosFaltantes'][] = $nombreEvento; } } foreach ($aux as $consulta) { if (!isset($auxDependencia[$consulta['idDependencia']])) { $auxDependencia[$consulta['idDependencia']] = [ "id" => $consulta['idDependencia'], "eventosFaltantes" => 0, "eventosParticipo" => 0 ]; } $eventosFaltantes = count($consulta['eventosFaltantes']); $auxDependencia[$consulta['idDependencia']]['eventosFaltantes']+= $eventosFaltantes; $eventosParticipo = count($consulta['eventosParticipo']); $auxDependencia[$consulta['idDependencia']]['eventosParticipo']+= $eventosParticipo; /* if ($consulta['Participo']) { // $auxDependencia[$consulta['idDependencia']]['eventosParticipo'][] = $nombreEvento; $auxDependencia[$consulta['idDependencia']]['eventosParticipo'][] = $aux[$consulta['id']]['eventosParticipo']; } else { // $auxDependencia[$consulta['idDependencia']]['eventosFaltantes'][] = $nombreEvento; $auxDependencia[$consulta['idDependencia']]['eventosFaltantes'][] = $aux[$consulta['id']]['eventosFaltantes']; } */ } return (new Respuesta()) ->detalle($aux); // ->detalle($auxDependencia); } }