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"); } }