210 lines
8.2 KiB
PHP
210 lines
8.2 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../../vendor/autoload.php';
|
|
require_once __DIR__ . '/../helpers/session.php';
|
|
require_once __DIR__ . '/../../config/database.php';
|
|
require_once __DIR__ . '/../helpers/crypto.php';
|
|
require_once __DIR__ . '/../helpers/bitacoras.php';
|
|
require_once __DIR__ . '/../helpers/env.php';
|
|
|
|
use PHPMailer\PHPMailer\PHPMailer;
|
|
use PHPMailer\PHPMailer\Exception;
|
|
|
|
loadEnv();
|
|
|
|
function dashboard()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'agente_aduanal') {
|
|
header("Location: /IMPORTADORES/login");
|
|
exit;
|
|
}
|
|
|
|
$idUsuario = $_SESSION['usuario_id'] ?? null;
|
|
|
|
include __DIR__ . '/../../views/agentes/dashboard_agentes.php';
|
|
}
|
|
|
|
function vinculados()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'agente_aduanal') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
|
|
if (!$conn) {
|
|
die("Error de conexión: " . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
// Obtener la agencia del administrador actual
|
|
$sqlAgencia = "SELECT id_agencia FROM agente_agencia WHERE id_agente = ? AND activo = 1";
|
|
$stmtAgencia = sqlsrv_query($conn, $sqlAgencia, [$_SESSION['usuario_id']]);
|
|
|
|
// DEBUG: Verificar query de agencia
|
|
if ($stmtAgencia === false) {
|
|
die("Error en consulta de agencia: " . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$rowAgencia = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC);
|
|
|
|
// DEBUG: Verificar si se encontró la agencia
|
|
if (!$rowAgencia) {
|
|
die("No se encontró agencia vinculada el agente ID: " . $_SESSION['usuario_id']);
|
|
}
|
|
|
|
$id_agencia = $rowAgencia['id_agencia'];
|
|
|
|
// Primero, verificar si hay registros en la tabla importador_agencia
|
|
$sqlCount = "SELECT COUNT(*) as total FROM importador_agencia WHERE id_agencia = ?";
|
|
$stmtCount = sqlsrv_query($conn, $sqlCount, [$id_agencia]);
|
|
$rowCount = sqlsrv_fetch_array($stmtCount, SQLSRV_FETCH_ASSOC);
|
|
|
|
// Verificar registros activos y aprobados
|
|
$sqlCountActive = "SELECT COUNT(*) as total FROM importador_agencia WHERE id_agencia = ? AND activo = 1 AND estado = 'APROBADO'";
|
|
$stmtCountActive = sqlsrv_query($conn, $sqlCountActive, [$id_agencia]);
|
|
$rowCountActive = sqlsrv_fetch_array($stmtCountActive, SQLSRV_FETCH_ASSOC);
|
|
|
|
// Solo usuarios vinculados ACTIVOS a MI agencia
|
|
$sql = "SELECT
|
|
ia.*, u.nombre as importador_nombre, ig.rfc, ig.telefono, aa.nombre_agencia
|
|
FROM importador_agencia ia
|
|
INNER JOIN usuarios_sistema u
|
|
ON ia.id_importador = u.id_usuario
|
|
LEFT JOIN informacion_general ig
|
|
ON u.id_usuario = ig.id_usuario
|
|
LEFT JOIN agencias_aduanales aa
|
|
ON ia.id_agencia = aa.id_agencia
|
|
WHERE ia.id_agencia = ?
|
|
AND ia.activo = 1
|
|
AND ia.estado = 'APROBADO'
|
|
ORDER BY ia.fecha_vinculacion DESC
|
|
";
|
|
$stmt = sqlsrv_query($conn, $sql, [$id_agencia]);
|
|
|
|
// DEBUG: Verificar query principal
|
|
if ($stmt === false) {
|
|
die("Error en consulta principal: " . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$vinculados = [];
|
|
if ($stmt !== false) {
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$vinculados[] = $row;
|
|
}
|
|
}
|
|
|
|
include __DIR__ . '/../../views/vinculaciones/importadores_vinculados.php';
|
|
}
|
|
|
|
function desvincularAgente()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'agente_aduanal') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
// Verificar que se recibió el ID de la relación
|
|
$id_relacion = $_GET['id'] ?? null;
|
|
if (!$id_relacion || !is_numeric($id_relacion)) {
|
|
header('Location: /IMPORTADORES/agentes/vinculados?error=invalid_id');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
|
|
try {
|
|
// Iniciar transacción
|
|
sqlsrv_begin_transaction($conn);
|
|
|
|
// 1. Primero obtener la agencia del agente aduanal
|
|
$sqlAgenciaAgente = "SELECT id_agencia
|
|
FROM agente_agencia
|
|
WHERE id_agente = ?
|
|
AND activo = 1
|
|
";
|
|
$stmtAgenciaAgente = sqlsrv_query($conn, $sqlAgenciaAgente, [$_SESSION['usuario_id']]);
|
|
$agenciaAgente = sqlsrv_fetch_array($stmtAgenciaAgente, SQLSRV_FETCH_ASSOC);
|
|
|
|
if ($stmtAgenciaAgente === false) {
|
|
throw new Exception('Error en la consulta de agencia-agente: ' . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$id_agencia_agente = $agenciaAgente['id_agencia'];
|
|
|
|
// 2. Verificar que la relación existe y pertenece a la MISMA agencia del agente
|
|
$sqlVerificar = "SELECT
|
|
ia.*, u.id_usuario, u.nombre as importador_nombre, aa.nombre_agencia
|
|
FROM importador_agencia ia
|
|
INNER JOIN usuarios_sistema u
|
|
ON ia.id_importador = u.id_usuario
|
|
INNER JOIN agencias_aduanales aa
|
|
ON ia.id_agencia = aa.id_agencia
|
|
WHERE ia.id_relacion = ?
|
|
AND ia.id_agencia = ?
|
|
";
|
|
$stmtVerificar = sqlsrv_query($conn, $sqlVerificar, [$id_relacion, $id_agencia_agente]);
|
|
|
|
if ($stmtVerificar === false) {
|
|
throw new Exception('Error en la consulta de verificación: ' . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$relacion = sqlsrv_fetch_array($stmtVerificar, SQLSRV_FETCH_ASSOC);
|
|
|
|
// 4. Desactivar la relación (no eliminar, mantener historial)
|
|
$sqlDesactivar = "UPDATE importador_agencia
|
|
SET activo = 0,
|
|
estado = 'DESVINCULADO'
|
|
WHERE id_relacion = ?
|
|
";
|
|
$stmtDesactivar = sqlsrv_query($conn, $sqlDesactivar, [$id_relacion]);
|
|
|
|
if ($stmtDesactivar === false) {
|
|
throw new Exception('Error al desactivar la relación: ' . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
// NUEVO: Verificar si el importador desvinculado tenía esta agencia como activa
|
|
$sqlVerificarAgenciaActiva = "SELECT id_agencia_en_uso
|
|
FROM usuarios_sistema
|
|
WHERE id_usuario = ?
|
|
AND id_agencia_en_uso = ?
|
|
";
|
|
$stmtVerificarActiva = sqlsrv_query($conn, $sqlVerificarAgenciaActiva,
|
|
[$relacion['id_importador'], $relacion['id_agencia']]);
|
|
|
|
if ($stmtVerificarActiva === false) {
|
|
throw new Exception('Error al verificar agencia activa: ' . print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
if ($stmtVerificarActiva && sqlsrv_fetch_array($stmtVerificarActiva, SQLSRV_FETCH_ASSOC)) {
|
|
// Si tenía esta agencia como activa, quitársela
|
|
$sqlQuitarAgenciaActiva = "UPDATE usuarios_sistema
|
|
SET id_agencia_en_uso = NULL
|
|
WHERE id_usuario = ?
|
|
";
|
|
$stmtQuitarActiva = sqlsrv_query($conn, $sqlQuitarAgenciaActiva, [$relacion['id_importador']]);
|
|
|
|
if ($stmtQuitarActiva === false) {
|
|
throw new Exception('Error al actualizar la agencia activa del importador: ' . print_r(sqlsrv_errors(), true));
|
|
}
|
|
}
|
|
|
|
// Limpiar statements
|
|
sqlsrv_free_stmt($stmtVerificarActiva);
|
|
if (isset($stmtQuitarActiva)) {
|
|
sqlsrv_free_stmt($stmtQuitarActiva);
|
|
}
|
|
|
|
// Confirmar transacción
|
|
sqlsrv_commit($conn);
|
|
|
|
header('Location: /IMPORTADORES/agentes/vinculados?success=unlinked');
|
|
exit;
|
|
|
|
} catch (Exception $e) {
|
|
// Revertir transacción en caso de error
|
|
sqlsrv_rollback($conn);
|
|
error_log("Error desvinculando importador: " . $e->getMessage());
|
|
header('Location: /IMPORTADORES/agentes/vinculados?error=unlinked_failed');
|
|
exit;
|
|
}
|
|
} |