Correcciones
This commit is contained in:
@@ -155,83 +155,7 @@ function vinculacionesAgencia()
|
||||
return $b['fecha_vinculacion'] <=> $a['fecha_vinculacion'];
|
||||
});
|
||||
|
||||
include __DIR__ . '/../../views/vinculaciones/usuarios_vinculados.php';
|
||||
}
|
||||
|
||||
function nuevaVinculacion()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
$conn = getConnection();
|
||||
|
||||
$sql = "
|
||||
SELECT
|
||||
a.*,
|
||||
s.estado AS estado_solicitud
|
||||
FROM agencias_aduanales a
|
||||
LEFT JOIN solicitudes_vinculacion s
|
||||
ON s.id_agencia = a.id_agencia AND s.id_importador = ?
|
||||
AND s.estado = 'PENDIENTE'
|
||||
WHERE NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM importador_agencia ia
|
||||
WHERE ia.id_agencia = a.id_agencia
|
||||
AND ia.id_importador = ?
|
||||
AND ia.activo = 1
|
||||
)
|
||||
ORDER BY a.creado_en DESC
|
||||
";
|
||||
$params = [$_SESSION['usuario_id'], $_SESSION['usuario_id']];
|
||||
$stmt = sqlsrv_query($conn, $sql, $params);
|
||||
|
||||
$agencias = [];
|
||||
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$agencias[] = $row;
|
||||
}
|
||||
|
||||
include __DIR__ . '/../../views/vinculaciones/nueva.php';
|
||||
}
|
||||
|
||||
function vincular()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
$conn = getConnection();
|
||||
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$id_agencia = (int) $_GET['id'];
|
||||
|
||||
// Verificar si ya existe una solicitud pendiente
|
||||
$checkSql = "SELECT COUNT(*) AS total FROM solicitudes_vinculacion
|
||||
WHERE id_importador = ? AND id_agencia = ? AND estado = 'PENDIENTE'";
|
||||
$checkParams = [$id_importador, $id_agencia];
|
||||
$checkStmt = sqlsrv_query($conn, $checkSql, $checkParams);
|
||||
|
||||
if ($checkStmt && $row = sqlsrv_fetch_array($checkStmt, SQLSRV_FETCH_ASSOC)) {
|
||||
if ($row['total'] > 0) {
|
||||
header('Location: /IMPORTADORES/vinculaciones/nuevaVinculacion?error=pending_request');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Insertar la nueva solicitud
|
||||
$sql = "INSERT INTO solicitudes_vinculacion (id_importador, id_agencia, mensaje, estado, fecha_solicitud) VALUES (?, ?, 'Solicitud de vinculación', 'PENDIENTE', GETDATE())";
|
||||
$params = [$id_importador, $id_agencia];
|
||||
$stmt = sqlsrv_prepare($conn, $sql, $params);
|
||||
|
||||
if ($stmt && sqlsrv_execute($stmt)) {
|
||||
header('Location: /IMPORTADORES/vinculaciones/nuevaVinculacion?success=sended_request');
|
||||
exit;
|
||||
} else {
|
||||
header('Location: /IMPORTADORES/vinculaciones/nuevaVinculacion?error=failed_request');
|
||||
exit;
|
||||
}
|
||||
include __DIR__ . '/../../views/vinculaciones/usuarios_vinculados.php';
|
||||
}
|
||||
|
||||
function desvincularAgencia()
|
||||
@@ -240,20 +164,20 @@ function desvincularAgencia()
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'admin_agencia') {
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
// Verificar que se recibió el ID de la relación
|
||||
$id_relacion = $_GET['id'] ?? null;
|
||||
$tipo = $_GET['tipo'] ?? null;
|
||||
|
||||
if (!$id_relacion || !is_numeric($id_relacion)) {
|
||||
header('Location: /IMPORTADORES/vinculaciones/usuariosVinculados?error=invalid_id');
|
||||
header('Location: /IMPORTADORES/vinculaciones/vinculacionesAgencia?error=invalid_id');
|
||||
exit;
|
||||
}
|
||||
|
||||
// Validar que el tipo sea válido
|
||||
if (!in_array($tipo, ['importador', 'agente'])) {
|
||||
header('Location: /IMPORTADORES/vinculaciones/usuariosVinculados?error=invalid_type');
|
||||
header('Location: /IMPORTADORES/vinculaciones/vinculacionesAgencia?error=invalid_type');
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -278,7 +202,7 @@ function desvincularAgencia()
|
||||
WHERE ia.id_relacion = ? AND aa.id_administrador = ? AND u.tipo_usuario = 'importador'
|
||||
";
|
||||
$stmtVerificar = sqlsrv_query($conn, $sqlVerificar, [$id_relacion, $_SESSION['usuario_id']]);
|
||||
$relacion = sqlsrv_fetch_array($stmtVerificar, SQLSRV_FETCH_ASSOC);
|
||||
$relacion = sqlsrv_fetch_array($stmtVerificar, SQLSRV_FETCH_ASSOC);
|
||||
|
||||
if (!$relacion) {
|
||||
throw new Exception('Relación de importador no encontrada o no tienes permisos para desvincularla');
|
||||
@@ -311,7 +235,7 @@ function desvincularAgencia()
|
||||
WHERE aa.id_relacion = ? AND ag.id_administrador = ? AND u.tipo_usuario = 'agente_aduanal'
|
||||
";
|
||||
$stmtVerificar = sqlsrv_query($conn, $sqlVerificar, [$id_relacion, $_SESSION['usuario_id']]);
|
||||
$relacion = sqlsrv_fetch_array($stmtVerificar, SQLSRV_FETCH_ASSOC);
|
||||
$relacion = sqlsrv_fetch_array($stmtVerificar, SQLSRV_FETCH_ASSOC);
|
||||
|
||||
if (!$relacion) {
|
||||
throw new Exception('Relación de agente no encontrada o no tienes permisos para desvincularla');
|
||||
@@ -324,8 +248,7 @@ function desvincularAgencia()
|
||||
// Desactivar la relación de agente
|
||||
$sqlDesactivar = "
|
||||
UPDATE agente_agencia
|
||||
SET activo = 0,
|
||||
fecha_desvinculacion = GETDATE()
|
||||
SET activo = 0
|
||||
WHERE id_relacion = ?
|
||||
";
|
||||
}
|
||||
@@ -339,42 +262,17 @@ function desvincularAgencia()
|
||||
// Confirmar transacción
|
||||
sqlsrv_commit($conn);
|
||||
|
||||
header('Location: /IMPORTADORES/vinculaciones/usuariosVinculados?success=unlinked&tipo=' . $tipo);
|
||||
header('Location: /IMPORTADORES/vinculaciones/vinculacionesAgencia?success=unlinked&tipo=' . $tipo);
|
||||
exit;
|
||||
|
||||
} catch (Exception $e) {
|
||||
// Revertir transacción en caso de error
|
||||
sqlsrv_rollback($conn);
|
||||
header('Location: /IMPORTADORES/vinculaciones/usuariosVinculados?error=unlinked_failed&message=' . urlencode($e->getMessage()));
|
||||
header('Location: /IMPORTADORES/vinculaciones/vinculacionesAgencia?error=unlinked_failed&message=' . urlencode($e->getMessage()));
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
function cancelar()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
|
||||
header('Location: /IMPORTADORES/login');
|
||||
exit;
|
||||
}
|
||||
|
||||
$conn = getConnection();
|
||||
|
||||
$id_importador = $_SESSION['usuario_id'];
|
||||
$id_agencia = (int) $_GET['id'];
|
||||
|
||||
$sql = "UPDATE solicitudes_vinculacion
|
||||
SET estado = 'CANCELADA', fecha_respuesta = GETDATE()
|
||||
WHERE id_importador = ? AND id_agencia = ? AND estado = 'PENDIENTE'";
|
||||
|
||||
$params = [$id_importador, $id_agencia];
|
||||
$stmt = sqlsrv_prepare($conn, $sql, $params);
|
||||
|
||||
if ($stmt && sqlsrv_execute($stmt)) {
|
||||
header('Location: /IMPORTADORES/vinculaciones/nuevaVinculacion?success=cancelled');
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
function solicitudesVinculacion()
|
||||
{
|
||||
if (!($_SESSION['usuario_id'] ?? false) || $_SESSION['tipo_usuario'] !== 'admin_agencia') {
|
||||
|
||||
Reference in New Issue
Block a user