| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169 |
- <?php
- namespace v1\controllers;
- use common\data\Respuesta;
- use common\rest\AuthController;
- use yii\db\Expression;
- use yii\db\Query;
- class ReporteIndividualController extends AuthController {
- /* public $modelClass = "v1\models\ReporteIndividual";
- public $modelName = "ReporteIndividual"; */
- public function actionGuardar() {
- $idUsuario = intval($this->req->getBodyParam("idUsuario", ""));
- $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
- $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
- $limite = intval($this->req->getBodyParam("limite", ""));
- $pagina = intval($this->req->getBodyParam("pagina", 1));
- // $q = trim($this->req->get("q", ""));
- $query = (new Query())
- ->select([
- "{{Usuario}}.nombre as nombre",
- "{{Usuario}}.facebook as facebook",
- "{{Usuario}}.facebookVerificado as facebookVerificado",
- "{{Usuario}}.twitter as twitter",
- "{{Usuario}}.twitterVerificado as twitterVerificado",
- "{{Usuario}}.instagram as instagram",
- "{{Usuario}}.instagramVerificado as instagramVerificado",
- "{{Usuario}}.id as uId",
- // "{{Evento}}.id as eventoId",
- // "{{Evento}}.redSocial",
- "count({{Evento}}.id) as cantidadEventos",
- "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Facebook') as eventosFacebook",
- "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Twitter') as eventosTwitter",
- "count({{Evento}}.[[redSocial]]) filter (where {{Evento}}.[[redSocial]] = 'Instagram') as eventosInstagram",
- "count({{Resultado}}.accion) as cantidadResultados",
- "(count({{Evento}}.id) - count({{Resultado}}.accion)) as cantidadPendientes",
- ])
- ->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")
- ->groupBy(["{{Usuario}}.nombre", "facebook", "facebookVerificado", "twitter", "twitterVerificado", "instagram", "instagramVerificado", "uId"]);
- /* $query = (new QuerY())
- ->select([
- "{{ReporteIndividual}}.nombre",
- "{{ReporteIndividual}}.facebook",
- "{{ReporteIndividual}}.[[facebookVerificado]]",
- "{{ReporteIndividual}}.twitter",
- "{{ReporteIndividual}}.[[twitterVerificado]]",
- "{{ReporteIndividual}}.instagram",
- "{{ReporteIndividual}}.[[instagramVerificado]]",
- "{{ReporteIndividual}}.[[idUsuario]]",
- "{{ReporteIndividual}}.[[cantidadFacebook]]",
- "{{ReporteIndividual}}.[[cantidadTwitter]]",
- "{{ReporteIndividual}}.[[cantidadInstagram]]",
- "{{ReporteIndividual}}.[[cantidadInstagram]]",
- "{{ReporteIndividual}}.[[cantidadResultados]]",
- "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) as cantidadEventos",
- "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) - {{ReporteIndividual}}.[[cantidadResultados]] as cantidadPendientes"
- ])
- ->from("ReporteIndividual")
- ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idUsuario]] = {{ReporteIndividual}}.[[idUsuario]]")
- ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idGrupo]] = {{UsuarioGrupo}}.[[idGrupo]]")
- ->innerJoin("Evento", "{{Evento}}.id = {{EventoGrupo}}.[[idEvento]]")
- ->groupBy([
- "{{ReporteIndividual}}.nombre",
- "{{ReporteIndividual}}.facebook",
- "{{ReporteIndividual}}.facebookVerificado",
- "{{ReporteIndividual}}.twitter",
- "{{ReporteIndividual}}.twitterVerificado",
- "{{ReporteIndividual}}.instagram",
- "{{ReporteIndividual}}.instagramVerificado",
- "{{ReporteIndividual}}.idUsuario",
- "{{ReporteIndividual}}.cantidadFacebook",
- "{{ReporteIndividual}}.cantidadTwitter",
- "{{ReporteIndividual}}.cantidadInstagram",
- "{{ReporteIndividual}}.cantidadResultados",
- "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]])",
- "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) - {{ReporteIndividual}}.[[cantidadResultados]]"
- ]); */
- if($idUsuario > 0) {
- $query->andWhere(["{{Usuario}}.[[id]]" => $idUsuario]);
- $limite = 1;
- $pagina = 1;
- }
- if ($fechaInicio != "" && $fechaFinal != ""){
- $query->andWhere([
- "AND",
- [">=", "{{Evento}}.[[fechaInicio]]", $fechaInicio],
- ["<=", "{{Evento}}.[[fechaInicio]]", $fechaFinal],
- ]);
- }
- /*if($q !== "") {
- # Ejemplo de buscador
- $query->andWhere([
- "OR",
- ["ilike", "nombre", $q],
- ["ilike", "direccion", $q],
- ]);
- //
- } */
- /* if ($limite > 0) {
- return new Respuesta($query, $limite);
- }
- return new Respuesta($query); */
- return new Respuesta($query, $limite, $pagina, $this->ordenar);
- }
- /* public function actionGuardar() {
- $id = intval($this->req->getBodyParam("id", null));
- $modelo = null;
- if($id > 0) {
- $modelo = $this->modelClass::findOne($id);
- }
- if($modelo === null) {
- $modelo = new $this->modelClass();
- $modelo->creado = new Expression('now()');
- $modelo->idUsuarioCreador = $this->usuario->id;
- } else {
- $modelo->modificado = new Expression('now()');
- }
- $modelo->load($this->req->getBodyParams(), '');
- if (!$modelo->save()) {
- return (new Respuesta($modelo))
- ->mensaje("Hubo un problema al guardar el {$this->modelName}");
- }
- $modelo->refresh();
- return (new Respuesta($modelo))
- ->mensaje("{$this->modelName} guardado correctamente");
- } */
- public function actionEliminar() {
- $id = intval($this->req->getBodyParam("id", null));
- $modelo = null;
- if($id > 0) {
- $modelo = $this->modelClass::findOne(["id" => $id]);
- }
- if($modelo === null) {
- return (new Respuesta())
- ->esError()
- ->mensaje("{$this->modelName} no encontrado");
- }
- $modelo->eliminado = null;
- if(!$modelo->save()) {
- return (new Respuesta($modelo))
- ->mensaje("No se pudo eliminar el {$this->modelName}");
- }
- return (new Respuesta())
- ->mensaje("{$this->modelName} eliminado");
- }
- }
|