ReporteIndividualController.php 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. <?php
  2. namespace v1\controllers;
  3. use common\data\Respuesta;
  4. use common\rest\AuthController;
  5. use yii\db\Expression;
  6. use yii\db\Query;
  7. class ReporteIndividualController extends AuthController {
  8. /* public $modelClass = "v1\models\ReporteIndividual";
  9. public $modelName = "ReporteIndividual"; */
  10. public function actionGuardar() {
  11. $idUsuario = intval($this->req->getBodyParam("idUsuario", ""));
  12. $fechaInicio = trim($this->req->getBodyParam("fechaInicio", ""));
  13. $fechaFinal = trim($this->req->getBodyParam("fechaFinal", ""));
  14. $limite = intval($this->req->getBodyParam("limite", ""));
  15. $pagina = intval($this->req->getBodyParam("pagina", 1));
  16. // $q = trim($this->req->get("q", ""));
  17. $query = (new QuerY())
  18. ->select([
  19. "{{ReporteIndividual}}.nombre",
  20. "{{ReporteIndividual}}.facebook",
  21. "{{ReporteIndividual}}.[[facebookVerificado]]",
  22. "{{ReporteIndividual}}.twitter",
  23. "{{ReporteIndividual}}.[[twitterVerificado]]",
  24. "{{ReporteIndividual}}.instagram",
  25. "{{ReporteIndividual}}.[[instagramVerificado]]",
  26. "{{ReporteIndividual}}.[[idUsuario]]",
  27. "{{ReporteIndividual}}.[[cantidadFacebook]]",
  28. "{{ReporteIndividual}}.[[cantidadTwitter]]",
  29. "{{ReporteIndividual}}.[[cantidadInstagram]]",
  30. "{{ReporteIndividual}}.[[cantidadInstagram]]",
  31. "{{ReporteIndividual}}.[[cantidadResultados]]",
  32. "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) as cantidadEventos",
  33. "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) - {{ReporteIndividual}}.[[cantidadResultados]] as cantidadPendientes"
  34. ])
  35. ->from("ReporteIndividual")
  36. ->innerJoin("UsuarioGrupo", "{{UsuarioGrupo}}.[[idUsuario]] = {{ReporteIndividual}}.[[idUsuario]]")
  37. ->innerJoin("EventoGrupo", "{{EventoGrupo}}.[[idGrupo]] = {{UsuarioGrupo}}.[[idGrupo]]")
  38. ->innerJoin("Evento", "{{Evento}}.id = {{EventoGrupo}}.[[idEvento]]")
  39. ->groupBy([
  40. "{{ReporteIndividual}}.nombre",
  41. "{{ReporteIndividual}}.facebook",
  42. "{{ReporteIndividual}}.facebookVerificado",
  43. "{{ReporteIndividual}}.twitter",
  44. "{{ReporteIndividual}}.twitterVerificado",
  45. "{{ReporteIndividual}}.instagram",
  46. "{{ReporteIndividual}}.instagramVerificado",
  47. "{{ReporteIndividual}}.idUsuario",
  48. "{{ReporteIndividual}}.cantidadFacebook",
  49. "{{ReporteIndividual}}.cantidadTwitter",
  50. "{{ReporteIndividual}}.cantidadInstagram",
  51. "{{ReporteIndividual}}.cantidadResultados",
  52. "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]])",
  53. "({{ReporteIndividual}}.[[cantidadFacebook]] + {{ReporteIndividual}}.[[cantidadTwitter]] + {{ReporteIndividual}}.[[cantidadInstagram]]) - {{ReporteIndividual}}.[[cantidadResultados]]"
  54. ]);
  55. if($idUsuario > 0) {
  56. $query->andWhere(["{{ReporteIndividual}}.[[idUsuario]]" => $idUsuario]);
  57. $limite = 1;
  58. $pagina = 1;
  59. }
  60. if ($fechaInicio != "" && $fechaFinal != ""){
  61. $query->andWhere([
  62. "AND",
  63. [">=", "fechaInicio", $fechaInicio],
  64. ["<=", "fechaFinal", $fechaFinal],
  65. ]);
  66. }
  67. /*if($q !== "") {
  68. # Ejemplo de buscador
  69. $query->andWhere([
  70. "OR",
  71. ["ilike", "nombre", $q],
  72. ["ilike", "direccion", $q],
  73. ]);
  74. //
  75. } */
  76. /* if ($limite > 0) {
  77. return new Respuesta($query, $limite);
  78. }
  79. return new Respuesta($query); */
  80. return new Respuesta($query, $limite, $pagina, $this->ordenar);
  81. }
  82. /* public function actionGuardar() {
  83. $id = intval($this->req->getBodyParam("id", null));
  84. $modelo = null;
  85. if($id > 0) {
  86. $modelo = $this->modelClass::findOne($id);
  87. }
  88. if($modelo === null) {
  89. $modelo = new $this->modelClass();
  90. $modelo->creado = new Expression('now()');
  91. $modelo->idUsuarioCreador = $this->usuario->id;
  92. } else {
  93. $modelo->modificado = new Expression('now()');
  94. }
  95. $modelo->load($this->req->getBodyParams(), '');
  96. if (!$modelo->save()) {
  97. return (new Respuesta($modelo))
  98. ->mensaje("Hubo un problema al guardar el {$this->modelName}");
  99. }
  100. $modelo->refresh();
  101. return (new Respuesta($modelo))
  102. ->mensaje("{$this->modelName} guardado correctamente");
  103. } */
  104. public function actionEliminar() {
  105. $id = intval($this->req->getBodyParam("id", null));
  106. $modelo = null;
  107. if($id > 0) {
  108. $modelo = $this->modelClass::findOne(["id" => $id]);
  109. }
  110. if($modelo === null) {
  111. return (new Respuesta())
  112. ->esError()
  113. ->mensaje("{$this->modelName} no encontrado");
  114. }
  115. $modelo->eliminado = null;
  116. if(!$modelo->save()) {
  117. return (new Respuesta($modelo))
  118. ->mensaje("No se pudo eliminar el {$this->modelName}");
  119. }
  120. return (new Respuesta())
  121. ->mensaje("{$this->modelName} eliminado");
  122. }
  123. }