Patente y Locaciones desde admin_agencia

This commit is contained in:
2025-07-02 11:54:02 -06:00
parent 8d13b81ef1
commit 2cb9ed80d5
9 changed files with 306 additions and 41 deletions

View File

@@ -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);