req->get("id", "")); $buscar = trim($this->req->get("q", "")); $notIn = trim($this->req->get("notIn", "")); $selector = intval($this->req->get("selector", "")); $esSubestatus = intval($this->req->get("esSubestatus", "")); $idEstatusPadre = trim($this->req->get("idEstatusPadre", "")); $declinado = trim($this->req->get("declinado", "")); $dt = intval($this->req->get("dt", "")); $tipo = trim($this->req->get("tipo", "")); $estatusActual = trim($this->req->get("estatusActual", "")); $usuario = $this->usuario; $estatusUsuario = (new Query()) ->select(['[[idEstatus]]']) ->from('EstatusPermisoUsuario') ->andWhere(['[[idUsuario]]' => $usuario->id]) ->andWhere(['eliminado' => null]) ->all(); $permisoEstatuUsuario = []; foreach($estatusUsuario as $eu) { $permisoEstatuUsuario[] = $eu['idEstatus']; } $query = $this->queryInicial; if ($id !== '') { $query->andWhere(["id" => $id]); } if ($tipo !== '') { if ($tipo === Estatus::TIPO_SOLICITUD) { $query->andWhere(['tipo' => Estatus::TIPO_SOLICITUD]); } if ($tipo === Estatus::TIPO_RECURSO_REVISION) { $query->andWhere(['tipo' => Estatus::TIPO_RECURSO_REVISION]) ->andWhere(['!=', 'nombre', Estatus::ESTATUS_RR_NUEVO]); } } if ($selector > 0) { $query->andWhere(['id' => $permisoEstatuUsuario]); if ($tipo !== '' && $tipo === Estatus::TIPO_SOLICITUD) { if ($esSubestatus > 0) { $query->andWhere(["is not", "idEstatusPadre", null]) ->andWhere(['!=', 'nombre', Estatus::ESTATUS_INICIAL]); } else { $query->andWhere(["idEstatusPadre" => null]) ->andWhere(['!=', 'nombre', Estatus::ESTATUS_INICIAL]) ->andWhere(['!=', 'nombre', Estatus::ESTATUS_RR]) ->andWhere([">=", "dias", $dt]); if ($declinado !== '') { $query->andWhere(['!=', 'nombre', Estatus::ESTATUS_INCOMPETENCIA]); } } $query->andWhere(['tipo' => Estatus::TIPO_SOLICITUD]); } else if ($tipo !== '' && $tipo === Estatus::TIPO_RECURSO_REVISION) { $query->andWhere(['tipo' => Estatus::TIPO_RECURSO_REVISION]) ->andWhere(['!=', 'nombre', Estatus::ESTATUS_RR_NUEVO]) ->andWhere([">=", "dias", $dt]); $nombreEstatusActual = $this->modelClass::findOne($estatusActual); if ($nombreEstatusActual->nombre === Estatus::ESTATUS_RR_NUEVO) { $query->andWhere([ 'OR', ['nombre' => Estatus::ESTATUS_RR_ADMISION], ['nombre' => Estatus::ESTATUS_RR_DESECHADO], ['nombre' => Estatus::ESTATUS_RR_PREVENCION] ]); } if ($nombreEstatusActual->nombre === Estatus::ESTATUS_RR_PREVENCION) { $query->andWhere([ 'OR', ['nombre' => Estatus::ESTATUS_RR_PREVENCION_ATENDIDA], ['nombre' => Estatus::ESTATUS_RR_PREVENCION_NO_ATENDIDA] ]); } if ( $nombreEstatusActual->nombre === Estatus::ESTATUS_RR_PREVENCION_ATENDIDA || $nombreEstatusActual->nombre === Estatus::ESTATUS_RR_PREVENCION_NO_ATENDIDA ) { $query->andWhere([ 'OR', ['nombre' => Estatus::ESTATUS_RR_ADMISION], ['nombre' => Estatus::ESTATUS_RR_DESECHADO] ]); } if ($nombreEstatusActual->nombre === Estatus::ESTATUS_RR_ADMISION) { $query->andWhere(['nombre' => Estatus::ESTATUS_RR_CIERRE_INSTRUCCION]); } if ($nombreEstatusActual->nombre === Estatus::ESTATUS_RR_CIERRE_INSTRUCCION) { $query->andWhere(['nombre' => Estatus::ESTATUS_RR_RESOLUCION]); } if ($nombreEstatusActual->nombre === Estatus::ESTATUS_RR_RESOLUCION) { $query->andWhere(['nombre' => Estatus::ESTATUS_RR_CIERRE_INSTRUCCION]); } } $query->andWhere(['!=', 'id', $estatusActual]); } if ($idEstatusPadre !== '') { $query->andWhere(["idEstatusPadre" => $idEstatusPadre]); } if (!empty($notIn)) { $explode = explode(",", $notIn); $query->andWhere(["NOT IN", "id", $explode]); } if ($buscar) { $query->andWhere([ "OR", "f_unaccent([[nombre]]) ilike f_unaccent(:q)", ])->addParams([':q' => "%{$buscar}%"]); } // Devolver una respuesta con los resultados de la consulta return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar); } // Acción para guardar un calendario public function actionGuardar() { $id = trim($this->req->getBodyParam("id", "")); $modelo = null; if (!empty($id)) { $modelo = $this->modelClass::findOne($id); } if ($modelo === null) { $modelo = new $this->modelClass(); $modelo->creado = new Expression('now()'); $modelo->uuid(); } else { $modelo->modificado = new Expression('now()'); } $modelo->load($this->req->getBodyParams(), ''); // Guardar el modelo en la base de datos if (!$modelo->save()) { return (new Respuesta($modelo)) ->mensaje("Hubo un problema al guardar el registro del estatus"); } $modelo->refresh(); return (new Respuesta($modelo)) ->mensaje("Registro de inconformidad guardado con éxito."); } public function actionEliminar() { $id = trim($this->req->getBodyParam("id", "")); $modelo = null; if ($id !== "") { $modelo = $this->modelClass::findOne(["id" => $id]); } if ($modelo === null) { return (new Respuesta()) ->esError() ->mensaje("Registro de estatus no encontrado"); } $modelo->eliminado = new Expression('now()'); if (!$modelo->save()) { return (new Respuesta($modelo)) ->mensaje("No se pudo eliminar el registro del estatus"); } return (new Respuesta()) ->mensaje("Registro de estatus eliminado"); } }