diff --git a/app/Config/Database.php b/app/Config/Database.php index 87d73b1..ac347f2 100644 --- a/app/Config/Database.php +++ b/app/Config/Database.php @@ -33,9 +33,9 @@ class Database extends Config public $default = [ 'DSN' => '', 'hostname' => 'localhost', - 'username' => '', + 'username' => 'root', 'password' => '', - 'database' => '', + 'database' => 'epic', 'DBDriver' => 'MySQLi', 'DBPrefix' => '', 'pConnect' => false, diff --git a/app/Config/Routes.php b/app/Config/Routes.php index e76f387..9f214c3 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -58,8 +58,8 @@ $routes->group('admin', ['filter' => 'role:Admin'], static function ($routes) { // SOLICITUDES $routes->get('solicitudes/', 'Admin::solicitudes', ['as' => 'admin_solicitudes']); + $routes->post('solicitud/rechazar/(:segment)', 'Admin::rechazarSolicitud/$1', ['as' => 'admin_solicitud_rechazar']); $routes->get('solicitud/aprobar/(:segment)', 'Admin::aprobarSolicitud/$1', ['as' => 'admin_solicitud_aprobar']); - $routes->get('solicitud/rechazar/(:segment)', 'Admin::rechazarSolicitud/$1', ['as' => 'admin_solicitud_rechazar']); $routes->get('solicitud/(:segment)', 'Admin::revisarSolicitud/$1', ['as' => 'admin_solicitud_revisar']); // ENCUESTAS diff --git a/app/Controllers/Admin.php b/app/Controllers/Admin.php index 775198e..1f63266 100644 --- a/app/Controllers/Admin.php +++ b/app/Controllers/Admin.php @@ -57,6 +57,9 @@ class Admin extends BaseController return view('Prestador/formulario_inicial', $data); } + + + public function aprobarSolicitud($id) { $solicitudModel = model(ModelsPrestadorSolicitudModel::class); @@ -85,12 +88,42 @@ class Admin extends BaseController )); } + // Revisar que ususario no tenga asignado ningún registro de prestador + if ($user->idprestador) { + return redirect()->route('admin_solicitudes')->with('msg', array( + 'type' => 'danger', + 'body' => 'Este usuario ya ha sido aprobado.' + )); + } + // Crear registro en la tabla prestador $prestadorModel = model(PrestadorModel::class); + $solicitud = $this->completarSolicitud($solicitud); + if (!$prestadorModel->save($solicitud)) { + return redirect()->route('admin_solicitudes')->with('msg', array( + 'type' => 'danger', + 'body' => 'Error al guardar nuevo registro de prestador.' + )); + } + // Asignar id de la tabla prestador al usuario aprobado + $idprestador = $prestadorModel->getInsertID(); + $user->idprestador = $idprestador; + model(UserModel::class)->save($user); + + // Cambiar status de la solicitud y eliminar datos con 'X' + $this->eliminarDatosSolicitud($solicitudModel, $solicitud); + + // enviar correo + $email = service('email'); - // Cambiar status de la solicitud + $sent = $email + ->setTo($solicitud['email']) + ->setSubject('COPARMEX: Solicitud aprobada') + ->setMessage(view('admin/emails/solicitudAprobada')) + ->setMailType('html') + ->send(); return redirect()->route('admin_solicitudes')->with('msg', array( 'type' => 'success', @@ -100,7 +133,77 @@ class Admin extends BaseController public function rechazarSolicitud($id) { - echo 'rechazandp solicitud ' . $id; + // Validar que la solicitud existe + $solicitudModel = model(ModelsPrestadorSolicitudModel::class); + if (!$solicitud = $solicitudModel->find($id)) { + return redirect()->route('admin_solicitudes')->with('msg', array( + 'type' => 'danger', + 'body' => 'Solicitud no encontrada' + )); + } + + // Verificar que status de la solicitud == 0 + if ($solicitud['status'] != 0) { + return redirect()->route('admin_solicitudes')->with('msg', array( + 'type' => 'danger', + 'body' => 'El status de esta solicitud no permite que sea rechazada' + )); + } + + // cambiar status de solicitud (2) + $solicitud['status'] = 2; + $solicitudModel->save($solicitud); + + // enviar correo + $email = service('email'); + $motivo = $this->request->getPost('motivo'); + + $sent = $email + ->setTo($solicitud['email']) + ->setSubject('COPARMEX: Solicitud rechazada') + ->setMessage(view('admin/emails/solicitudRechazada', ['motivo' => $motivo])) + ->setMailType('html') + ->send(); + + + return redirect()->route('admin_solicitudes')->with('msg', array( + 'type' => 'success', + 'body' => 'Solicitud fue rechazada' + )); + } + + private function completarSolicitud($solicitud) + { + // Agregar campos para completar el registro de prestador + $solicitud['idusuario_actual'] = user_id(); + switch ($solicitud['turno']) { + case 1: + $solicitud['turno'] = 'MATUTINO'; + break; + case 2: + $solicitud['turno'] = 'VESPERTINO'; + break; + case 3: + $solicitud['turno'] = 'MIXTO'; + break; + } + $solicitud['tipo'] = ($solicitud['tipo'] == 1) ? 'SERVICIO SOCIAL' : 'PRACTICAS PROFESIONALES'; + + return $solicitud; + } + + private function eliminarDatosSolicitud($model, $solicitud) + { + $id = $solicitud['id']; + foreach ($solicitud as $key => $value) { + $solicitud[$key] = 'X'; + } + $solicitud['id'] = (int)$id; + $solicitud['status'] = 1; + $solicitud['email'] = 'x@x.com'; + $solicitud['horas_servicio'] = 0; + + $model->save($solicitud); } // ENCUESTAS diff --git a/app/Models/PrestadorModel.php b/app/Models/PrestadorModel.php index 6902145..3217fac 100644 --- a/app/Models/PrestadorModel.php +++ b/app/Models/PrestadorModel.php @@ -16,9 +16,11 @@ class PrestadorModel extends Model 'telefono', 'celular', 'email', 'idescuela', 'carrera', 'grado', 'turno', 'tipo', 'fechainicio', 'iddepartamento_actual', 'horas_servicio', - 'codigo_estudiante', 'horario', ]; + // GUARDAR COMO NOMBRE + // turno, tipo + function getPrestador($id = null) { diff --git a/app/Models/PrestadorSolicitudModel.php b/app/Models/PrestadorSolicitudModel.php index 05f493a..0b56a1d 100644 --- a/app/Models/PrestadorSolicitudModel.php +++ b/app/Models/PrestadorSolicitudModel.php @@ -14,6 +14,7 @@ class PrestadorSolicitudModel extends Model 'idescuela', 'carrera', 'grado', 'turno', 'tipo', 'fechainicio', 'iddepartamento_actual', 'horas_servicio', 'codigo_estudiante', 'horario', + 'status' ]; // protected $returnType = \App\Entities\PrestadorSolicitud::class; protected $useTimestamps = true; @@ -43,8 +44,6 @@ class PrestadorSolicitudModel extends Model 'tipo' => 'required', 'fechainicio' => 'required', 'horas_servicio' => 'required|integer', - - ]; protected $validationMessages = [ @@ -58,7 +57,11 @@ class PrestadorSolicitudModel extends Model function getPrestadorSolicitud($id = null) { if (!$id) { - return $this->where('status', 0)->findAll(); + return $this + ->where('status', 0) + ->orWhere('status', 2) + ->orderBy('id ASC, status DESC') + ->findAll(); } return $this->where('id', $id)->first(); } diff --git a/app/Models/UserModel.php b/app/Models/UserModel.php index 07486c4..b5a46ed 100644 --- a/app/Models/UserModel.php +++ b/app/Models/UserModel.php @@ -19,7 +19,7 @@ class UserModel extends Model protected $allowedFields = [ 'email', 'password_hash', 'reset_hash', 'reset_at', 'reset_expires', 'activate_hash', 'status', 'status_message', 'active', 'force_pass_reset', 'permissions', 'deleted_at', - 'rh_prestador_solicitud_id' + 'idprestador', 'rh_prestador_solicitud_id' ]; protected $useTimestamps = true; protected $validationRules = [ diff --git a/app/Views/Admin/emails/solicitudAprobada.php b/app/Views/Admin/emails/solicitudAprobada.php new file mode 100644 index 0000000..90ef975 --- /dev/null +++ b/app/Views/Admin/emails/solicitudAprobada.php @@ -0,0 +1,4 @@ +

Tu cuenta no ha sido aprobada

+ + +

Ya puedes iniciar sesión y acceder a tu cuenta.

\ No newline at end of file diff --git a/app/Views/Admin/emails/solicitudRechazada.php b/app/Views/Admin/emails/solicitudRechazada.php new file mode 100644 index 0000000..d4791cc --- /dev/null +++ b/app/Views/Admin/emails/solicitudRechazada.php @@ -0,0 +1,7 @@ +

Tu cuenta no ha sido aprobada

+ +

No se ha validado tu cuenta por el siguiente motivo:

+ +

+ +

Si consideras que ha sido un error, puedes iniciar sesión y corregir tus datos para enviarlos nuevamente.

\ No newline at end of file diff --git a/app/Views/Admin/solicitudes.php b/app/Views/Admin/solicitudes.php index b1bbb92..9633eef 100644 --- a/app/Views/Admin/solicitudes.php +++ b/app/Views/Admin/solicitudes.php @@ -15,6 +15,7 @@ Nombre Email + Status Revisar @@ -23,6 +24,7 @@ + diff --git a/app/Views/Prestador/formulario_inicial.php b/app/Views/Prestador/formulario_inicial.php index c895620..45e9d9b 100644 --- a/app/Views/Prestador/formulario_inicial.php +++ b/app/Views/Prestador/formulario_inicial.php @@ -48,7 +48,7 @@
- > + >
@@ -192,7 +192,9 @@ @@ -211,4 +213,32 @@
+ + + + + endSection() ?> \ No newline at end of file