ColeccionPermisoController.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace v1\controllers;
  3. use common\data\Respuesta;
  4. use common\rest\AuthController;
  5. use v1\models\ColeccionPermisoPermiso;
  6. use v1\models\ModuloPermisoPerfil;
  7. use yii\db\Expression;
  8. class ColeccionPermisoController extends AuthController {
  9. public $modelClass = "v1\models\ColeccionPermiso";
  10. public function actionIndex() {
  11. $id = trim($this->req->get("id", ""));
  12. $buscar = trim($this->req->get("buscar", ""));
  13. $notIn = trim($this->req->get("notIn", ""));
  14. $query = $this->queryInicial;
  15. if (!empty($id)) {
  16. $query->andWhere(["id" => $id]);
  17. }
  18. if (!empty($notIn)) {
  19. $explode = explode(",", $notIn);
  20. $query->andWhere(["NOT IN", "id", $explode]);
  21. }
  22. if ($buscar) {
  23. # Ejemplo de buscador
  24. $query->andWhere([
  25. "OR",
  26. "f_unaccent([[nombre]]) ilike f_unaccent(:q)",
  27. "f_unaccent([[clave]]) ilike f_unaccent(:q)",
  28. ])->addParams([':q' => "%{$buscar}%"]);
  29. //
  30. }
  31. return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
  32. }
  33. public function actionGuardar() {
  34. $id = trim($this->req->getBodyParam("id", ""));
  35. $permisos = $this->req->getBodyParam("permisos", []);
  36. $modelo = null;
  37. $tran = \Yii::$app->getDb()->beginTransaction();
  38. try {
  39. if ($id !== "") {
  40. $modelo = $this->modelClass::findOne($id);
  41. }
  42. if ($modelo === null) {
  43. $modelo = new $this->modelClass();
  44. $modelo->uuid();
  45. $modelo->creado = new Expression('now()');
  46. } else {
  47. $modelo->modificado = new Expression('now()');
  48. }
  49. $modelo->load($this->req->getBodyParams(), '');
  50. if (!$modelo->save()) {
  51. $tran->rollBack();
  52. return (new Respuesta($modelo))
  53. ->mensaje("Hubo un problema al guardar PerfilPermiso");
  54. }
  55. $permisosAnteriores = ColeccionPermisoPermiso::find()->andWhere(['idColeccion' => $modelo->id])->all();
  56. foreach ($permisos as $permiso) {
  57. $coleccionPermiso = null;
  58. $coleccionPermiso = ColeccionPermisoPermiso::find()
  59. ->andWhere(['idColeccion' => $modelo->id])
  60. ->andWhere(['idPermiso' => $permiso])
  61. ->one();
  62. if ($coleccionPermiso === null) {
  63. $coleccionPermiso = new ColeccionPermisoPermiso();
  64. $coleccionPermiso->creado = new Expression('now()');
  65. } else {
  66. $coleccionPermiso->modificado = new Expression('now()');
  67. if ($coleccionPermiso->eliminado) {
  68. $coleccionPermiso->eliminado = null;
  69. }
  70. }
  71. $coleccionPermiso->idColeccion = $modelo->id;
  72. $coleccionPermiso->idPermiso = $permiso;
  73. if (!$coleccionPermiso->save()) {
  74. $tran->rollBack();
  75. return (new Respuesta($coleccionPermiso))
  76. ->mensaje("Hubo un problema al guardar Permiso");
  77. }
  78. }
  79. foreach ($permisosAnteriores as $permisoAnterior) {
  80. if (!in_array($permisoAnterior->idPermiso, $permisos)) {
  81. $permisoAnterior->eliminado = new Expression('now()');
  82. if (!$permisoAnterior->save()) {
  83. $tran->rollBack();
  84. return (new Respuesta($permisoAnterior))
  85. ->mensaje("Hubo un problema al guardar Permiso");
  86. }
  87. }
  88. }
  89. $tran->commit();
  90. $modelo->refresh();
  91. return (new Respuesta($modelo))
  92. ->mensaje("PerfilPermiso guardado");
  93. } catch (\Exception $e) {
  94. $tran->rollBack();
  95. return (new Respuesta())
  96. ->esError()
  97. ->mensaje($e->getMessage());
  98. }
  99. }
  100. public function actionEliminar() {
  101. $id = trim($this->req->getBodyParam("id", null));
  102. $modelo = null;
  103. if ($id > 0) {
  104. $modelo = $this->modelClass::findOne(["id" => $id]);
  105. }
  106. if ($modelo === null) {
  107. return (new Respuesta())
  108. ->esError()
  109. ->mensaje("PerfilPermiso no encontrado");
  110. }
  111. $modelo->eliminado = new Expression('now()');
  112. if (!$modelo->save()) {
  113. return (new Respuesta($modelo))
  114. ->mensaje("No se pudo eliminar PerfilPermiso");
  115. }
  116. return (new Respuesta())
  117. ->mensaje("PerfilPermiso eliminado");
  118. }
  119. }