@@ -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, | |||
@@ -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 | |||
@@ -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 | |||
@@ -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) | |||
{ | |||
@@ -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(); | |||
} | |||
@@ -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 = [ | |||
@@ -0,0 +1,4 @@ | |||
<h2>Tu cuenta no ha sido aprobada</h2> | |||
<p>Ya puedes <a href="<?= site_url() ?>">iniciar sesión</a> y acceder a tu cuenta.</p> |
@@ -0,0 +1,7 @@ | |||
<h1>Tu cuenta no ha sido aprobada</h1> | |||
<p>No se ha validado tu cuenta por el siguiente motivo:</p> | |||
<p><?= $motivo ?></p> | |||
<p>Si consideras que ha sido un error, puedes <a href="<?= site_url() ?>">iniciar sesión</a> y corregir tus datos para enviarlos nuevamente.</p> |
@@ -15,6 +15,7 @@ | |||
<thead> | |||
<th>Nombre</th> | |||
<th>Email</th> | |||
<th>Status</th> | |||
<th>Revisar</th> | |||
</thead> | |||
<tbody> | |||
@@ -23,6 +24,7 @@ | |||
<tr> | |||
<td><?= $solicitud['nombre'] . ' ' . $solicitud['apaterno'] . ' ' . $solicitud['amaterno'] ?></td> | |||
<td><?= $solicitud['email'] ?></td> | |||
<td><?= $solicitud['status'] == 0 ? 'Por aprobar' : 'Rechazada' ?></td> | |||
<td> | |||
<a href="<?= route_to('admin_solicitud_revisar', $solicitud['id']) ?>" class="btn btn-info "> | |||
<i class="nav-icon fas fa-user-check"></i> | |||
@@ -48,7 +48,7 @@ | |||
<div class="row mb-4"> | |||
<div class="col-md-6"> | |||
<label class="form-label" for="">E-mail*</label> | |||
<input name="email" type="email" class="form-control <?php if (session('errors.email')) : ?>is-invalid<?php endif ?>" readonly value="<?= $email ?>" <?= isset($revisar) ? 'disabled' : '' ?>> | |||
<input name="email" type="email" class="form-control <?php if (session('errors.email')) : ?>is-invalid<?php endif ?>" readonly value="<?= isset($datos['email']) ? $datos['email'] : $email ?>" <?= isset($revisar) ? 'disabled' : '' ?>> | |||
</div> | |||
<div class="col-md-3"> | |||
<label class="form-label" for="">Teléfono Fijo</label> | |||
@@ -192,7 +192,9 @@ | |||
<!-- BOTONES PARA APROBAR / RECHAZAR SOLICITUD--> | |||
<div class="text-end"> | |||
<a href="" class="btn btn-primary">Regresar a lista</a> | |||
<a href="<?= route_to('admin_solicitud_rechazar', $id) ?>" class="btn btn-danger">Rechazar solicitud</a> | |||
<button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#rechazarModal"> | |||
Launch demo modal | |||
</button> | |||
<a href="<?= route_to('admin_solicitud_aprobar', $id) ?>" class="btn btn-success">Aprobar solicitud</a> | |||
</div> | |||
<?php else : ?> | |||
@@ -211,4 +213,32 @@ | |||
</div> | |||
</div> | |||
<?php if (isset($revisar)) : ?> | |||
<!-- Modal --> | |||
<div class="modal fade" id="rechazarModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true"> | |||
<div class="modal-dialog"> | |||
<div class="modal-content"> | |||
<div class="modal-header"> | |||
<h5 class="modal-title" id="exampleModalLabel">Rechazar Solicitud</h5> | |||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> | |||
</div> | |||
<form action="<?= route_to('admin_solicitud_rechazar', $id) ?>" method="POST"> | |||
<?= csrf_field() ?> | |||
<div class="modal-body"> | |||
<div class="mb-3"> | |||
<label for="motivo" class="form-label">Motivo <span class="text-muted">(Este mensaje se le mostrará al solicitante)</span></label> | |||
<textarea class="form-control" id="motivo" name="motivo" rows="3" required></textarea> | |||
</div> | |||
</div> | |||
<div class="modal-footer"> | |||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button> | |||
<button type="submit" class="btn btn-danger">Rechazar Solicitud</button> | |||
</div> | |||
</form> | |||
</div> | |||
</div> | |||
</div> | |||
<?php endif ?> | |||
<?= $this->endSection() ?> |