Atajos de catálogos personalizables
This commit is contained in:
@@ -3,15 +3,166 @@ require_once __DIR__ . '/../helpers/session.php';
|
||||
require_once __DIR__ . '/../../config/database.php';
|
||||
require_once __DIR__ . '/../helpers/crypto.php';
|
||||
|
||||
// Función para obtener catálogos visibles del usuario
|
||||
function obtenerCatalogosVisibles($idUsuario) {
|
||||
$conn = getConnection();
|
||||
|
||||
// Obtener configuración general y tipo de usuario
|
||||
$query = "SELECT preferencias_catalogos, tipo_usuario FROM usuarios_sistema WHERE id_usuario = ?";
|
||||
$stmt = sqlsrv_prepare($conn, $query, [$idUsuario]);
|
||||
if (!$stmt || !sqlsrv_execute($stmt)) {
|
||||
sqlsrv_close($conn);
|
||||
return ['catalogos_activos' => false, 'catalogos' => []];
|
||||
}
|
||||
|
||||
$usuario = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
|
||||
if (!$usuario) {
|
||||
sqlsrv_close($conn);
|
||||
return ['catalogos_activos' => false, 'catalogos' => []];
|
||||
}
|
||||
|
||||
$catalogos_general = $usuario['preferencias_catalogos'] ?? 0;
|
||||
$tipoUsuario = $usuario['tipo_usuario'] ?? 'importador';
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// Si los catálogos están desactivados, solo mostrar obligatorios
|
||||
if (!$catalogos_general) {
|
||||
// Obtener solo catálogos obligatorios
|
||||
$query = "SELECT nombre, descripcion, color, ruta, accion
|
||||
FROM tipos_catalogos
|
||||
WHERE tipo_usuario = ? AND nombre IN ('Configuración', 'Cerrar sesión')
|
||||
ORDER BY id";
|
||||
$stmt = sqlsrv_prepare($conn, $query, [$tipoUsuario]);
|
||||
|
||||
if (!$stmt || !sqlsrv_execute($stmt)) {
|
||||
sqlsrv_close($conn);
|
||||
return ['catalogos_activos' => false, 'catalogos' => []];
|
||||
}
|
||||
|
||||
$catalogos = [];
|
||||
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$catalogos[] = [
|
||||
'nombre' => $row['nombre'],
|
||||
'descripcion' => $row['descripcion'],
|
||||
'color' => $row['color'],
|
||||
'ruta' => $row['ruta'],
|
||||
'accion' => $row['accion'],
|
||||
'visible' => true,
|
||||
'obligatorio' => true
|
||||
];
|
||||
}
|
||||
|
||||
sqlsrv_free_stmt($stmt);
|
||||
sqlsrv_close($conn);
|
||||
|
||||
return ['catalogos_activos' => false, 'catalogos' => $catalogos];
|
||||
}
|
||||
|
||||
// Obtener todos los catálogos para este tipo de usuario
|
||||
$query = "SELECT nombre, descripcion, color, ruta, accion
|
||||
FROM tipos_catalogos
|
||||
WHERE tipo_usuario = ?
|
||||
ORDER BY id";
|
||||
$stmt = sqlsrv_prepare($conn, $query, [$tipoUsuario]);
|
||||
|
||||
if (!$stmt || !sqlsrv_execute($stmt)) {
|
||||
sqlsrv_close($conn);
|
||||
return ['catalogos_activos' => false, 'catalogos' => []];
|
||||
}
|
||||
|
||||
// Crear array de catálogos disponibles
|
||||
$catalogos_disponibles = [];
|
||||
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
|
||||
$catalogos_disponibles[] = [
|
||||
'nombre' => $row['nombre'],
|
||||
'descripcion' => $row['descripcion'],
|
||||
'color' => $row['color'],
|
||||
'ruta' => $row['ruta'],
|
||||
'accion' => $row['accion'],
|
||||
'campo_bd' => strtolower(str_replace([' ', 'ó', 'ú', 'á', 'é', 'í'], ['_', 'o', 'u', 'a', 'e', 'i'], $row['nombre']))
|
||||
];
|
||||
}
|
||||
sqlsrv_free_stmt($stmt);
|
||||
|
||||
// Obtener preferencias específicas del usuario
|
||||
$preferencias = [];
|
||||
switch ($tipoUsuario) {
|
||||
case 'importador':
|
||||
$query = "SELECT * FROM preferencias_catalogos_usuario WHERE id_usuario = ?";
|
||||
$stmt = sqlsrv_prepare($conn, $query, [$idUsuario]);
|
||||
if ($stmt && sqlsrv_execute($stmt)) {
|
||||
$preferenciasRow = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC);
|
||||
if ($preferenciasRow) {
|
||||
$preferencias = $preferenciasRow;
|
||||
}
|
||||
sqlsrv_free_stmt($stmt);
|
||||
}
|
||||
break;
|
||||
// Aquí agregarías otros casos cuando implementes otros tipos de usuario
|
||||
}
|
||||
|
||||
// Determinar qué catálogos mostrar
|
||||
$catalogos_visibles = [];
|
||||
foreach ($catalogos_disponibles as $catalogo) {
|
||||
$campo = $catalogo['campo_bd'];
|
||||
$esObligatorio = in_array($catalogo['nombre'], ['Configuración', 'Cerrar sesión']);
|
||||
|
||||
if ($esObligatorio) {
|
||||
// Catálogos obligatorios siempre visibles
|
||||
$catalogo['visible'] = true;
|
||||
$catalogo['obligatorio'] = true;
|
||||
} else {
|
||||
// Verificar si está activado en preferencias
|
||||
$catalogo['visible'] = isset($preferencias[$campo]) && $preferencias[$campo] == 1;
|
||||
$catalogo['obligatorio'] = false;
|
||||
}
|
||||
|
||||
if ($catalogo['visible']) {
|
||||
$catalogos_visibles[] = $catalogo;
|
||||
}
|
||||
}
|
||||
|
||||
sqlsrv_close($conn);
|
||||
|
||||
return [
|
||||
'catalogos_activos' => true,
|
||||
'catalogos' => $catalogos_visibles,
|
||||
'tipo_usuario' => $tipoUsuario
|
||||
];
|
||||
}
|
||||
|
||||
// Función para obtener icono según el nombre del catálogo
|
||||
function obtenerIconoCatalogo($nombre) {
|
||||
$iconos = [
|
||||
'Locaciones' => '📍',
|
||||
'Vinculación' => '🔗',
|
||||
'Transportistas' => '🚚',
|
||||
'Transportes' => '🚛',
|
||||
'Choferes' => '👨✈️',
|
||||
'Proveedores' => '🏭',
|
||||
'Productos frecuentes' => '⭐',
|
||||
'Solicitudes importación' => '📄',
|
||||
'Expediente electrónico' => '📁',
|
||||
'Configuración' => '⚙️',
|
||||
'Cerrar sesión' => '🚪'
|
||||
];
|
||||
|
||||
return $iconos[$nombre] ?? '📁';
|
||||
}
|
||||
|
||||
// Función para el dashboard del importador
|
||||
function dashboard()
|
||||
{
|
||||
if (!isset($_SESSION['usuario_id']) || $_SESSION['tipo_usuario'] !== 'importador') {
|
||||
header('Location: /IMPORTADORES/login');
|
||||
$idUsuario = $_SESSION['usuario_id'] ?? null;
|
||||
|
||||
if (!$idUsuario) {
|
||||
header("Location: /IMPORTADORES/login");
|
||||
exit;
|
||||
}
|
||||
|
||||
$nombreImportador = $_SESSION['usuario_nombre'];
|
||||
|
||||
|
||||
// Obtener catálogos visibles
|
||||
$catalogosData = obtenerCatalogosVisibles($idUsuario);
|
||||
|
||||
include __DIR__ . '/../../views/importadores/dashboard_importador.php';
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user