Sidebars
This commit is contained in:
@@ -237,6 +237,154 @@ function aprobar_usuario()
|
||||
exit;
|
||||
}
|
||||
|
||||
function denegar_usuario()
|
||||
{
|
||||
$conn = getConnection();
|
||||
|
||||
$id = $_GET['id'] ?? null;
|
||||
$motivo = trim($_POST['motivo'] ?? '');
|
||||
|
||||
// Definir motivo por defecto si no se ingresó uno
|
||||
if ($motivo === '') {
|
||||
$motivo = 'La solicitud ha sido rechazada por no cumplir con los requisitos establecidos.';
|
||||
}
|
||||
|
||||
// Validar parámetros
|
||||
if (!$id || !is_numeric($id)) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=invalid_id");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!$motivo || trim($motivo) === '') {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=motivo_required");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Verificar sesión del usuario administrador
|
||||
if (!isset($_SESSION['usuario_id']) || empty($_SESSION['usuario_id'])) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=session_error");
|
||||
exit;
|
||||
}
|
||||
|
||||
try {
|
||||
// Obtener la solicitud
|
||||
$sql = "SELECT * FROM solicitudes_importadores WHERE request_id = ?";
|
||||
$stmt = sqlsrv_query($conn, $sql, [$id]);
|
||||
|
||||
if (!$stmt) {
|
||||
throw new Exception("Error en consulta de solicitud: " . print_r(sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
$solicitud = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
|
||||
|
||||
if (!$solicitud) {
|
||||
throw new Exception("Solicitud no encontrada");
|
||||
}
|
||||
|
||||
// Validar que no haya sido procesada ya
|
||||
if ($solicitud['request_status'] === 'denied') {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=already_denied");
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($solicitud['request_status'] === 'approved') {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=already_approved");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Preparar datos para el correo
|
||||
$nombre = !empty($solicitud['company_name']) ? decrypt($solicitud['company_name']) : 'Usuario';
|
||||
$email = $solicitud['email'] ?? null;
|
||||
|
||||
if (empty($email)) {
|
||||
throw new Exception("Email no disponible en la solicitud");
|
||||
}
|
||||
|
||||
// Actualizar solicitud como denegada
|
||||
$sqlUpdate = "UPDATE solicitudes_importadores
|
||||
SET request_status = 'denied',
|
||||
approval_date = GETDATE(),
|
||||
approved_by = ?
|
||||
WHERE request_id = ?
|
||||
";
|
||||
$stmtUpdate = sqlsrv_query($conn, $sqlUpdate, [$_SESSION['usuario_id'], $id]);
|
||||
|
||||
if (!$stmtUpdate) {
|
||||
throw new Exception("Error al actualizar solicitud: " . print_r(sqlsrv_errors(), true));
|
||||
}
|
||||
|
||||
// Enviar correo de notificación de denegación
|
||||
$mail = new PHPMailer(true);
|
||||
try {
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'secure.emailsrvr.com';
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = 'noreply@aduanasoft.com.mx';
|
||||
$mail->Password = $_ENV['SMTP_PASS'] ?? '';
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
|
||||
$mail->Port = 587;
|
||||
|
||||
$mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | Sistema Integral para Importadores de Hidrocarburos');
|
||||
$mail->addAddress($email);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
$mail->Subject = 'Solicitud de registro denegada - SIIH';
|
||||
|
||||
$mail->Body = "
|
||||
<div style='font-family: Segoe UI, sans-serif; background-color: #f4f6f9; padding: 40px;'>
|
||||
<div style='max-width: 600px; margin: auto; background: #fff; border: 1px solid #ddd; border-radius: 10px; overflow: hidden;'>
|
||||
<div style='background: linear-gradient(to right, #dc3545, #c82333); padding: 20px; text-align: center;'>
|
||||
<h2 style='color: white;'>Solicitud Denegada</h2>
|
||||
</div>
|
||||
<div style='padding: 30px; color: #333; font-size: 16px;'>
|
||||
<p>Estimado(a) <strong>$nombre</strong>,</p>
|
||||
<p>Lamentamos informarte que tu solicitud de registro como importador en el sistema SIIH ha sido denegada.</p>
|
||||
|
||||
<div style='background: #f8f9fa; padding: 15px; border-left: 4px solid #dc3545; margin: 20px 0;'>
|
||||
<p style='margin: 0; font-weight: bold; color: #dc3545;'>Motivo de la denegación:</p>
|
||||
<p style='margin: 10px 0 0 0;'>$motivo</p>
|
||||
</div>
|
||||
|
||||
<p>Si consideras que esta decisión es incorrecta o deseas obtener más información, puedes contactarnos para revisar tu caso.</p>
|
||||
|
||||
<p>Agradecemos tu interés en formar parte del Sistema Integral para Importadores de Hidrocarburos.</p>
|
||||
</div>
|
||||
<div style='background: #e9ecef; text-align: center; padding: 15px; font-size: 13px; color: #666;'>
|
||||
© " . date('Y') . " SIIH · Sistema Integral para Importadores de Hidrocarburos
|
||||
</div>
|
||||
</div>
|
||||
</div>";
|
||||
|
||||
$mail->send();
|
||||
|
||||
// Éxito completo (solicitud denegada y correo enviado)
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?success=denied");
|
||||
|
||||
} catch (Exception $mailException) {
|
||||
// Error en el correo, pero la solicitud fue denegada exitosamente
|
||||
error_log("Error al enviar correo de denegación: " . $mailException->getMessage());
|
||||
|
||||
// Redirigir con mensaje de éxito parcial
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?success=denied&warning=email_failed");
|
||||
}
|
||||
|
||||
} catch (Exception $e) {
|
||||
// Log del error para debugging
|
||||
error_log("Error al denegar usuario: " . $e->getMessage());
|
||||
|
||||
// Redirigir con error específico basado en el tipo de error
|
||||
if (strpos($e->getMessage(), 'Solicitud no encontrada') !== false) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=invalid_request");
|
||||
} elseif (strpos($e->getMessage(), 'Email no disponible') !== false) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=email_unavailable");
|
||||
} else {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarUsuarios?error=process_failed");
|
||||
}
|
||||
}
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
function altaUsuarios()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
||||
@@ -649,6 +797,123 @@ function aprobar_agencia()
|
||||
exit;
|
||||
}
|
||||
|
||||
function denegar_agencia()
|
||||
{
|
||||
$conn = getConnection();
|
||||
|
||||
$id = $_GET['id'] ?? null;
|
||||
$motivo = trim($_POST['motivo'] ?? '');
|
||||
$usuario_id = $_SESSION['usuario_id'];
|
||||
|
||||
// Definir motivo por defecto si no se ingresó uno
|
||||
if ($motivo === '') {
|
||||
$motivo = 'La solicitud ha sido rechazada por no cumplir con los requisitos establecidos.';
|
||||
}
|
||||
|
||||
// Validar parámetros
|
||||
if (!$id || !is_numeric($id)) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarAgencias?error=invalid_id");
|
||||
exit;
|
||||
}
|
||||
|
||||
if (!$motivo || trim($motivo) === '') {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarAgencias?error=motivo_required");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Obtener la solicitud
|
||||
$sql = "SELECT * FROM solicitudes_agencias WHERE request_id = ?";
|
||||
$stmt = sqlsrv_query($conn, $sql, [$id]);
|
||||
$solicitud = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
|
||||
|
||||
if (!$solicitud) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarAgencias?error=invalid_request");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validar que no haya sido procesada ya
|
||||
if ($solicitud['request_status'] === 'denied') {
|
||||
die("⚠️ Esta solicitud ya fue denegada.");
|
||||
}
|
||||
|
||||
if ($solicitud['request_status'] === 'approved') {
|
||||
die("⚠️ Esta solicitud ya fue aprobada y no se puede denegar.");
|
||||
}
|
||||
|
||||
// Preparar datos para el correo
|
||||
$nombre = decrypt($solicitud['agencia_name']);
|
||||
$admin_name = decrypt($solicitud['admin_name']);
|
||||
$admin_email = $solicitud['admin_email'];
|
||||
|
||||
// Actualizar solicitud como denegada
|
||||
$sqlUpdate = "UPDATE solicitudes_agencias
|
||||
SET request_status = 'denied',
|
||||
approval_date = GETDATE(),
|
||||
approved_by = ?
|
||||
WHERE request_id = ?
|
||||
";
|
||||
$stmtUpdate = sqlsrv_query($conn, $sqlUpdate, [$usuario_id, $id]);
|
||||
|
||||
if (!$stmtUpdate) {
|
||||
header("Location: /IMPORTADORES/administrador/aprobarAgencias?error=update_request_failed");
|
||||
exit;
|
||||
}
|
||||
|
||||
// Enviar correo de notificación de denegación
|
||||
$mail = new PHPMailer(true);
|
||||
try {
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'secure.emailsrvr.com';
|
||||
$mail->SMTPAuth = true;
|
||||
$mail->Username = 'noreply@aduanasoft.com.mx';
|
||||
$mail->Password = $_ENV['SMTP_PASS'];
|
||||
$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
|
||||
$mail->Port = 587;
|
||||
|
||||
$mail->setFrom('noreply@aduanasoft.com.mx', 'SIIH | Sistema Integral para Importadores de Hidrocarburos');
|
||||
$mail->addAddress($admin_email);
|
||||
$mail->CharSet = 'UTF-8';
|
||||
$mail->isHTML(true);
|
||||
$mail->Subject = 'Solicitud de agencia denegada - SIIH';
|
||||
|
||||
$mail->Body = "
|
||||
<div style='font-family: Segoe UI, sans-serif; background-color: #f4f6f9; padding: 40px;'>
|
||||
<div style='max-width: 600px; margin: auto; background: #fff; border: 1px solid #ddd; border-radius: 10px; overflow: hidden;'>
|
||||
<div style='background: linear-gradient(to right, #dc3545, #c82333); padding: 20px; text-align: center;'>
|
||||
<h2 style='color: white;'>Solicitud Denegada</h2>
|
||||
</div>
|
||||
<div style='padding: 30px; color: #333; font-size: 16px;'>
|
||||
<p>Estimado(a) <strong>$admin_name</strong>,</p>
|
||||
<p>Lamentamos informarte que tu solicitud para registrar la agencia <strong>$nombre</strong> en el sistema SIIH ha sido denegada.</p>
|
||||
|
||||
<div style='background: #f8f9fa; padding: 15px; border-left: 4px solid #dc3545; margin: 20px 0;'>
|
||||
<p style='margin: 0; font-weight: bold; color: #dc3545;'>Motivo de la denegación:</p>
|
||||
<p style='margin: 10px 0 0 0;'>$motivo</p>
|
||||
</div>
|
||||
|
||||
<p>Si consideras que esta decisión es incorrecta o deseas obtener más información, puedes contactarnos para revisar tu caso.</p>
|
||||
|
||||
<p>Agradecemos tu interés en formar parte del Sistema Integral para Importadores de Hidrocarburos.</p>
|
||||
</div>
|
||||
<div style='background: #e9ecef; text-align: center; padding: 15px; font-size: 13px; color: #666;'>
|
||||
© " . date('Y') . " SIIH · Sistema Integral para Importadores de Hidrocarburos
|
||||
</div>
|
||||
</div>
|
||||
</div>";
|
||||
|
||||
$mail->send();
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("Error al enviar correo de denegación: {$mail->ErrorInfo}");
|
||||
}
|
||||
|
||||
// Registrar en bitácora (opcional - crear función específica para denegaciones)
|
||||
registrar_bitacora_agencia($id, $nombre, 'DENEGACION', $usuario_id);
|
||||
|
||||
header("Location: /IMPORTADORES/administrador/aprobarAgencias?success=denied");
|
||||
exit;
|
||||
}
|
||||
|
||||
function altaAgencias()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
||||
|
||||
@@ -289,6 +289,8 @@ function desvincularUsuario()
|
||||
$conn = getConnection();
|
||||
|
||||
try {
|
||||
$stmtActualizarAgencia = null;
|
||||
|
||||
// Iniciar transacción
|
||||
sqlsrv_begin_transaction($conn);
|
||||
|
||||
@@ -357,9 +359,16 @@ function desvincularUsuario()
|
||||
}
|
||||
|
||||
// Limpiar statements
|
||||
sqlsrv_free_stmt($stmtVerificar);
|
||||
sqlsrv_free_stmt($stmtDesactivar);
|
||||
sqlsrv_free_stmt($stmtActualizarAgencia);
|
||||
if (isset($stmtVerificar) && is_resource($stmtVerificar)) {
|
||||
sqlsrv_free_stmt($stmtVerificar);
|
||||
}
|
||||
if (isset($stmtDesactivar) && is_resource($stmtDesactivar)) {
|
||||
sqlsrv_free_stmt($stmtDesactivar);
|
||||
}
|
||||
if (isset($stmtActualizarAgencia) && is_resource($stmtActualizarAgencia)) {
|
||||
sqlsrv_free_stmt($stmtActualizarAgencia);
|
||||
}
|
||||
|
||||
|
||||
// Confirmar transacción
|
||||
sqlsrv_commit($conn);
|
||||
|
||||
Reference in New Issue
Block a user