diff --git a/app/controllers/patente.php b/app/controllers/patente.php index 019eb80..ff728f7 100644 --- a/app/controllers/patente.php +++ b/app/controllers/patente.php @@ -18,31 +18,43 @@ function lista() header('Location: /IMPORTADORES/login'); exit; } - $id_agente = $_SESSION['usuario_id']; - $conn = getConnection(); - // ✅ NUEVO: Obtener la agencia actual del usuario - $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_agente]); + $conn = getConnection(); $id_agencia = null; - if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { - $id_agencia = $row['id_agencia']; + + if ($_SESSION['tipo_usuario'] === 'agente_aduanal') { + $id_agente = $_SESSION['usuario_id']; + $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_agente]); + if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $id_agencia = $row['id_agencia']; + } + } elseif ($_SESSION['tipo_usuario'] === 'admin_agencia') { + $id_admin = $_SESSION['usuario_id']; + $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_admin]); + if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $id_agencia = $row['id_agencia']; + } } + if (!$id_agencia) { + die("❌ No se pudo determinar la agencia."); + } + + // Obtener todas las patentes registradas por usuarios de esa agencia $sql = " SELECT DISTINCT aa.*, aga.id_agencia FROM dbo.agentes_aduanales aa INNER JOIN dbo.usuarios_sistema u ON aa.id_usuario = u.id_usuario - INNER JOIN dbo.agente_agencia aga -- Cambié el alias para mayor claridad + INNER JOIN dbo.agente_agencia aga ON aga.id_agencia = aa.id_agencia - WHERE u.id_usuario = ? - AND aga.id_agencia = ? + WHERE aga.id_agencia = ? AND aa.activo = 1 ORDER BY aa.creado_en DESC "; - $stmt = sqlsrv_query($conn, $sql, [$id_agente, $id_agencia]); + $stmt = sqlsrv_query($conn, $sql, [$id_agencia]); if ($stmt === false) { die("Error en lista(): " . print_r(sqlsrv_errors(), true)); } @@ -57,19 +69,26 @@ function lista() function alta() { - if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'agente_aduanal') { - header('Location: /IMPORTADORES/login'); - exit; - } + if (!isset($_SESSION['usuario_id']) || !in_array($_SESSION['tipo_usuario'], ['agente_aduanal', 'admin_agencia'])) { + header('Location: /IMPORTADORES/login'); + exit; + } - $id_agente = $_SESSION['usuario_id']; $conn = getConnection(); - - // ✅ NUEVO: Obtener la agencia actual del usuario - $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_agente]); $id_agencia = null; - if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { - $id_agencia = $row['id_agencia']; + + if ($_SESSION['tipo_usuario'] === 'agente_aduanal') { + $id_agente = $_SESSION['usuario_id']; + $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_agente]); + if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $id_agencia = $row['id_agencia']; + } + } elseif ($_SESSION['tipo_usuario'] === 'admin_agencia') { + $id_admin = $_SESSION['usuario_id']; + $stmt = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_admin]); + if ($stmt && $row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { + $id_agencia = $row['id_agencia']; + } } include __DIR__ . '/../../views/patente/alta_patente.php'; @@ -227,7 +246,8 @@ function editar() exit; } - $usr = $_SESSION['usuario_id']; + $id_usuario = $_SESSION['usuario_id']; + $tipo_usuario = $_SESSION['tipo_usuario']; $id = $_GET['id'] ?? null; if (!$id || !is_numeric($id)) { @@ -236,17 +256,33 @@ function editar() $conn = getConnection(); - $sql = " - SELECT aa.* - FROM dbo.agentes_aduanales aa - WHERE aa.id_agente = ? - AND aa.id_usuario = ? - "; + // Obtener id_agencia según tipo de usuario + $id_agencia = null; - $stmt = sqlsrv_query($conn, $sql, [(int)$id, $_SESSION['usuario_id']]); + if ($tipo_usuario === 'agente_aduanal') { + // Obtener la agencia vinculada al agente + $stmtAgencia = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_usuario]); + $rowAgencia = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC); + $id_agencia = $rowAgencia['id_agencia'] ?? null; + } elseif ($tipo_usuario === 'admin_agencia') { + // Obtener la agencia del admin + $stmtAgencia = sqlsrv_query($conn, "SELECT id_agencia FROM dbo.agente_agencia WHERE id_agente = ?", [$id_usuario]); + $rowAgencia = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC); + $id_agencia = $rowAgencia['id_agencia'] ?? null; + } else { + die("❌ Tipo de usuario no autorizado."); + } + + if (!$id_agencia) { + die("❌ No se pudo determinar la agencia del usuario."); + } + + // Consultar la patente que tenga ese id_agente y que pertenezca a la agencia del usuario + $sql = "SELECT * FROM dbo.agentes_aduanales WHERE id_agente = ? AND id_agencia = ?"; + $stmt = sqlsrv_query($conn, $sql, [$id, $id_agencia]); if ($stmt === false) { - die("Error en editar(): " . print_r(sqlsrv_errors(), true)); + die("❌ Error en la consulta: " . print_r(sqlsrv_errors(), true)); } $agente = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC); diff --git a/views/agencias/dashboard_agencias.php b/views/agencias/dashboard_agencias.php index 5728102..9bd3e28 100644 --- a/views/agencias/dashboard_agencias.php +++ b/views/agencias/dashboard_agencias.php @@ -16,9 +16,15 @@ .sidebar .nav-link.active { background-color: #495057; color: #fff; } .content { margin-top: 56px; padding: 40px 20px; position: relative; z-index: 1; background-color: #f4f6f9; transition: margin-left 0.3s ease; } .navbar { position: fixed; top: 0; width: 100%; z-index: 1050; } - .btn-orange { background-color: orangeRed; color: white;} - .btn-orange:hover { background-color: #ff3600; color: white;} - .text-orange { color: orangeRed;} + .btn-indigo { background-color: #6610f2; color: white; } + .btn-indigo:hover { background-color: #520dc2; color: white; } + .text-indigo { color: #520dc2; } + .btn-orange { background-color: orangeRed; color: white; } + .btn-orange:hover { background-color: #ff3600; color: white; } + .text-orange { color: orangeRed; } + .btn-teal { background-color: #20c997; color: white; } + .btn-teal:hover { background-color: #4dd4ac; color: black; } + .text-teal { color: #20c997; } /* A partir de dispositivos medianos (>=768px), deja espacio lateral */ @media (min-width: 768px) { .content { margin-left: 250px; /* Ancho del sidebar */ } } /* En móviles, sin margen lateral */ @@ -71,6 +77,17 @@ +