Kaynağa Gözat

Corrección sincronizado y notificación. Notif.error

ElPoteito 2 yıl önce
ebeveyn
işleme
3e0517a0a7
1 değiştirilmiş dosya ile 115 ekleme ve 18 silme
  1. 115 18
      commands/EventoController.php

+ 115 - 18
commands/EventoController.php

@@ -73,6 +73,7 @@ class EventoController extends Controller {
       $this->stdout("Sincronizando ...");
       $ref = $firestore->collection("eventos")
         ->where("sincronizado", "==", null)
+        // ->where("sincronizado", "==", 'ERROR')
         ->orderBy("timestamp", "ASC")
         ->limit($limite);
 
@@ -228,8 +229,12 @@ class EventoController extends Controller {
                 $usuarioModelo->twitterVerificado = $usuarioRef["twitterVerificado"];
               }
               $usuarioModelo->genero = $usuarioRef["genero"];
-              $usuarioModelo->verificado = $usuarioRef["verificado"];
-              $usuarioModelo->liderGlobal = $usuarioRef["liderGlobal"];
+              if (isset($usuarioRef["verificado"])) {
+                $usuarioModelo->verificado = $usuarioRef["verificado"];
+              }
+              if (isset($usuarioRef["liderGlobal"])) {
+                $usuarioModelo->liderGlobal = $usuarioRef["liderGlobal"];
+              }
               $usuarioModelo->creado = new Expression('now()');
               if ($usuarioRef["estatus"] === false) {
                 $usuarioModelo->eliminado = new Expression('now()');
@@ -242,6 +247,10 @@ class EventoController extends Controller {
 
             // UsuarioGrupo
             if ($usuarioModelo !== null && isset($usuarioRef["grupos"]) && isset($usuarioRef["grupos"][0])) {
+              if ($usuarioRef["estatus"] === false) {
+                $usuarioModelo->eliminado = new Expression('now()');
+                $usuarioModelo->save();
+              }
               for ($i = 0; $i < count($usuarioRef["grupos"]); $i++) {
                 $modelGrupo = Grupo::findOne(['firebaseId' => $usuarioRef["grupos"][$i]]);
                 if (isset($modelGrupo)) {
@@ -606,7 +615,9 @@ class EventoController extends Controller {
                 $usuarioModelo->twitterVerificado = $usuarioRef["twitterVerificado"];
               }
               $usuarioModelo->genero = $usuarioRef["genero"];
-              $usuarioModelo->verificado = $usuarioRef["verificado"];
+              if (isset($usuarioRef["verificado"])) {
+                $usuarioModelo->verificado = $usuarioRef["verificado"];
+              }
               $usuarioModelo->creado = new Expression('now()');
               if ($usuarioRef["estatus"] === false) {
                 $usuarioModelo->eliminado = new Expression('now()');
@@ -619,6 +630,10 @@ class EventoController extends Controller {
 
             // UsuarioGrupo
             if ($usuarioModelo !== null && isset($usuarioRef["grupos"]) && isset($usuarioRef["grupos"][0])) {
+              if ($usuarioRef["estatus"] === false) {
+                $usuarioModelo->eliminado = new Expression('now()');
+                $usuarioModelo->save();
+              }
               for ($i = 0; $i < count($usuarioRef["grupos"]); $i++) {
                 $modelGrupo = Grupo::findOne(['firebaseId' => $usuarioRef["grupos"][$i]]);
                 if (isset($modelGrupo)) {
@@ -799,8 +814,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'])
+      // ->andWhere([">=", "fechaFinal", '2023-10-02 00:00:00'])
+      // ->andWhere(["<=", "fechaFinal", '2023-10-08 00:00:00'])
       ->groupBy(["tag", "nombre"])
       ->indexBy("tag")
       ->column();
@@ -875,7 +890,7 @@ class EventoController extends Controller {
 
     if (!$eventoResumen->save()) {
       $errores = json_encode($eventoResumen->getFirstErrors());
-      $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+      $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
       return;
     }
 
@@ -897,7 +912,7 @@ class EventoController extends Controller {
       }
       $nombreEvento = $eventos[$consulta['tag']];
       if ($consulta['Participo']) {
-        if (!\in_array($nombreEvento, $aux[$consulta['id']]['eventosParticipo'])){
+        if (!\in_array($nombreEvento, $aux[$consulta['id']]['eventosParticipo'])) {
           $aux[$consulta['id']]['eventosParticipo'][] = $nombreEvento;
         }
       } else {
@@ -924,7 +939,7 @@ class EventoController extends Controller {
 
     if (!$notificacion->save()) {
       $errores = json_encode($notificacion->getFirstErrors());
-      $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+      $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
       return;
     } // */
     # TODO: Revisar si es necesario consultar la información del modelo
@@ -970,7 +985,7 @@ class EventoController extends Controller {
 
       if (!$notificacionUsuario->save()) {
         $errores = json_encode($notificacionUsuario->getFirstErrors());
-        $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+        $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
         return;
       }
     }
@@ -1006,10 +1021,10 @@ class EventoController extends Controller {
 
       if (!$evResDependencia->save()) {
         $errores = json_encode($evResDependencia->getFirstErrors());
-        $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+        $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
         return;
       }
-      
+
       $dependenciaLider = DependenciaLider::find()
         ->andWhere(["idDependencia" => $id]);
 
@@ -1041,7 +1056,7 @@ class EventoController extends Controller {
 
         $contador = 0;
         foreach ($usuariosDependencia->each() as $ud) {
-          if(!isset($aux[$ud["id"]])) {
+          if (!isset($aux[$ud["id"]])) {
             continue;
           }
           $contador++;
@@ -1083,7 +1098,7 @@ class EventoController extends Controller {
         if (!$notificacionUsuario->save()) {
           $this->stdout("Error");
           $errores = json_encode($notificacionUsuario->getFirstErrors());
-          $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+          $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
           return;
         }
       }
@@ -1117,7 +1132,7 @@ class EventoController extends Controller {
           $mensaje .= "*{$nombreDependencia}* fue {$totalParticipaciones}/{$totalEventosDependencia} eventos";
           // $contadorUsuarios = 0;
           foreach ($usuariosDependencia->each() as $ud) {
-            if(!isset($aux[$ud["id"]])) {
+            if (!isset($aux[$ud["id"]])) {
               continue;
             }
             $nomrbeUsuario = trim($aux[$ud["id"]]["nombreUsuario"]);
@@ -1129,7 +1144,7 @@ class EventoController extends Controller {
                 "idUsuario" => $ud->id
               ])
               ->exists();
-            
+
             if ($checkEventoParticipante) {
               continue;
             }
@@ -1147,7 +1162,7 @@ class EventoController extends Controller {
 
             if (!$eventoParticipante->save()) {
               $errores = json_encode($eventoParticipante->getFirstErrors());
-              $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+              $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
               return;
             }
             /* $contadorUsuarios++;
@@ -1157,7 +1172,7 @@ class EventoController extends Controller {
             } */
           }
           // $mensaje .= ")";
-          if ($contadorDependencias < count($auxDependencia)){
+          if ($contadorDependencias < count($auxDependencia)) {
             $mensaje .= ", ";
           }
           $participaciones += $totalParticipaciones;
@@ -1205,7 +1220,7 @@ class EventoController extends Controller {
 
       if (!$notificacionUsuario->save()) {
         $errores = json_encode($notificacionUsuario->getFirstErrors());
-        $this->stdout('Hubo un problema al generar la notificación: '.$errores);
+        $this->stdout('Hubo un problema al generar la notificación: ' . $errores);
         return;
       }
     }
@@ -1229,4 +1244,86 @@ class EventoController extends Controller {
     $this->stdout("Terminó");
     // file_put_contents("archivo.json", json_encode($aux));
   }
+
+  public function actionParticipacionError() {
+    $query = (new Query())
+      ->select([
+        "{{Usuario}}.id as [[id]]",
+        "{{Usuario}}.nombre as [[nombre]]",
+        "{{Usuario}}.telefono as [[telefono]]",
+      ])
+      ->distinct()
+      ->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]]")
+      ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
+      ->andWhere(["{{Usuario}}.eliminado" => null])
+      ->andWhere([">=", "fechaFinal", new Expression("now()-interval '7 days'")])
+      ->groupBy([
+        "{{Usuario}}.[[nombre]]",
+        "{{Usuario}}.[[telefono]]",
+        "{{Usuario}}.[[id]]",
+      ])
+      ->orderBy([
+        "{{Usuario}}.[[id]]" => SORT_ASC,
+      ]);
+
+    $transaccion = \Yii::$app->db->beginTransaction();
+
+    try {
+      $notificacion = new Notificacion();
+      $notificacion->creado = new Expression("now()");
+
+    if (!$notificacion->save()) {
+      $transaccion->rollBack();
+      $errores = json_encode($notificacion->getFirstErrors());
+      $this->stdoutln('Hubo un problema al generar la notificación: ' . $errores);
+      return;
+    }
+
+    foreach ($query->each() as $usuario) {
+      $notificacionUsuario = new NotificacionUsuario();
+
+      $this->stdoutln("idUsuario: {$usuario['id']}");
+      $this->stdoutln("nombre: {$usuario['nombre']}");
+      $this->stdoutln("teléfono: {$usuario['telefono']}");
+
+      $notificacionUsuario->idNotificacion = $notificacion->id;
+      $notificacionUsuario->idUsuario = intval($usuario['id']);
+      $notificacionUsuario->nombre = $usuario['nombre'];
+      $notificacionUsuario->telefono = $usuario['telefono'];
+      $notificacionUsuario->plantilla = Notificacion::PLANTILLA_LIDER_GLOBAL_URL;
+
+      $parametros = [
+        [
+          "type" => "text",
+          "text" => "El día de ayer hubo una falla en el sistema al enviar los reportes de la semana, se esta solucionando. "
+        ],
+        [
+          "type" => "text",
+          "text" => "Gracias por su compresión."
+        ],
+      ];
+      $notificacionUsuario->parametros = $parametros;
+
+      if (!$notificacionUsuario->save()) {
+        $transaccion->rollBack();
+        $errores = json_encode($notificacionUsuario->getFirstErrors());
+        $this->stdoutln('Hubo un problema al generar la notificación: ' . $errores);
+        return;
+      }
+    }
+
+    $notificacion->envio = new Expression('now()');
+    $notificacion->estatus = 'Nuevo';
+    $notificacion->save();
+
+    $transaccion->commit();
+    } catch (\Exception $e) {
+      $transaccion->rollBack();
+      $this->stdoutln("Exception: {$e->getMessage()}\n");
+    }
+  }
 }