123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704 |
- <?php
- namespace v1\controllers;
- use app\models\Folio;
- use app\modules\mail\models\NotificacionCorreo;
- use common\data\Respuesta;
- use common\rest\AuthController;
- use DateTime;
- use DateTimeZone;
- use v1\models\Aclaracion;
- use v1\models\AclaracionMedia;
- use v1\models\BitacoraEstatus;
- use v1\models\Estatus;
- use v1\models\Media;
- use v1\models\MediaBitacoraEstatus;
- use v1\models\Permiso;
- use v1\models\PermisoUsuario;
- use v1\models\Solicitud;
- use v1\models\SolicitudMedia;
- use v1\models\SujetoObligado;
- use v1\models\Usuario;
- use yii\db\Expression;
- class SolicitudController extends AuthController {
- public $modelClass = "v1\models\Solicitud";
- public $permisos = [
- Permiso::PERFIL_SOLICITANTE,
- Permiso::PERFIL_COMISIONADO,
- Permiso::PERFIL_UNIDAD_TRANSPARENCIA,
- Permiso::PERFIL_PONENCIA,
- Permiso::PERFIL_PROYECTISTA,
- Permiso::SOLICITUD_VER_TODO,
- ];
- public function actionIndex() {
- $id = trim($this->req->get("id", ""));
- $buscar = trim($this->req->get("q", ""));
- $idSujetoObligado = intval($this->req->get('idSujetoObligado', ''));
- $idEstatus = trim($this->req->get('idEstatus', ''));
- $fechaInicio = trim($this->req->get("fechaInicio", ""));
- $fechaFin = trim($this->req->get("fechaFin", ""));
- $usuario = $this->usuario;
- if (!$usuario->validarPerfilPermisos()) {
- return (new Respuesta())
- ->esError(403)
- ->mensaje('No cuentas con los permisos para consultar esta información.');
- }
- $query = $this->queryInicial
- ->innerJoin('SujetoObligado', '{{SujetoObligado}}.id = {{Solicitud}}.[[idSujetoObligado]]')
- ->leftJoin('RecursoRevision', '{{RecursoRevision}}.[[idSolicitud]] = {{Solicitud}}.id')
- ->distinct();
- if ($usuario->tienePermiso(Permiso::PERFIL_SOLICITANTE)) {
- $query->andWhere(['{{Solicitud}}.[[idUsuario]]' => $usuario->id]);
- }
- if (!$usuario->tienePermiso(Permiso::SOLICITUD_VER_TODO)) {
- if ($usuario->tienePermiso(Permiso::PERFIL_UNIDAD_TRANSPARENCIA)) {
- $estatusNuevoRR = Estatus::find()
- ->select('id')
- ->andWhere(['nombre' => Estatus::ESTATUS_RR_NUEVO])
- ->andWhere(['eliminado' => null]);
-
- $query->andWhere(['{{Solicitud}}.[[idSujetoObligado]]' => $usuario->idSujetoObligado])
- ->andWhere([
- 'OR',
- '{{RecursoRevision}}.[[id]] is null',
- [
- 'AND',
- '{{RecursoRevision}}.[[idPonencia]] is not null',
- ['!=', '{{RecursoRevision}}.[[idEstatus]]', $estatusNuevoRR]
- ]
- ]);
- }
- if ($usuario->tienePermiso(Permiso::PERFIL_PONENCIA) || $usuario->tienePermiso(Permiso::PERFIL_PROYECTISTA)) {
- $query->andWhere(['{{RecursoRevision}}.[[idPonencia]]' => $usuario->idPonencia]);
- }
- }
- /* if ($usuario->tienePermiso(Permiso::PERFIL_UNIDAD_TRANSPARENCIA)) {
- $query->andWhere(['idUsuario' => $usuario->id]);
- } */
- if ($id !== "") {
- $query->andWhere(["{{Solicitud}}.id" => $id]);
- }
- if ($idSujetoObligado > 0) {
- $query->andWhere(['{{Solicitud}}.[[idSujetoObligado]]' => $idSujetoObligado]);
- }
- if ($idEstatus !== '') {
- $query
- ->andWhere([
- 'OR',
- ['{{Solicitud}}.[[idEstatus]]' => $idEstatus],
- ['{{RecursoRevision}}.[[idEstatus]]' => $idEstatus]
- ]);
- }
- if ($fechaInicio !== "" && $fechaFin !== "") {
- $query->andWhere([
- "AND",
- [">=", "{{Solicitud}}.recepcion", $fechaInicio],
- ["<=", "{{Solicitud}}.recepcion", $fechaFin],
- ]);
- }
- if ($buscar) {
- $query->andWhere([
- "OR",
- "f_unaccent({{Solicitud}}.[[folio]]) ilike f_unaccent(:q)",
- "f_unaccent({{SujetoObligado}}.[[nombre]]) ilike f_unaccent(:q)",
- ])->addParams([':q' => "%{$buscar}%"]);
- }
- return new Respuesta($query, $this->limite, $this->pagina, $this->ordenar);
- }
- public function actionGuardar() {
- $id = trim($this->req->getBodyParam("id", ""));
- $idSujetoObligado = intval($this->req->getBodyParam('idSujetoObligado', ''));
- $archivos = $this->req->getBodyParam("archivos", []);
- $usuario = $this->usuario;
- $esNuevo = false;
- $modelo = null;
- if ($id !== "") {
- $modelo = $this->modelClass::findOne($id);
- }
- $tran = \Yii::$app->getDb()->beginTransaction();
- try {
- if ($modelo === null) {
- $modelo = new $this->modelClass();
- $modelo->uuid();
- $modelo->creado = new Expression('now()');
- $modelo->recepcion = new Expression('now()');
- $modelo->recepcionSistema = new Expression('now()');
- } else {
- $modelo->modificado = new Expression('now()');
- }
- $modelo->load($this->req->getBodyParams(), '');
- $modelo->idUsuario = $usuario->id;
- $folio = '';
- $modeloFolio = Folio::find()
- ->andWhere(['tipo' => 'Solicitud'])
- ->one();
- if ($modelo->isNewRecord) {
- $esNuevo = true;
- }
- if ($esNuevo) {
- $modelo->diasTranscurridos = 0;
- $modelo->diasRestantes = 15;
- $modelo->diasAtencion = 0;
- $estatus = Estatus::findOne(["nombre" => Estatus::ESTATUS_INICIAL]);
- $modelo->idEstatus = $estatus->id;
- $modelo->idSujetoObligadoInicial = $idSujetoObligado;
- $sujetoObligado = SujetoObligado::findOne($modelo->idSujetoObligado);
- $tipo = '';
- if ($modelo->tipoSolicitud === 1) {
- $tipo = 'IP';
- }
- $ano = date('y');
- $claveEstado = '';
- $claveSujetoObligado = '';
- if (isset($sujetoObligado->estado->clave)) {
- $claveEstado = $sujetoObligado->estado->clave;
- }
- if (isset($sujetoObligado->clave)) {
- $claveSujetoObligado = $sujetoObligado->clave;
- }
- if ($sujetoObligado->secuencialSolicitud === null) {
- $sujetoObligado->secuencialSolicitud = 1;
- $sujetoObligado->save();
- }
- $folio = $claveEstado . '' . $claveSujetoObligado . '' . $ano . '' . str_pad($sujetoObligado->secuencialSolicitud, 6, '0', 0);
- // $folio = str_pad($modeloFolio->incremental, 3, '0', 0) . '/' . $sujetoObligado->sigla . '/' . $tipo . '/' . $modeloFolio->ano;
- $modelo->folio = $folio;
- $sujetoObligado->secuencialSolicitud = $sujetoObligado->secuencialSolicitud + 1;
- $sujetoObligado->save();
- }
- if (!$modelo->save()) {
- return (new Respuesta($modelo))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- if ($esNuevo) {
- $bitacora = new BitacoraEstatus();
- $bitacora->uuid();
- $bitacora->idSolicitud = $modelo->id;
- $bitacora->idUsuario = $usuario->id;
- $bitacora->estatusFinal = $estatus->id;
- $bitacora->fechaCambio = $modelo->creado;
- $bitacora->idSujetoObligado = $modelo->idSujetoObligado;
- $bitacora->creado = new Expression('now()');
- $bitacora->comentario = 'Nueva solicitud';
- if (!$bitacora->save()) {
- $tran->rollBack();
- return (new Respuesta($bitacora))
- ->mensaje("Hubo un problema al guardar el folio del registro de la solicitud");
- }
- foreach ($archivos as $archivo) {
- $media = new MediaBitacoraEstatus();
- $media->idMedia = $archivo['id'];
- $media->idBitacoraEstatus = $bitacora->id;
- $media->uuid();
- $media->creado = new Expression('now()');
- if (!$media->save()) {
- $tran->rollBack();
- return (new Respuesta($media))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- }
- // $modeloFolio->incremental = $modeloFolio->incremental + 1;
- /* if (!$modeloFolio->save()) {
- return (new Respuesta($modeloFolio))
- ->mensaje("Hubo un problema al guardar el folio del registro de la solicitud");
- } */
- foreach ($archivos as $archivo) {
- $media = new SolicitudMedia();
- $media->idMedia = $archivo['id'];
- $media->idSolicitud = $modelo->id;
- $media->uuid();
- $media->creado = new Expression('now()');
- if (!$media->save()) {
- $tran->rollBack();
- return (new Respuesta($media))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- $modelo->refresh();
- /* Guardado de notificación de correo */
- if ($esNuevo) {
- $correos = [];
- $correos[] = $modelo->correo;
- $sujetoObligado = SujetoObligado::findOne($modelo->idSujetoObligado);
- $usuariosSujetoObligado = $sujetoObligado->usuarios;
- if (isset($sujetoObligado->correoInstitucional)) {
- $correos[] = $sujetoObligado->correoInstitucional;
- }
- foreach ($usuariosSujetoObligado as $usrSO) {
- if ($usrSO['verificarCorreo'] !== null) {
- $correos[] = $usrSO['correo'];
- }
- }
- $correosFiltrados = array_unique($correos);
- $tz = new DateTimeZone('America/Hermosillo');
- $fechaNotificacion = new DateTime();
- $fechaNotificacion->setTimezone($tz);
- $fechaNotificacion = $fechaNotificacion->format('d/m/Y H:i a');
- $parametros = [
- "prioridad" => NotificacionCorreo::PRIORIDAD_2,
- "asunto" => "Notificación SIISTAI Solicitud: {$modelo->folio} {$fechaNotificacion}",
- "cuerpo" => $this->render("acuse", ["solicitud" => $modelo, "usuario" => $modelo->usuario]),
- "receptores" => $correosFiltrados,
- "adjuntos" => [],
- ];
- $resultado = NotificacionCorreo::enviarMultiple($parametros);
- }
- $tran->commit();
- return (new Respuesta($modelo))
- ->mensaje("Registro de solicitud guardado con éxito.");
- } catch (\Exception $e) {
- $tran->rollBack();
- return (new Respuesta())
- ->esError()
- ->mensaje("Hubo un error en el servidor");
- }
- }
- public function actionEliminar() {
- $id = intval($this->req->getBodyParam("id", null));
- $modelo = null;
- if ($id !== "") {
- $modelo = $this->modelClass::findOne(["id" => $id]);
- }
- if ($modelo === null) {
- return (new Respuesta())
- ->esError()
- ->mensaje("Registro de solicitud no encontrado");
- }
- $modelo->eliminado = new Expression('now()');
- if (!$modelo->save()) {
- return (new Respuesta($modelo))
- ->mensaje("No se pudo eliminar el registro del solicitud");
- }
- return (new Respuesta())
- ->mensaje("Registro de solicitud eliminado");
- }
- public function actionActualizarEstatus() {
- $id = trim($this->req->getBodyParam("id", ""));
- $idEstatusInicial = trim($this->req->getBodyParam("idEstatusInicial", ''));
- $idEstatusFinal = trim($this->req->getBodyParam("idEstatusFinal", ''));
- $idTema = trim($this->req->getBodyParam("idTema", ''));
- $idSubtema = trim($this->req->getBodyParam("idSubtema", ''));
- $idEstatusIncompetencia = trim($this->req->getBodyParam("idEstatusIncompetencia", ''));
- $idEstatusNegativa = trim($this->req->getBodyParam("idEstatusNegativa", ''));
- $comentarios = trim($this->req->getBodyParam("comentario", ''));
- $idSujetoObligado = intval($this->req->getBodyParam("idSujetoObligado", ''));
- $referenciasEstatus = $this->req->getBodyParam("referenciasEstatus", []);
- $tipoAclaracion = trim($this->req->getBodyParam("tipoAclaracion", ''));
- $usuario = $this->usuario;
- $modelo = null;
- $tran = \Yii::$app->db->beginTransaction();
- try {
- if ($id === "") {
- $tran->rollBack();
- return (new Respuesta())
- ->esError()
- ->mensaje('No fue posible encontrar la solucitud seleccionada');
- }
- $modelo = $this->modelClass::findOne($id);
- $modelo->modificado = new Expression('now()');
- $nombreEstatusFinal = Estatus::findOne($idEstatusFinal);
- if ($idTema !== '') {
- $modelo->idTema = $idTema;
- }
- if ($idSubtema !== '') {
- $modelo->idSubtema = $idSubtema;
- }
- if ($idEstatusFinal !== '') {
- $modelo->idEstatus = $idEstatusFinal;
- }
- if (!$modelo->save()) {
- $tran->rollBack();
- return (new Respuesta($modelo))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- if ($idEstatusFinal !== '') {
- $bitacora = new BitacoraEstatus();
- $bitacora->uuid();
- $bitacora->idSolicitud = $modelo->id;
- $bitacora->comentario = $comentarios;
- if ($idEstatusInicial !== '') {
- $bitacora->estatusInicial = $idEstatusInicial;
- }
- if ($idEstatusFinal !== '') {
- $bitacora->estatusFinal = $idEstatusFinal;
- }
- $bitacora->fechaCambio = new Expression('now()');
- $bitacora->creado = new Expression('now()');
- $bitacora->idUsuario = $usuario->id;
- if ($idEstatusIncompetencia !== '') {
- $bitacora->idEstatusIncompetencia = $idEstatusIncompetencia;
- $bitacora->declinado = new Expression('now()');
- $bitacora->idUsuarioDeclina = $usuario->id;
- $bitacora->idSujetoObligado = $idSujetoObligado;
- $solicitudDerivada = new Solicitud();
- $solicitudDerivada->load($modelo, "");
- $solicitudDerivada->uuid();
- $solicitudDerivada->creado = new Expression('now()');
- $solicitudDerivada->recepcion = new Expression('now()');
- $solicitudDerivada->recepcionSistema = new Expression('now()');
- $estatus = Estatus::findOne(["nombre" => Estatus::ESTATUS_INICIAL]);
- $solicitudDerivada->idEstatus = $estatus->id;
- $solicitudDerivada->idSujetoObligadoInicial = $idSujetoObligado;
- $solicitudDerivada->idSujetoObligado = $idSujetoObligado;
- $sujetoObligadoModelo = SujetoObligado::findOne($idSujetoObligado);
- $ano = date('y');
- $claveEstado = '26';
- $claveSujetoObligado = '05024';
- if (isset($sujetoObligadoModelo->estado->clave)) {
- $claveEstado = $sujetoObligadoModelo->estado->clave;
- }
- if (isset($sujetoObligadoModelo->clave)) {
- $claveSujetoObligado = $sujetoObligadoModelo->clave;
- }
- if ($sujetoObligadoModelo->secuencialSolicitud === null) {
- $sujetoObligadoModelo->secuencialSolicitud = 1;
- $sujetoObligadoModelo->save();
- }
- $folio = $claveEstado . '' . $claveSujetoObligado . '' . $ano . '' . str_pad($sujetoObligadoModelo->secuencialSolicitud, 6, '0', 0);
- $solicitudDerivada->folio = $folio;
- if (!$solicitudDerivada->save()) {
- $tran->rollBack();
- return (new Respuesta($solicitudDerivada))
- ->mensaje("Hubo un problema al guardar el folio del registro de la solicitud");
- }
- $bitacoraDerivada = new BitacoraEstatus();
- $bitacoraDerivada->uuid();
- $bitacoraDerivada->idSolicitud = $solicitudDerivada->id;
- $bitacoraDerivada->idUsuario = $usuario->id;
- $bitacoraDerivada->estatusFinal = $estatus->id;
- $bitacoraDerivada->fechaCambio = $solicitudDerivada->creado;
- $bitacoraDerivada->idSujetoObligado = $solicitudDerivada->idSujetoObligado;
- $bitacoraDerivada->creado = new Expression('now()');
- $bitacoraDerivada->comentario = 'Nueva solicitud';
- if (!$bitacoraDerivada->save()) {
- $tran->rollBack();
- return (new Respuesta($bitacoraDerivada))
- ->mensaje("Hubo un problema al guardar el folio del registro de la solicitud");
- }
- $archivos = $modelo->media;
- if ($archivos && count($archivos) > 0) {
- foreach ($archivos as $archivo) {
- $media = new SolicitudMedia();
- $media->idMedia = $archivo['id'];
- $media->idSolicitud = $solicitudDerivada->id;
- // $media->uuid();
- $media->creado = new Expression('now()');
- if (!$media->save()) {
- $tran->rollBack();
- return (new Respuesta($media))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- }
- $modelo->idSolicitudDerivada = $solicitudDerivada->id;
- $modelo->idSujetoObligado = $idSujetoObligado;
- $modelo->motivoDeclinacion = $comentarios;
- $modelo->declinado = new Expression('now()');
- $modelo->idUsuarioDeclina = $usuario->id;
- if (!$modelo->save()) {
- $tran->rollBack();
- return (new Respuesta($modelo))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- if ($idEstatusNegativa !== '') {
- $bitacora->idEstatusNegativa = $idEstatusNegativa;
- }
- if ($nombreEstatusFinal->nombre === Estatus::ESTATUS_ACLARACION) {
- $aclaracion = new Aclaracion();
- $aclaracion->uuid();
- $aclaracion->idSolicitud = $modelo->id;
- $aclaracion->idSolicitaAclaracion = $usuario->id;
- $aclaracion->solicitado = new Expression('now()');
- $aclaracion->tipo = 'solicitud';
- $aclaracion->tipoAclaracion = $tipoAclaracion;
- $aclaracion->solicitudAclaracion = $comentarios;
- $aclaracion->creado = new Expression('now()');
- if (!$aclaracion->save()) {
- $tran->rollBack();
- return (new Respuesta($aclaracion))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- foreach ($referenciasEstatus as $archivo) {
- $media = new AclaracionMedia();
- $media->idMedia = $archivo['id'];
- $media->idAclaracion = $aclaracion->id;
- $media->tipo = 'solicitud';
- $media->creado = new Expression('now()');
- if (!$media->save()) {
- $tran->rollBack();
- return (new Respuesta($media))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- }
- if (!$bitacora->save()) {
- $tran->rollBack();
- return (new Respuesta($bitacora))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- $bitacora->refresh();
- foreach ($referenciasEstatus as $archivo) {
- $media = new MediaBitacoraEstatus();
- $media->uuid();
- $media->idMedia = $archivo['id'];
- $media->idBitacoraEstatus = $bitacora->id;
- $media->creado = new Expression('now()');
- if (!$media->save()) {
- $tran->rollBack();
- return (new Respuesta($media))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- }
- }
- //Enviar correo con cambio de solicitud
- $correos = [];
- $correos[] = $modelo->correo;
- $sujetoObligado = SujetoObligado::findOne($modelo->idSujetoObligado);
- $usuariosSujetoObligado = $sujetoObligado->usuarios;
- if (isset($sujetoObligado->correoInstitucional)) {
- $correos[] = $sujetoObligado->correoInstitucional;
- }
- foreach ($usuariosSujetoObligado as $usrSO) {
- if ($usrSO['verificarCorreo'] !== null) {
- $correos[] = $usrSO['correo'];
- }
- }
- $correosFiltrados = array_unique($correos);
- $tz = new DateTimeZone('America/Hermosillo');
- $fechaNotificacion = new DateTime();
- $fechaNotificacion->setTimezone($tz);
- $fechaNotificacion = $fechaNotificacion->format('d/m/Y H:i a');
- $parametros = [
- "prioridad" => NotificacionCorreo::PRIORIDAD_2,
- "asunto" => "Notificación SIISTAI Solicitud: {$modelo->folio} {$fechaNotificacion}",
- "cuerpo" => $this->render("acuse", ["solicitud" => $modelo, "usuario" => $modelo->usuario]),
- "receptores" => $correosFiltrados,
- "adjuntos" => [],
- ];
- $resultado = NotificacionCorreo::enviarMultiple($parametros);
- $tran->commit();
- $modelo->refresh();
- return (new Respuesta($modelo))
- ->mensaje("Solicitud guardada con éxito.");
- } catch (\Exception $e) {
- $tran->rollBack();
- return (new Respuesta())
- ->esError($e)
- ->mensaje("Hubo un error en el servidor");
- }
- }
- public function actionExpediente() {
- $idSolicitud = trim($this->req->get("idSolicitud", ""));
- if ($idSolicitud === "") {
- return (new Respuesta())
- ->esError()
- ->mensaje("Es necesario proporcionar un identificador de solicitud");
- }
- $bitacoraSolicitud = BitacoraEstatus::find()
- ->andWhere(['{{BitacoraEstatus}}.[[idSolicitud]]' => $idSolicitud]);
- $detalle = [];
- foreach ($bitacoraSolicitud->each() as $bs) {
- if (!isset($bs->media)) {
- continue;
- }
- $estatusAnterior = null;
- $estatusAnterior = Estatus::find()
- ->andWhere(['id' => $bs->estatusInicial])
- ->one();
- $estatusInicial = '';
- if ($estatusAnterior !== null) {
- $estatusInicial = $estatusAnterior->nombre;
- }
- $estatusNuevo = Estatus::find()
- ->andWhere(['id' => $bs->estatusFinal])
- ->one();
- foreach ($bs->media as $archivo) {
- $nombreUsuario = '';
- $usuario = Usuario::findOne($archivo->idUsuario);
- $nombreUsuario = $usuario->nombre;
- }
- $detalle[] = [
- 'nombreUsuario' => $nombreUsuario,
- 'estatusAnterior' => $estatusInicial,
- 'estatusNuevo' => $estatusNuevo->nombre,
- 'mensaje' => $bs->comentario,
- 'media' => $archivo
- ];
- }
- return (new Respuesta())
- ->detalle($detalle);
- }
- public function actionDeclinar() {
- $id = trim($this->req->getBodyParam("id", ""));
- $idSujetoObligado = intval($this->req->getBodyParam("idSujetoObligado", ''));
- $motivoDeclinacion = trim($this->req->getBodyParam("motivoDeclinacion", ''));
- $usuario = $this->usuario;
- $modelo = null;
- // $tran = \Yii::$app->db()->beginTransaction();
- $transaccion = \Yii::$app->db->beginTransaction();
- try {
- if ($id === "") {
- $transaccion->rollBack();
- return (new Respuesta())
- ->esError()
- ->mensaje('No fue posible encontrar la solucitud seleccionada');
- }
- $modelo = $this->modelClass::findOne($id);
- $modelo->modificado = new Expression('now()');
- $modelo->idSujetoObligado = $idSujetoObligado;
- $modelo->motivoDeclinacion = $motivoDeclinacion;
- $modelo->declinado = new Expression('now()');
- $modelo->idUsuarioDeclina = $usuario->id;
- if (!$modelo->save()) {
- $transaccion->rollBack();
- return (new Respuesta($modelo))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- $bitacora = new BitacoraEstatus();
- $bitacora->uuid();
- $bitacora->idSolicitud = $modelo->id;
- $bitacora->estatusInicial = $modelo->idEstatus;
- $bitacora->estatusFinal = $modelo->idEstatus;
- $bitacora->fechaCambio = new Expression('now()');
- $bitacora->creado = new Expression('now()');
- $bitacora->idUsuario = $usuario->id;
- $bitacora->idSujetoObligado = $idSujetoObligado;
- $bitacora->motivoDeclinacion = $motivoDeclinacion;
- $bitacora->declinado = new Expression('now()');
- $bitacora->idUsuarioDeclina = $usuario->id;
- if (!$bitacora->save()) {
- $transaccion->rollBack();
- return (new Respuesta($bitacora))
- ->mensaje("Hubo un problema al guardar el registro de la solicitud");
- }
- $transaccion->commit();
- $modelo->refresh();
- return (new Respuesta($modelo))
- ->mensaje("Solicitud guardada con éxito.");
- } catch (\Exception $e) {
- $transaccion->rollBack();
- return (new Respuesta())
- ->esError($e)
- ->mensaje("Hubo un error en el servidor");
- }
- }
- }
|