Przeglądaj źródła

Merge branch 'master' of git.audiovalid.com:yager/yager-api

ElPoteito 2 lat temu
rodzic
commit
e7bc21ff69

+ 29 - 0
commands/UsuarioController.php

@@ -199,4 +199,33 @@ class UsuarioController extends Controller {
       }
     } while ($continuar);
   }
+
+  public function actionCambiarClave($uid, $clave) {
+    if(trim($uid) === "" || trim($clave) === "") {
+      return $this->stdout("Los parámetros uid y clave son obligatorios\n");
+    }
+
+    $firebase = new FirebaseHelper();
+    $auth = $firebase->authentication();
+
+    $res = $auth->changeUserPassword($uid, $clave);
+
+    $this->stdout("Proceso terminado \n");
+  }
+
+  public function actionCambiarTelefono($uid, $telefono) {
+    if(trim($uid) === "" || trim($telefono) === "") {
+      return $this->stdout("Los parámetros uid y telefono son obligatorios\n");
+    }
+
+    $firebase = new FirebaseHelper();
+    $auth = $firebase->authentication();
+
+    $telefono = trim($telefono);
+
+    $propiedades = ["phoneNumber" => "+52{$telefono}"];
+    $res = $auth->updateUser($uid, $propiedades);
+
+    $this->stdout("Proceso terminado \n");
+  }
 }

+ 80 - 0
modules/v1/controllers/ComparativaDependenciaController.php

@@ -0,0 +1,80 @@
+<?php
+
+namespace v1\controllers;
+
+use common\data\Respuesta;
+use common\rest\JsonController;
+use yii\db\Query;
+use yii\web\NotFoundHttpException;
+
+class ComparativaDependenciaController extends JsonController {
+
+  public function actionIndex() {
+    $fechaInicio = trim($this->req->get("inicio", ""));
+    $fechaFinal = trim($this->req->get("fin", ""));
+
+    if($fechaInicio === "" || $fechaFinal === "") {
+      throw new NotFoundHttpException("Los parámetros inicio y fin son obligatorios.");
+    }
+
+    $query = (new Query())
+      ->select([
+        "{{Dependencia}}.id as dependenciaId",
+        "{{Dependencia}}.nombre as dependenciaNombre",
+        "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Facebook' and {{Usuario}}.[[facebookVerificado]]) as eventosFacebook",
+        "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Twitter' and {{Usuario}}.[[twitterVerificado]]) as eventosTwitter",
+        "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Instagram' and {{Usuario}}.[[instagramVerificado]]) as eventosInstagram",
+        "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] not in('Facebook', 'Twitter', 'Instagram') and {{Usuario}}.[[instagramVerificado]]) as eventos",
+        "count({{Resultado}}.accion) as cantidadResultados",
+      ])
+      ->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]]")
+      ->innerJoin("Dependencia", "{{Dependencia}}.id = {{UsuarioDependencia}}.[[idDependencia]]")
+      ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
+      ->andWhere([
+        "AND",
+        [">=", "fechaInicio", $fechaInicio],
+        ["<=", "fechaFinal", $fechaFinal],
+      ])
+      ->groupBy([
+        "dependenciaId",
+        "dependenciaNombre",
+      ])
+      ->orderBy(["dependenciaNombre" => SORT_ASC]);
+
+    $query2 = (new Query())
+      ->select([
+        "*",
+        "([[eventosFacebook]] + [[eventosTwitter]] + [[eventosInstagram]]) as [[cantidadEventos]]",
+        "([[eventosFacebook]] + [[eventosTwitter]] + [[eventosInstagram]]) - [[cantidadResultados]] as [[cantidadPendientes]]"
+      ])
+      ->from(["t" => $query]);
+
+    $data = [];
+
+    $eventosAtendidos = 0;
+    $eventosPendientes = 0;
+    $csv = "nombre,participaciones,pendientes\n";
+    foreach($query2->each() as $resultado) {
+      $eventosAtendidos += $resultado["cantidadResultados"];
+      $eventosPendientes += $resultado["cantidadPendientes"];
+
+      $data[] = [
+        "id" => $resultado["dependenciaId"],
+        "nombre" => $resultado["dependenciaNombre"],
+        "participaciones" => $resultado["cantidadResultados"],
+        "pendientes" => $resultado["cantidadPendientes"],
+      ];
+
+      $csv .= "{$resultado["dependenciaNombre"]},{$resultado["cantidadResultados"]},{$resultado["cantidadPendientes"]}\n";
+    }
+
+    \Yii::$app->getResponse()->sendContentAsFile($csv, "comparativa_dep_{$fechaInicio}_{$fechaFinal}.csv");
+    \Yii::$app->end();
+  }
+
+}

+ 2 - 2
modules/v1/controllers/EventoController.php

@@ -319,9 +319,9 @@ class EventoController extends AuthController {
       ->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("Usuario", "{{Usuario}}.id = {{UsuarioGrupo}}.[[idUsuario]]")
+      ->innerJoin("UsuarioDependencia", "{{UsuarioDependencia}}.[[idUsuario]] = {{Usuario}}.[[id]]")
       ->innerJoin("Dependencia", "{{Dependencia}}.id = {{UsuarioDependencia}}.[[idDependencia]]")
-      ->innerJoin("Usuario", "{{Usuario}}.id = {{UsuarioDependencia}}.[[idUsuario]]")
       ->leftJoin("Resultado", "{{Resultado}}.[[idEvento]] = {{Evento}}.id and {{Resultado}}.[[idUsuario]] = {{Usuario}}.id")
       ->andWhere([
         "AND",