|
|
@@ -5,6 +5,7 @@ namespace v1\controllers;
|
|
|
use common\data\Respuesta;
|
|
|
use common\rest\AuthController;
|
|
|
use yii\db\Expression;
|
|
|
+use yii\db\Query;
|
|
|
|
|
|
class EventoController extends AuthController {
|
|
|
|
|
|
@@ -22,13 +23,13 @@ class EventoController extends AuthController {
|
|
|
}
|
|
|
|
|
|
if($q !== "") {
|
|
|
- /*# Ejemplo de buscador
|
|
|
+ # Ejemplo de buscador
|
|
|
$query->andWhere([
|
|
|
"OR",
|
|
|
["ilike", "nombre", $q],
|
|
|
- ["ilike", "direccion", $q],
|
|
|
+ // ["ilike", "direccion", $q],
|
|
|
]);
|
|
|
- // */
|
|
|
+ //
|
|
|
}
|
|
|
|
|
|
return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
|
|
|
@@ -82,4 +83,198 @@ class EventoController extends AuthController {
|
|
|
->mensaje("{$this->modelName} eliminado");
|
|
|
}
|
|
|
|
|
|
+ public function actionResultadosIndividuales() {
|
|
|
+ $idUsuario = intval($this->req->getBodyParam("idUsuario", null));
|
|
|
+ $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
|
|
|
+ $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
|
|
|
+
|
|
|
+ $query = (new Query())
|
|
|
+ ->select([
|
|
|
+ "{{Evento}}.id as eventoId",
|
|
|
+ "{{Resultado}}.accion as accionRes",
|
|
|
+ ])
|
|
|
+ ->from("Evento")
|
|
|
+ ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
+ ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
|
|
|
+ ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
|
|
|
+ ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]")
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ [">=", "fechaInicio", $fechaInicio],
|
|
|
+ ["<=", "fechaFinal", $fechaFinal],
|
|
|
+ ])
|
|
|
+ ->andWhere(["{{UsuarioGrupo}}.[[idUsuario]]" => $idUsuario])
|
|
|
+ ->orderBy(["eventoId" => SORT_ASC]);
|
|
|
+
|
|
|
+ $total = 0;
|
|
|
+ $participo = 0;
|
|
|
+ foreach($query->each() as $resultado) {
|
|
|
+ $total++;
|
|
|
+ if ($resultado["accionRes"] !== null) {
|
|
|
+ $participo ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return (new Respuesta())
|
|
|
+ ->detalle([
|
|
|
+ "total" => $total,
|
|
|
+ "participo" => $participo,
|
|
|
+ "pendientes" => ($total - $participo)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionResultadosDependencia() {
|
|
|
+ $idDependencia = intval($this->req->getBodyParam("idDependencia", null));
|
|
|
+ $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
|
|
|
+ $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
|
|
|
+
|
|
|
+ $query = (new Query())
|
|
|
+ ->select([
|
|
|
+ "{{Evento}}.id as eventoId",
|
|
|
+ "{{Resultado}}.accion as accionRes",
|
|
|
+ ])
|
|
|
+ ->from("Evento")
|
|
|
+ ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
+ ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
|
|
|
+ ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
|
|
|
+ ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]")
|
|
|
+ ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{UsuarioDependencia}}.[[idUsuario]]")
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ [">=", "fechaInicio", $fechaInicio],
|
|
|
+ ["<=", "fechaFinal", $fechaFinal],
|
|
|
+ ])
|
|
|
+ ->andWhere(["{{UsuarioDependencia}}.[[idDependencia]]" => $idDependencia])
|
|
|
+ ->orderBy(["eventoId" => SORT_ASC]);
|
|
|
+
|
|
|
+ $total = 0;
|
|
|
+ $participo = 0;
|
|
|
+ foreach($query->each() as $resultado) {
|
|
|
+ $total++;
|
|
|
+ if ($resultado["accionRes"] !== null) {
|
|
|
+ $participo ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return (new Respuesta())
|
|
|
+ ->detalle([
|
|
|
+ "total" => $total,
|
|
|
+ "participo" => $participo,
|
|
|
+ "pendientes" => ($total - $participo)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionComparativaDependencia() {
|
|
|
+ $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
|
|
|
+ $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
|
|
|
+
|
|
|
+ $query = (new Query())
|
|
|
+ ->select([
|
|
|
+ "{{Dependencia}}.id as dependenciaId",
|
|
|
+ "{{Dependencia}}.nombre as dependenciaNombre",
|
|
|
+ "COUNT({{Resultado}}.[[idUsuario]]) filter ( where {{Resultado}}.[[idUsuario]] is not null ) as conteoNotNull",
|
|
|
+ "COUNT({{UsuarioGrupo}}.[[idUsuario]]) as totalDependencia"
|
|
|
+ ])
|
|
|
+ ->from("Evento")
|
|
|
+ ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
+ ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
|
|
|
+ ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
|
|
|
+ ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]")
|
|
|
+ ->innerJoin("Dependencia", "{{Dependencia}}.id = {{UsuarioDependencia}}.[[idDependencia]]")
|
|
|
+ ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{UsuarioDependencia}}.[[idUsuario]]")
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ [">=", "fechaInicio", $fechaInicio],
|
|
|
+ ["<=", "fechaFinal", $fechaFinal],
|
|
|
+ ])
|
|
|
+ ->groupBy([
|
|
|
+ "dependenciaId",
|
|
|
+ "dependenciaNombre"
|
|
|
+ ])
|
|
|
+ ->orderBy(["dependenciaNombre" => SORT_ASC]);
|
|
|
+
|
|
|
+ $data = [];
|
|
|
+ foreach($query->each() as $resultado) {
|
|
|
+ $data[] = [
|
|
|
+ "id" => $resultado["dependenciaId"],
|
|
|
+ "nombre" => $resultado["dependenciaNombre"],
|
|
|
+ "participaciones" => $resultado["conteoNotNull"],
|
|
|
+ "pendientes" => $resultado["totalDependencia"] - $resultado["conteoNotNull"]
|
|
|
+ ];
|
|
|
+ }
|
|
|
+
|
|
|
+ return (new Respuesta())
|
|
|
+ ->detalle($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function actionPorEvento() {
|
|
|
+ $idEvento = intval($this->req->getBodyParam("idEvento", null));
|
|
|
+ $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
|
|
|
+ $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
|
|
|
+
|
|
|
+ $queryUsuario = (new Query())
|
|
|
+ ->select([
|
|
|
+ "{{Evento}}.id as eventoId",
|
|
|
+ "{{Resultado}}.accion as accionRes",
|
|
|
+ ])
|
|
|
+ ->from("Evento")
|
|
|
+ ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
+ ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
|
|
|
+ ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
|
|
|
+ ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]")
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ [">=", "fechaInicio", $fechaInicio],
|
|
|
+ ["<=", "fechaFinal", $fechaFinal],
|
|
|
+ ])
|
|
|
+ ->andWhere(["{{Evento}}.id" => $idEvento])
|
|
|
+ ->orderBy(["eventoId" => SORT_ASC]);
|
|
|
+
|
|
|
+ $totalUsuario = 0;
|
|
|
+ $participoUsuario = 0;
|
|
|
+ foreach($queryUsuario->each() as $resultado) {
|
|
|
+ $totalUsuario++;
|
|
|
+ if ($resultado["accionRes"] !== null) {
|
|
|
+ $participoUsuario ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $queryDependencia = (new Query())
|
|
|
+ ->select([
|
|
|
+ "{{Evento}}.id as eventoId",
|
|
|
+ "{{Resultado}}.accion as accionRes",
|
|
|
+ ])
|
|
|
+ ->from("Evento")
|
|
|
+ ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
+ ->innerJoin("Grupo", "{{Grupo}}.id = {{EventoGrupo}}.[[idGrupo]]")
|
|
|
+ ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idGrupo]] = {{Grupo}}.id")
|
|
|
+ ->innerJoin("UsuarioDependencia", '{{UsuarioDependencia}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]')
|
|
|
+ ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{UsuarioGrupo}}.[[idUsuario]]")
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ [">=", "fechaInicio", $fechaInicio],
|
|
|
+ ["<=", "fechaFinal", $fechaFinal],
|
|
|
+ ])
|
|
|
+ ->andWhere(["{{Evento}}.id" => $idEvento])
|
|
|
+ ->orderBy(["eventoId" => SORT_ASC]);
|
|
|
+
|
|
|
+ $totalDependencia = 0;
|
|
|
+ $participoDependencia = 0;
|
|
|
+ foreach($queryDependencia->each() as $resultado) {
|
|
|
+ $totalDependencia++;
|
|
|
+ if ($resultado["accionRes"] !== null) {
|
|
|
+ $participoDependencia ++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return (new Respuesta())
|
|
|
+ ->detalle([
|
|
|
+ "totalResultadosDependencias" => $totalDependencia,
|
|
|
+ "participoResultadosDependencias" => $participoDependencia,
|
|
|
+ "pendientesResultadosDependencias" => ($totalDependencia - $participoDependencia),
|
|
|
+ "totalResultadosUsuarios" => $totalUsuario,
|
|
|
+ "participoResultadosUsuarios" => $participoUsuario,
|
|
|
+ "pendientesResultadosUsuarios" => ($totalUsuario - $participoUsuario)
|
|
|
+ ]);
|
|
|
+ }
|
|
|
}
|