Aprobación de Agencias
This commit is contained in:
@@ -72,8 +72,6 @@ function alta()
|
||||
FROM agente_agencia aa
|
||||
INNER JOIN usuarios_sistema u
|
||||
ON aa.id_agente = u.id_usuario
|
||||
INNER JOIN agencias_aduanales a
|
||||
ON aa.id_agente = a.id_administrador
|
||||
LEFT JOIN usuarios_sistema creador
|
||||
ON u.creado_por = creador.id_usuario
|
||||
WHERE aa.id_agencia = ?
|
||||
@@ -108,6 +106,12 @@ function guardarAgente()
|
||||
$conn = getConnection();
|
||||
|
||||
try {
|
||||
// === AGREGADO: LOG DE DEPURACIÓN ===
|
||||
error_log("=== INICIO DEBUG guardarAgente ===");
|
||||
error_log("POST data: " . print_r($_POST, true));
|
||||
error_log("SESSION usuario_id: " . $_SESSION['usuario_id']);
|
||||
error_log("SESSION tipo_usuario: " . $_SESSION['tipo_usuario']);
|
||||
|
||||
if (!sqlsrv_begin_transaction($conn)) {
|
||||
error_log("ERROR: No se pudo iniciar la transacción");
|
||||
throw new Exception("Error al iniciar transacción");
|
||||
@@ -121,13 +125,25 @@ function guardarAgente()
|
||||
$password = $_POST['password'] ?? '';
|
||||
$tipo = $_POST['tipo_usuario'] ?? '';
|
||||
|
||||
// === AGREGADO: VALIDACIÓN DETALLADA ===
|
||||
error_log("Datos capturados:");
|
||||
error_log("nombre: '$nombre'");
|
||||
error_log("email: '$email'");
|
||||
error_log("password: " . (empty($password) ? 'VACÍO' : 'NO VACÍO'));
|
||||
error_log("tipo: '$tipo'");
|
||||
|
||||
if (empty($nombre) || empty($email) || empty($password) || empty($tipo)) {
|
||||
error_log("ERROR: Datos incompletos");
|
||||
error_log("nombre vacío: " . (empty($nombre) ? 'SÍ' : 'NO'));
|
||||
error_log("email vacío: " . (empty($email) ? 'SÍ' : 'NO'));
|
||||
error_log("password vacío: " . (empty($password) ? 'SÍ' : 'NO'));
|
||||
error_log("tipo vacío: " . (empty($tipo) ? 'SÍ' : 'NO'));
|
||||
header("Location: /IMPORTADORES/agencias/alta?error=invalid_data");
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($tipo !== 'agente_aduanal') {
|
||||
error_log("DEBUG 5: Tipo de usuario inválido: $tipo");
|
||||
error_log("ERROR: Tipo de usuario inválido: '$tipo'");
|
||||
header("Location: /IMPORTADORES/agencias/alta?error=invalid_user_type");
|
||||
exit;
|
||||
}
|
||||
@@ -137,15 +153,27 @@ function guardarAgente()
|
||||
$email_encrypted = encrypt($email);
|
||||
$password_hash = password_hash($password, PASSWORD_DEFAULT);
|
||||
|
||||
error_log("Datos encriptados exitosamente");
|
||||
|
||||
// 3. Validar duplicado por email encriptado
|
||||
$sqlCheck = "SELECT COUNT(*) AS total FROM usuarios_sistema WHERE email = ?";
|
||||
$stmtCheck = sqlsrv_query($conn, $sqlCheck, [$email_encrypted]);
|
||||
$rowCheck = sqlsrv_fetch_array($stmtCheck, SQLSRV_FETCH_ASSOC);
|
||||
|
||||
if ($stmtCheck === false) {
|
||||
error_log("ERROR: Fallo en consulta de duplicado");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
throw new Exception("Error al verificar duplicado");
|
||||
}
|
||||
|
||||
$rowCheck = sqlsrv_fetch_array($stmtCheck, SQLSRV_FETCH_ASSOC);
|
||||
if ($rowCheck['total'] > 0) {
|
||||
error_log("ERROR: Email ya existe");
|
||||
header("Location: /IMPORTADORES/agencias/alta?error=email_exists");
|
||||
exit;
|
||||
}
|
||||
|
||||
error_log("Validación de duplicado pasada");
|
||||
|
||||
// 4. Insertar usuario
|
||||
$sqlInsert = "INSERT INTO usuarios_sistema
|
||||
(nombre, email, password_hash, tipo_usuario, activo, creado_en, dos_factores, creado_por)
|
||||
@@ -153,10 +181,20 @@ function guardarAgente()
|
||||
VALUES (?, ?, ?, ?, 1, GETDATE(), 0, ?)
|
||||
";
|
||||
$params = [$nombre_encrypted, $email_encrypted, $password_hash, $tipo, $_SESSION['usuario_id']];
|
||||
|
||||
error_log("Parámetros para INSERT:");
|
||||
error_log("nombre_encrypted: " . (empty($nombre_encrypted) ? 'VACÍO' : 'OK'));
|
||||
error_log("email_encrypted: " . (empty($email_encrypted) ? 'VACÍO' : 'OK'));
|
||||
error_log("password_hash: " . (empty($password_hash) ? 'VACÍO' : 'OK'));
|
||||
error_log("tipo: '$tipo'");
|
||||
error_log("creado_por: " . $_SESSION['usuario_id']);
|
||||
|
||||
$stmtInsert = sqlsrv_query($conn, $sqlInsert, $params);
|
||||
|
||||
if ($stmtInsert === false) {
|
||||
error_log("ERROR: Fallo al insertar usuario");
|
||||
error_log("SQL: $sqlInsert");
|
||||
error_log("Errores SQL Server:");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
throw new Exception("Error al insertar usuario");
|
||||
}
|
||||
@@ -166,41 +204,67 @@ function guardarAgente()
|
||||
|
||||
if (!$id_usuario) {
|
||||
error_log("ERROR: No se obtuvo id_usuario tras el insert");
|
||||
error_log("idUsuarioRow: " . print_r($idUsuarioRow, true));
|
||||
throw new Exception("Error al obtener ID del nuevo usuario");
|
||||
}
|
||||
|
||||
// 6. Obtener la agencia del administrador actual
|
||||
error_log("Usuario insertado exitosamente con ID: $id_usuario");
|
||||
|
||||
// 5. Obtener la agencia del administrador actual
|
||||
$sqlAgencia = "SELECT id_agencia FROM agencias_aduanales WHERE id_administrador = ?";
|
||||
$stmtAgencia = sqlsrv_query($conn, $sqlAgencia, [$_SESSION['usuario_id']]);
|
||||
$agenciaRow = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC);
|
||||
$id_agencia = $agenciaRow['id_agencia'] ?? null;
|
||||
|
||||
if ($stmtAgencia === false) {
|
||||
error_log("ERROR: Fallo al consultar agencia");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
throw new Exception("Error al consultar agencia");
|
||||
}
|
||||
|
||||
$agenciaRow = sqlsrv_fetch_array($stmtAgencia, SQLSRV_FETCH_ASSOC);
|
||||
$id_agencia = $agenciaRow['id_agencia'] ?? null;
|
||||
|
||||
if (!$id_agencia) {
|
||||
error_log("ERROR: No se encontró agencia para el admin_agencia con id_usuario=" . $_SESSION['usuario_id']);
|
||||
error_log("agenciaRow: " . print_r($agenciaRow, true));
|
||||
throw new Exception("No se encontró agencia asociada al administrador");
|
||||
}
|
||||
|
||||
// 7. Crear la relación agente-agencia
|
||||
error_log("Agencia encontrada con ID: $id_agencia");
|
||||
|
||||
// 6. Crear la relación agente-agencia
|
||||
$sqlRelacion = "INSERT INTO agente_agencia
|
||||
(id_agente, id_agencia, fecha_asignacion, activo, asignado_por)
|
||||
VALUES (?, ?, GETDATE(), 1, ?)
|
||||
";
|
||||
$paramsRelacion = [$id_usuario, $id_agencia, $_SESSION['usuario_id']];
|
||||
$stmtRelacion = sqlsrv_query($conn, $sqlRelacion, $paramsRelacion);
|
||||
|
||||
error_log("Parámetros para relación agente-agencia:");
|
||||
error_log("id_agente: $id_usuario");
|
||||
error_log("id_agencia: $id_agencia");
|
||||
error_log("asignado_por: " . $_SESSION['usuario_id']);
|
||||
|
||||
$stmtRelacion = sqlsrv_query($conn, $sqlRelacion, $paramsRelacion);
|
||||
|
||||
if ($stmtRelacion === false) {
|
||||
error_log("ERROR: No se pudo insertar la relación agente-agencia");
|
||||
error_log("SQL: $sqlRelacion");
|
||||
error_log("Errores SQL Server:");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
throw new Exception("Error al guardar relación agente-agencia");
|
||||
}
|
||||
|
||||
// 8. CONFIRMAR TRANSACCIÓN ✅
|
||||
error_log("Relación agente-agencia creada exitosamente");
|
||||
|
||||
// 7. CONFIRMAR TRANSACCIÓN ✅
|
||||
if (!sqlsrv_commit($conn)) {
|
||||
error_log("ERROR: No se pudo confirmar la transacción");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
throw new Exception("Error al confirmar transacción");
|
||||
}
|
||||
|
||||
// 9. Enviar correo de bienvenida
|
||||
error_log("Transacción confirmada exitosamente");
|
||||
|
||||
// 8. Enviar correo de bienvenida
|
||||
if (class_exists('PHPMailer\PHPMailer\PHPMailer')) {
|
||||
$mail = new PHPMailer(true);
|
||||
try {
|
||||
@@ -253,25 +317,30 @@ function guardarAgente()
|
||||
</div>";
|
||||
|
||||
$mail->send();
|
||||
error_log("Correo enviado exitosamente");
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("Error al enviar correo: " . $e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
// 10. Redirigir con mensaje de éxito
|
||||
error_log("=== FIN EXITOSO guardarAgente ===");
|
||||
// 9. Redirigir con mensaje de éxito
|
||||
header("Location: /IMPORTADORES/agencias/alta?success=created");
|
||||
exit;
|
||||
|
||||
} catch (Exception $e) {
|
||||
error_log("ERROR CAPTURADO: " . $e->getMessage());
|
||||
error_log("Stack trace: " . $e->getTraceAsString());
|
||||
|
||||
if (!sqlsrv_rollback($conn)) {
|
||||
error_log("ERROR: No se pudo revertir la transacción");
|
||||
error_log(print_r(sqlsrv_errors(), true));
|
||||
} else {
|
||||
error_log("Transacción revertida exitosamente");
|
||||
}
|
||||
|
||||
error_log("=== FIN CON ERROR guardar_agencia ===");
|
||||
error_log("=== FIN CON ERROR guardarAgente ===");
|
||||
header("Location: /IMPORTADORES/agencias/alta?error=save_failed");
|
||||
exit;
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user