Enviar correo al confirmar/rechazar una solicitud
このコミットが含まれているのは:
コミット
3e24477d40
app
Config
Controllers
Models
Views
Admin
Prestador
@ -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
|
||||
// Cambiar status de la solicitud y eliminar datos con 'X'
|
||||
$this->eliminarDatosSolicitud($solicitudModel, $solicitud);
|
||||
|
||||
// enviar correo
|
||||
$email = service('email');
|
||||
|
||||
$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 = [
|
||||
|
4
app/Views/Admin/emails/solicitudAprobada.php
ノーマルファイル
4
app/Views/Admin/emails/solicitudAprobada.php
ノーマルファイル
@ -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() ?>
|
読み込み中…
x
新しいイシューから参照
ユーザーをブロックする