|
@@ -3,6 +3,9 @@
|
|
|
namespace app\commands;
|
|
namespace app\commands;
|
|
|
|
|
|
|
|
use app\components\FirebaseHelper;
|
|
use app\components\FirebaseHelper;
|
|
|
|
|
+use app\models\Notificacion;
|
|
|
|
|
+use app\models\NotificacionUsuario;
|
|
|
|
|
+use common\data\Respuesta;
|
|
|
use v1\models\Dependencia;
|
|
use v1\models\Dependencia;
|
|
|
use v1\models\Evento;
|
|
use v1\models\Evento;
|
|
|
use v1\models\EventoAccion;
|
|
use v1\models\EventoAccion;
|
|
@@ -15,6 +18,7 @@ use v1\models\UsuarioDependencia;
|
|
|
use v1\models\UsuarioGrupo;
|
|
use v1\models\UsuarioGrupo;
|
|
|
use yii\console\Controller;
|
|
use yii\console\Controller;
|
|
|
use yii\db\Expression;
|
|
use yii\db\Expression;
|
|
|
|
|
+use yii\db\Query;
|
|
|
use yii\helpers\Json;
|
|
use yii\helpers\Json;
|
|
|
|
|
|
|
|
class EventoController extends Controller {
|
|
class EventoController extends Controller {
|
|
@@ -218,6 +222,9 @@ class EventoController extends Controller {
|
|
|
$usuarioModelo->genero = $usuarioRef["genero"];
|
|
$usuarioModelo->genero = $usuarioRef["genero"];
|
|
|
$usuarioModelo->verificado = $usuarioRef["verificado"];
|
|
$usuarioModelo->verificado = $usuarioRef["verificado"];
|
|
|
$usuarioModelo->creado = new Expression('now()');
|
|
$usuarioModelo->creado = new Expression('now()');
|
|
|
|
|
+ if ($usuarioRef["estatus"] === false) {
|
|
|
|
|
+ $usuarioModelo->eliminado = new Expression('now()');
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (!$usuarioModelo->save()) {
|
|
if (!$usuarioModelo->save()) {
|
|
|
$this->stdoutln('Ocurrió un error al guardar un usuario. ' . Json::encode($usuarioModelo->getFirstErrors()));
|
|
$this->stdoutln('Ocurrió un error al guardar un usuario. ' . Json::encode($usuarioModelo->getFirstErrors()));
|
|
@@ -390,4 +397,134 @@ class EventoController extends Controller {
|
|
|
}
|
|
}
|
|
|
} while ($continuar);
|
|
} while ($continuar);
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ public function consultarNorificacion() {
|
|
|
|
|
+
|
|
|
|
|
+ $query = Notificacion::find()
|
|
|
|
|
+ ->orderBy(["id" => SORT_ASC]);
|
|
|
|
|
+
|
|
|
|
|
+ $enviando = (clone $query)
|
|
|
|
|
+ ->andWhere(["estatus" => Notificacion::ESTATUS_ENVIANDO])
|
|
|
|
|
+ ->one();
|
|
|
|
|
+
|
|
|
|
|
+ if ($enviando !== null) {
|
|
|
|
|
+ $this->stdout("Notificación en poceso: ". $enviando->id ."\n");
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return (clone $query)
|
|
|
|
|
+ ->andWhere(["estatus" => Notificacion::ESTATUS_NUEVO])
|
|
|
|
|
+ ->one();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ public function actionParticipacion() {
|
|
|
|
|
+
|
|
|
|
|
+ $eventos = (new Query())
|
|
|
|
|
+ ->select([
|
|
|
|
|
+ "nombre",
|
|
|
|
|
+ "tag"
|
|
|
|
|
+ ])
|
|
|
|
|
+ ->from("Evento")
|
|
|
|
|
+ ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
|
|
|
|
|
+ ->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;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $notificacion = new Notificacion();
|
|
|
|
|
+ $notificacion->creado = new Expression("now()");
|
|
|
|
|
+
|
|
|
|
|
+ if (!$notificacion->save()) {
|
|
|
|
|
+ return (new Respuesta($notificacion))
|
|
|
|
|
+ ->mensaje("Hubo un problema al generar la notificación");
|
|
|
|
|
+ }
|
|
|
|
|
+ $notificacion->refresh();
|
|
|
|
|
+
|
|
|
|
|
+ foreach ($aux as $usuario) {
|
|
|
|
|
+ $notificacionUsuario = new NotificacionUsuario();
|
|
|
|
|
+
|
|
|
|
|
+ $notificacionUsuario->idNotificacion = $notificacion->id;
|
|
|
|
|
+ $notificacionUsuario->idUsuario = $usuario['id'];
|
|
|
|
|
+ $notificacionUsuario->nombre = $usuario['nombreUsuario'];
|
|
|
|
|
+ $notificacionUsuario->telefono = $usuario['telefono'];
|
|
|
|
|
+ $notificacionUsuario->parametros = [
|
|
|
|
|
+ [
|
|
|
|
|
+ "type" => "text",
|
|
|
|
|
+ "text" => count($usuario["eventosParticipo"])."/".count($eventos)
|
|
|
|
|
+ ],
|
|
|
|
|
+ [
|
|
|
|
|
+ "type" => "text",
|
|
|
|
|
+ "text" => "gracias por tu"
|
|
|
|
|
+ ]
|
|
|
|
|
+ ];
|
|
|
|
|
+
|
|
|
|
|
+ if (!$notificacionUsuario->save()) {
|
|
|
|
|
+ return (new Respuesta($notificacionUsuario))
|
|
|
|
|
+ ->mensaje("Hubo un problema al generar la notificación");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $notificacion->estatus = Notificacion::ESTATUS_NUEVO;
|
|
|
|
|
+
|
|
|
|
|
+ $notificacion->save();
|
|
|
|
|
+
|
|
|
|
|
+ $this->stdout("Terminó");
|
|
|
|
|
+ // $this->stdout(json_encode($aux)."\n");
|
|
|
|
|
+ // file_put_contents("archivo.json", json_encode($aux));
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|