315 lines
9.5 KiB
PHP
315 lines
9.5 KiB
PHP
<?php
|
|
require_once __DIR__ . '/../../config/database.php';
|
|
require_once __DIR__ . '/../helpers/crypto.php';
|
|
require_once __DIR__ . '/../helpers/session.php';
|
|
require_once __DIR__ . '/../helpers/bitacoras.php';
|
|
|
|
function index()
|
|
{
|
|
include __DIR__ . '/../../views/bitacoras/dashboard_bitacoras.php';
|
|
}
|
|
|
|
function sistema()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$sql = "SELECT bl.*, u.nombre
|
|
FROM bitacora_login bl
|
|
INNER JOIN usuarios_sistema u
|
|
ON bl.id_usuario = u.id_usuario
|
|
ORDER BY fecha DESC";
|
|
$stmt = sqlsrv_query($conn, $sql);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_sistema.php';
|
|
}
|
|
|
|
function sistemaAgencia()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || !in_array($_SESSION['tipo_usuario'], ['admin_agencia', 'agente_aduanal'])) {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
// Obtener ID de agencia asociada
|
|
$sql_agencia = "SELECT id_agencia FROM agente_agencia WHERE id_agente = ? AND activo = 1";
|
|
$stmt_agencia = sqlsrv_query($conn, $sql_agencia, [$id_usuario]);
|
|
|
|
$id_agencia = null;
|
|
if ($stmt_agencia && ($row = sqlsrv_fetch_array($stmt_agencia, SQLSRV_FETCH_ASSOC))) {
|
|
$id_agencia = $row['id_agencia'];
|
|
}
|
|
|
|
if (!$id_agencia) {
|
|
die("⚠️ No se encontró una agencia activa asociada al usuario.");
|
|
}
|
|
|
|
// Obtener todos los usuarios ligados a la misma agencia (agentes + importadores)
|
|
$sql_usuarios = "
|
|
SELECT DISTINCT id_usuario FROM usuarios_sistema
|
|
WHERE id_usuario IN (
|
|
SELECT id_agente FROM agente_agencia WHERE id_agencia = ? AND activo = 1
|
|
UNION
|
|
SELECT id_importador FROM importador_agencia WHERE id_agencia = ? AND activo = 1
|
|
)
|
|
";
|
|
$stmt_usuarios = sqlsrv_query($conn, $sql_usuarios, [$id_agencia, $id_agencia]);
|
|
|
|
$usuarios = [];
|
|
while ($row = sqlsrv_fetch_array($stmt_usuarios, SQLSRV_FETCH_ASSOC)) {
|
|
$usuarios[] = $row['id_usuario'];
|
|
}
|
|
|
|
// Consultar bitácora solo si hay usuarios ligados
|
|
$registros = [];
|
|
if (!empty($usuarios)) {
|
|
$placeholders = implode(',', array_fill(0, count($usuarios), '?'));
|
|
|
|
$sql_bitacora = "
|
|
SELECT bl.*, u.nombre
|
|
FROM bitacora_login bl
|
|
INNER JOIN usuarios_sistema u ON bl.id_usuario = u.id_usuario
|
|
WHERE bl.id_usuario IN ($placeholders)
|
|
ORDER BY fecha DESC
|
|
";
|
|
|
|
$stmt = sqlsrv_query($conn, $sql_bitacora, $usuarios);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$registros[] = $row;
|
|
}
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/sistema_agencia.php';
|
|
}
|
|
|
|
function cambios()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$sql = "SELECT * FROM bitacora_usuarios ORDER BY fecha DESC";
|
|
$stmt = sqlsrv_query($conn, $sql);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_cambios.php';
|
|
}
|
|
|
|
function usuarios()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$sql = "SELECT u.*, creador.nombre AS nombre_creador
|
|
FROM usuarios_sistema u
|
|
LEFT JOIN usuarios_sistema creador ON u.creado_por = creador.id_usuario
|
|
ORDER BY creado_en DESC";
|
|
$stmt = sqlsrv_query($conn, $sql);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$usuarios = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$usuarios[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_usuarios.php';
|
|
}
|
|
|
|
function vinculaciones()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || !in_array($_SESSION['tipo_usuario'], ['admin_agencia', 'agente_aduanal'])) {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$usuario_id = $_SESSION['usuario_id'];
|
|
|
|
// 1. Obtener la agencia asociada al usuario actual
|
|
$sql_agencia = "SELECT id_agencia FROM agente_agencia WHERE id_agente = ? AND activo = 1";
|
|
$stmt_agencia = sqlsrv_query($conn, $sql_agencia, [$usuario_id]);
|
|
|
|
$id_agencia = null;
|
|
if ($stmt_agencia && ($row = sqlsrv_fetch_array($stmt_agencia, SQLSRV_FETCH_ASSOC))) {
|
|
$id_agencia = $row['id_agencia'];
|
|
}
|
|
|
|
if (!$id_agencia) {
|
|
die("⚠️ No se encontró una agencia activa asociada al usuario.");
|
|
}
|
|
|
|
// 2. Consulta de vinculaciones SOLO de esa agencia
|
|
$sql = "
|
|
SELECT ia.*,
|
|
u.nombre AS nombre_importador,
|
|
aa.nombre_agencia,
|
|
ap.nombre AS nombre_aprobador
|
|
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
|
|
LEFT JOIN usuarios_sistema ap ON ia.aprobado_por = ap.id_usuario
|
|
WHERE ia.id_agencia = ?
|
|
ORDER BY ia.fecha_vinculacion DESC
|
|
";
|
|
|
|
$stmt = sqlsrv_query($conn, $sql, [$id_agencia]);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
if ($row['fecha_desvinculacion'] !== null) {
|
|
$row['accion'] = 'Desvinculación';
|
|
$row['fecha'] = $row['fecha_desvinculacion'];
|
|
} else {
|
|
$row['accion'] = 'Vinculación';
|
|
$row['fecha'] = $row['fecha_vinculacion'];
|
|
}
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_vinculaciones.php';
|
|
}
|
|
|
|
function vinculacionesUsuario()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$id_importador = $_SESSION['usuario_id'];
|
|
|
|
// Traer todas las relaciones del importador actual
|
|
$sql = "
|
|
SELECT ia.*,
|
|
u.nombre AS nombre_importador,
|
|
aa.nombre_agencia,
|
|
ap.nombre AS nombre_aprobador
|
|
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
|
|
LEFT JOIN usuarios_sistema ap ON ia.aprobado_por = ap.id_usuario
|
|
WHERE ia.id_importador = ?
|
|
ORDER BY ia.fecha_vinculacion DESC
|
|
";
|
|
|
|
$stmt = sqlsrv_query($conn, $sql, [$id_importador]);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
// Determinar tipo de acción
|
|
if (!empty($row['fecha_desvinculacion'])) {
|
|
$row['accion'] = 'Desvinculación';
|
|
$row['fecha'] = $row['fecha_desvinculacion'];
|
|
} else {
|
|
$row['accion'] = 'Vinculación';
|
|
$row['fecha'] = $row['fecha_vinculacion'];
|
|
}
|
|
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/vinculaciones_usuario.php';
|
|
}
|
|
|
|
function agencias()
|
|
{
|
|
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'super_admin') {
|
|
header('Location: /IMPORTADORES/login');
|
|
exit;
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$sql = "SELECT ba.*, aa.nombre_agencia, u.nombre
|
|
FROM bitacora_agencias ba
|
|
INNER JOIN agencias_aduanales aa
|
|
ON ba.id_agencia = aa.id_agencia
|
|
INNER JOIN usuarios_sistema u
|
|
ON ba.realizado_por = u.id_usuario
|
|
ORDER BY fecha DESC";
|
|
$stmt = sqlsrv_query($conn, $sql);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_agencias.php';
|
|
}
|
|
|
|
function miAcceso()
|
|
{
|
|
if (!isset($_SESSION['usuario_id'])) {
|
|
die("⚠️ No autorizado.");
|
|
}
|
|
|
|
$conn = getConnection();
|
|
$id_usuario = $_SESSION['usuario_id'];
|
|
|
|
$sql = "SELECT bl.id, bl.id_usuario, bl.email, bl.ip, bl.fecha, bl.exito, bl.detalle, u.nombre
|
|
FROM bitacora_login bl
|
|
INNER JOIN usuarios_sistema u
|
|
ON bl.id_usuario = u.id_usuario
|
|
WHERE bl.id_usuario = ?
|
|
ORDER BY bl.fecha DESC";
|
|
$stmt = sqlsrv_query($conn, $sql, [$id_usuario]);
|
|
|
|
if ($stmt === false) {
|
|
die(print_r(sqlsrv_errors(), true));
|
|
}
|
|
|
|
$registros = [];
|
|
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
|
$registros[] = $row;
|
|
}
|
|
|
|
include __DIR__ . '/../../views/bitacoras/bitacora_usuario.php';
|
|
} |