|
|
@@ -10,10 +10,14 @@ use common\data\Respuesta;
|
|
|
use DateTime;
|
|
|
use Google\Cloud\Core\Timestamp;
|
|
|
use Kreait\Firebase\Firestore;
|
|
|
+use Ramsey\Uuid\Uuid;
|
|
|
use v1\models\Dependencia;
|
|
|
use v1\models\Evento;
|
|
|
use v1\models\EventoAccion;
|
|
|
use v1\models\EventoGrupo;
|
|
|
+use v1\models\EventoResumen;
|
|
|
+use v1\models\EventoResumenDependencia;
|
|
|
+use v1\models\EventoResumenParticipante;
|
|
|
use v1\models\Grupo;
|
|
|
use v1\models\Red;
|
|
|
use v1\models\Resultado;
|
|
|
@@ -225,7 +229,7 @@ class EventoController extends Controller {
|
|
|
}
|
|
|
$usuarioModelo->genero = $usuarioRef["genero"];
|
|
|
$usuarioModelo->verificado = $usuarioRef["verificado"];
|
|
|
- $usuarioModelo->liderGobal = $usuarioRef["liderGlobal"];
|
|
|
+ $usuarioModelo->liderGlobal = $usuarioRef["liderGlobal"];
|
|
|
$usuarioModelo->creado = new Expression('now()');
|
|
|
if ($usuarioRef["estatus"] === false) {
|
|
|
$usuarioModelo->eliminado = new Expression('now()');
|
|
|
@@ -795,6 +799,8 @@ class EventoController extends Controller {
|
|
|
])
|
|
|
->from("Evento")
|
|
|
->andWhere([">=", "fechaFinal", new Expression("now() - interval '7 days'")])
|
|
|
+ // ->andWhere([">=", "fechaFinal", '2023-05-22 00:00:00'])
|
|
|
+ // ->andWhere(["<=", "fechaFinal", '2023-05-27 00:00:00'])
|
|
|
->groupBy(["tag", "nombre"])
|
|
|
->indexBy("tag")
|
|
|
->column();
|
|
|
@@ -804,7 +810,13 @@ class EventoController extends Controller {
|
|
|
->indexBy("id")
|
|
|
->column();
|
|
|
|
|
|
+ $grupos = Grupo::find()
|
|
|
+ ->select("nombre")
|
|
|
+ ->indexBy("id")
|
|
|
+ ->column();
|
|
|
+
|
|
|
$totalEventos = count($eventos);
|
|
|
+ $this->stdout("{$totalEventos}");
|
|
|
if ($totalEventos === 0) {
|
|
|
# ¿Si no hubo eventos en el período de tiempo también hay que avisar?
|
|
|
return;
|
|
|
@@ -817,7 +829,8 @@ class EventoController extends Controller {
|
|
|
"{{Usuario}}.nombre",
|
|
|
"{{Usuario}}.telefono",
|
|
|
"case when count({{Resultado}}.accion) > 0 then true else false end as [[Participo]]",
|
|
|
- "{{UsuarioDependencia}}.[[idDependencia]]"
|
|
|
+ "{{UsuarioDependencia}}.[[idDependencia]]",
|
|
|
+ "{{UsuarioGrupo}}.[[idGrupo]]"
|
|
|
])
|
|
|
->from("Evento")
|
|
|
->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idEvento]] = {{Evento}}.id")
|
|
|
@@ -828,18 +841,45 @@ class EventoController extends Controller {
|
|
|
->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
|
|
|
->andWhere(["{{Usuario}}.eliminado" => null])
|
|
|
->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
|
|
|
+ // ->andWhere([">=", "fechaFinal", '2023-05-22 00:00:00'])
|
|
|
+ // ->andWhere(["<=", "fechaFinal", '2023-05-27 00:00:00'])
|
|
|
->groupBy([
|
|
|
"{{Usuario}}.nombre",
|
|
|
"{{Usuario}}.telefono",
|
|
|
"{{Usuario}}.id",
|
|
|
"tag",
|
|
|
- "{{UsuarioDependencia}}.[[idDependencia]]"
|
|
|
+ "{{UsuarioDependencia}}.[[idDependencia]]",
|
|
|
+ "{{UsuarioGrupo}}.[[idGrupo]]"
|
|
|
])
|
|
|
->orderBy([
|
|
|
"{{Usuario}}.id" => SORT_ASC,
|
|
|
"[[Participo]]" => SORT_DESC,
|
|
|
]);
|
|
|
|
|
|
+ $eventoResumen = new EventoResumen();
|
|
|
+ $eventoResumen->creado = new Expression("now()");
|
|
|
+
|
|
|
+ $uuidEventoResumen = '';
|
|
|
+ do {
|
|
|
+ $uuidEventoResumen = (Uuid::uuid4())
|
|
|
+ ->toString();
|
|
|
+
|
|
|
+ $er = EventoResumen::find()
|
|
|
+ ->andWhere(["uuid" => $uuidEventoResumen]);
|
|
|
+ } while ($er->exists());
|
|
|
+
|
|
|
+ $eventoResumen->uuid = $uuidEventoResumen;
|
|
|
+ $eventoResumen->inicio = new Expression("now()-interval '7 days'");
|
|
|
+ $eventoResumen->fin = new Expression("now()");
|
|
|
+
|
|
|
+ if (!$eventoResumen->save()) {
|
|
|
+ $errores = json_encode($eventoResumen->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ $eventoResumen->refresh();
|
|
|
+
|
|
|
$aux = [];
|
|
|
$auxDependencia = [];
|
|
|
foreach ($query2->each() as $consulta) {
|
|
|
@@ -849,6 +889,7 @@ class EventoController extends Controller {
|
|
|
"telefono" => $consulta['telefono'],
|
|
|
"id" => $consulta['id'],
|
|
|
"idDependencia" => $consulta['idDependencia'],
|
|
|
+ "idGrupo" => $consulta['idGrupo'],
|
|
|
"eventosFaltantes" => [],
|
|
|
"eventosParticipo" => []
|
|
|
];
|
|
|
@@ -879,8 +920,9 @@ class EventoController extends Controller {
|
|
|
$notificacion->creado = new Expression("now()");
|
|
|
|
|
|
if (!$notificacion->save()) {
|
|
|
- return (new Respuesta($notificacion))
|
|
|
- ->mensaje("Hubo un problema al generar la notificación");
|
|
|
+ $errores = json_encode($notificacion->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
} // */
|
|
|
# TODO: Revisar si es necesario consultar la información del modelo
|
|
|
# $notificacion->refresh();
|
|
|
@@ -924,19 +966,53 @@ class EventoController extends Controller {
|
|
|
$notificacionUsuario->parametros = $parametros;
|
|
|
|
|
|
if (!$notificacionUsuario->save()) {
|
|
|
- return (new Respuesta($notificacionUsuario))
|
|
|
- ->mensaje("Hubo un problema al generar la notificación");
|
|
|
+ $errores = json_encode($notificacionUsuario->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//POR LIDER DEPENDENCIA
|
|
|
foreach ($auxDependencia as $id => $dependencia) {
|
|
|
+
|
|
|
+ $evResDependencia = new EventoResumenDependencia();
|
|
|
+
|
|
|
+ $uuidEventoResumenDependencia = '';
|
|
|
+ $consultaERD = EventoResumenDependencia::find()
|
|
|
+ ->andWhere([
|
|
|
+ "AND",
|
|
|
+ ["=", "idEventoResumen", $eventoResumen->id],
|
|
|
+ ["=", "idDependencia", $id],
|
|
|
+ ])
|
|
|
+ ->exists();
|
|
|
+
|
|
|
+ if ($consultaERD) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ do {
|
|
|
+ $uuidEventoResumenDependencia = (Uuid::uuid4())
|
|
|
+ ->toString();
|
|
|
+
|
|
|
+ $erd = EventoResumenDependencia::find()
|
|
|
+ ->andWhere(["clave" => $uuidEventoResumenDependencia]);
|
|
|
+ } while ($erd->exists());
|
|
|
+
|
|
|
+ $evResDependencia->clave = $uuidEventoResumenDependencia;
|
|
|
+ $evResDependencia->idEventoResumen = $eventoResumen->id;
|
|
|
+ $evResDependencia->idDependencia = $id;
|
|
|
+
|
|
|
+ if (!$evResDependencia->save()) {
|
|
|
+ $errores = json_encode($evResDependencia->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
$dependenciaLider = DependenciaLider::find()
|
|
|
->andWhere(["idDependencia" => $id]);
|
|
|
|
|
|
$nombreDependencia = "";
|
|
|
if (isset($dependencias[$id])) {
|
|
|
- $nombreDependencia = $dependencias[$id];
|
|
|
+ $nombreDependencia = trim($dependencias[$id]);
|
|
|
}
|
|
|
|
|
|
foreach ($dependenciaLider->each() as $lider) {
|
|
|
@@ -947,15 +1023,36 @@ class EventoController extends Controller {
|
|
|
$notificacionUsuario->idUsuario = $usuario->id;
|
|
|
$notificacionUsuario->nombre = $usuario->nombre;
|
|
|
$notificacionUsuario->telefono = $usuario->telefono;
|
|
|
- $notificacionUsuario->plantilla = Notificacion::PLANTILLA_LIDER_EVENTO;
|
|
|
+ $notificacionUsuario->plantilla = Notificacion::PLANTILLA_LIDER_EVENTO_URL;
|
|
|
|
|
|
$totalParticipaciones = $dependencia["eventosParticipo"];
|
|
|
$totalEventosDependencia = $dependencia["eventosParticipo"] + $dependencia["eventosFaltantes"];
|
|
|
|
|
|
+ $usuariosDependencia = Usuario::find()
|
|
|
+ ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.id")
|
|
|
+ ->andWhere(["{{UsuarioDependencia}}.[[idDependencia]]" => $id])
|
|
|
+ ->andWhere(["{{Usuario}}.eliminado" => null]);
|
|
|
+
|
|
|
+ // $mensajeUsuariosDependencia = "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos. Puede consultar los resultados en https://laud-red.web.app/resumen-lider-dependencia?id={$evResDependencia->clave}";
|
|
|
+ $mensajeUsuariosDependencia = "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos. ";
|
|
|
+
|
|
|
+ $contador = 0;
|
|
|
+ foreach ($usuariosDependencia->each() as $ud) {
|
|
|
+ $contador++;
|
|
|
+ $nomrbeUsuario = trim($aux[$ud["id"]]["nombreUsuario"]);
|
|
|
+ $totalEventosUsuarioParticipa = count($aux[$ud["id"]]["eventosParticipo"]);
|
|
|
+ $mensajeUsuariosDependencia .= "*{$nomrbeUsuario}*: {$totalEventosUsuarioParticipa}/{$totalEventos}";
|
|
|
+ if ($contador < count($usuariosDependencia->all())) {
|
|
|
+ $mensajeUsuariosDependencia .= ", ";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $mensajeUsuariosDependencia .= ". Puede consultar los resultados en https://laud-red.web.app/resumen-lider-dependencia?id={$evResDependencia->clave}";
|
|
|
+
|
|
|
$parametros = [
|
|
|
[
|
|
|
"type" => "text",
|
|
|
- "text" => "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos"
|
|
|
+ "text" => $mensajeUsuariosDependencia
|
|
|
],
|
|
|
];
|
|
|
|
|
|
@@ -967,7 +1064,7 @@ class EventoController extends Controller {
|
|
|
} else if ($totalParticipaciones > 0) {
|
|
|
$parametros[] = [
|
|
|
"type" => "text",
|
|
|
- "text" => " gracias por tu participación. Vamos por el 100% de"
|
|
|
+ "text" => "Gracias por tu participación. Vamos por el 100% de"
|
|
|
];
|
|
|
} else {
|
|
|
$parametros[] = [
|
|
|
@@ -978,8 +1075,10 @@ class EventoController extends Controller {
|
|
|
$notificacionUsuario->parametros = $parametros;
|
|
|
|
|
|
if (!$notificacionUsuario->save()) {
|
|
|
- return (new Respuesta($notificacionUsuario))
|
|
|
- ->mensaje("Hubo un problema al generar la notificación");
|
|
|
+ $this->stdout("Error");
|
|
|
+ $errores = json_encode($notificacionUsuario->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -991,15 +1090,67 @@ class EventoController extends Controller {
|
|
|
foreach ($liderGlobal->each() as $lider) {
|
|
|
$mensaje = "";
|
|
|
$participaciones = 0;
|
|
|
+ $totalParticipaciones = 0;
|
|
|
+ $totalEventosDependencia = 0;
|
|
|
+ $contadorDependencias = 0;
|
|
|
foreach ($auxDependencia as $id => $dependencia) {
|
|
|
+
|
|
|
+ $contadorDependencias++;
|
|
|
+ $usuariosDependencia = Usuario::find()
|
|
|
+ ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.id")
|
|
|
+ ->andWhere(["{{UsuarioDependencia}}.[[idDependencia]]" => $id])
|
|
|
+ ->andWhere(["{{Usuario}}.eliminado" => null]);
|
|
|
+
|
|
|
$nombreDependencia = "";
|
|
|
if (isset($dependencias[$id])) {
|
|
|
- $nombreDependencia = $dependencias[$id];
|
|
|
+ $nombreDependencia = trim($dependencias[$id]);
|
|
|
|
|
|
$totalParticipaciones = $dependencia["eventosParticipo"];
|
|
|
$totalEventosDependencia = $dependencia["eventosParticipo"] + $dependencia["eventosFaltantes"];
|
|
|
|
|
|
- $mensaje .= "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos || ";
|
|
|
+ $mensaje .= "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos";
|
|
|
+ // $contadorUsuarios = 0;
|
|
|
+ foreach ($usuariosDependencia->each() as $ud) {
|
|
|
+ $nomrbeUsuario = trim($aux[$ud["id"]]["nombreUsuario"]);
|
|
|
+ $totalEventosUsuarioParticipa = count($aux[$ud["id"]]["eventosParticipo"]);
|
|
|
+ $checkEventoParticipante = EventoResumenParticipante::find()
|
|
|
+ ->andWhere([
|
|
|
+ "idEventoResumen" => $eventoResumen->id,
|
|
|
+ "idDependencia" => $id,
|
|
|
+ "idUsuario" => $ud->id
|
|
|
+ ])
|
|
|
+ ->exists();
|
|
|
+
|
|
|
+ if ($checkEventoParticipante) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $eventoParticipante = new EventoResumenParticipante();
|
|
|
+
|
|
|
+ $eventoParticipante->idEventoResumen = $eventoResumen->id;
|
|
|
+ $eventoParticipante->idDependencia = $id;
|
|
|
+ $eventoParticipante->nombreDependencia = $nombreDependencia;
|
|
|
+ $eventoParticipante->idGrupo = $aux[$ud["id"]]["idGrupo"];
|
|
|
+ $eventoParticipante->nombreGrupo = trim($grupos[$aux[$ud["id"]]["idGrupo"]]);
|
|
|
+ $eventoParticipante->idUsuario = $ud->id;
|
|
|
+ $eventoParticipante->nombre = $nomrbeUsuario;
|
|
|
+ $eventoParticipante->totalEventos = $totalEventos;
|
|
|
+ $eventoParticipante->participacion = trim($totalEventosUsuarioParticipa);
|
|
|
+
|
|
|
+ if (!$eventoParticipante->save()) {
|
|
|
+ $errores = json_encode($eventoParticipante->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ /* $contadorUsuarios++;
|
|
|
+ $mensaje .= "*{$nomrbeUsuario}*: {$totalEventosUsuarioParticipa}/{$totalEventos}";
|
|
|
+ if ($contadorUsuarios < count($usuariosDependencia->all())){
|
|
|
+ $mensaje .= " || ";
|
|
|
+ } */
|
|
|
+ }
|
|
|
+ // $mensaje .= ")";
|
|
|
+ if ($contadorDependencias < count($auxDependencia)){
|
|
|
+ $mensaje .= ", ";
|
|
|
+ }
|
|
|
$participaciones += $totalParticipaciones;
|
|
|
}
|
|
|
}
|
|
|
@@ -1015,6 +1166,8 @@ class EventoController extends Controller {
|
|
|
// $totalParticipaciones = $dependencia["eventosParticipo"];
|
|
|
// $totalEventosDependencia = $dependencia["eventosParticipo"] + $dependencia["eventosFaltantes"];
|
|
|
|
|
|
+ $mensaje .= ". Aquí puede mirar el resumen de actividades https://laud-red.web.app/resumen-evento?id={$eventoResumen->uuid}";
|
|
|
+
|
|
|
$parametros = [
|
|
|
[
|
|
|
"type" => "text",
|
|
|
@@ -1042,8 +1195,9 @@ class EventoController extends Controller {
|
|
|
$notificacionUsuario->parametros = $parametros;
|
|
|
|
|
|
if (!$notificacionUsuario->save()) {
|
|
|
- return (new Respuesta($notificacionUsuario))
|
|
|
- ->mensaje("Hubo un problema al generar la notificación");
|
|
|
+ $errores = json_encode($notificacionUsuario->getFirstErrors());
|
|
|
+ $this->stdout('Hubo un problema al generar la notificación: '.$errores);
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
|