Add System Configuration section

This commit is contained in:
gpt-engineer-app[bot]
2025-09-25 17:58:41 +00:00
parent a8baef01f2
commit 557f8bdd77
3 changed files with 653 additions and 21 deletions

View File

@@ -0,0 +1,149 @@
import { useState, useEffect } from 'react';
import { useToast } from '@/hooks/use-toast';
import { configApi, ApiConfig, SystemParameter, Integration, SecurityConfig, AuditLog } from '@/services/configApi';
export const useSystemConfig = () => {
const [apiConfigs, setApiConfigs] = useState<ApiConfig[]>([]);
const [systemParameters, setSystemParameters] = useState<SystemParameter[]>([]);
const [integrations, setIntegrations] = useState<Integration[]>([]);
const [securityConfig, setSecurityConfig] = useState<SecurityConfig[]>([]);
const [auditLogs, setAuditLogs] = useState<AuditLog[]>([]);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
const { toast } = useToast();
const loadData = async () => {
setLoading(true);
setError(null);
try {
const [apis, parameters, integs, security, logs] = await Promise.all([
configApi.getApiConfigs(),
configApi.getSystemParameters(),
configApi.getIntegrations(),
configApi.getSecurityConfig(),
configApi.getAuditLogs(1, 20).then(result => result.logs),
]);
setApiConfigs(apis);
setSystemParameters(parameters);
setIntegrations(integs);
setSecurityConfig(security);
setAuditLogs(logs);
} catch (err) {
const message = err instanceof Error ? err.message : 'Error loading system configuration';
setError(message);
console.error('Error loading system config:', err);
} finally {
setLoading(false);
}
};
const updateApiConfig = async (config: Partial<ApiConfig>) => {
try {
const updated = await configApi.updateApiConfig(config);
setApiConfigs(prev => prev.map(c => c.id === updated.id ? updated : c));
toast({
title: "Configuración Actualizada",
description: "La configuración de API se actualizó correctamente",
});
} catch (err) {
toast({
title: "Error",
description: "No se pudo actualizar la configuración de API",
variant: "destructive",
});
}
};
const testApiConnection = async (configId: string) => {
try {
const success = await configApi.testApiConnection(configId);
toast({
title: success ? "Conexión Exitosa" : "Conexión Fallida",
description: success ? "La API responde correctamente" : "No se pudo conectar a la API",
variant: success ? "default" : "destructive",
});
return success;
} catch (err) {
toast({
title: "Error",
description: "Error al probar la conexión",
variant: "destructive",
});
return false;
}
};
const updateSystemParameter = async (parameter: Partial<SystemParameter>) => {
try {
const updated = await configApi.updateSystemParameter(parameter);
setSystemParameters(prev => prev.map(p => p.id === updated.id ? updated : p));
toast({
title: "Parámetro Actualizado",
description: "El parámetro del sistema se actualizó correctamente",
});
} catch (err) {
toast({
title: "Error",
description: "No se pudo actualizar el parámetro",
variant: "destructive",
});
}
};
const syncIntegration = async (integrationId: string) => {
try {
await configApi.syncIntegration(integrationId);
toast({
title: "Sincronización Iniciada",
description: "La integración se está sincronizando",
});
// Reload integrations to get updated status
const updatedIntegrations = await configApi.getIntegrations();
setIntegrations(updatedIntegrations);
} catch (err) {
toast({
title: "Error",
description: "No se pudo sincronizar la integración",
variant: "destructive",
});
}
};
const updateSecurityConfig = async (config: Partial<SecurityConfig>) => {
try {
const updated = await configApi.updateSecurityConfig(config);
setSecurityConfig(prev => prev.map(c => c.id === updated.id ? updated : c));
toast({
title: "Configuración de Seguridad Actualizada",
description: "Los ajustes de seguridad se actualizaron correctamente",
});
} catch (err) {
toast({
title: "Error",
description: "No se pudo actualizar la configuración de seguridad",
variant: "destructive",
});
}
};
useEffect(() => {
loadData();
}, []);
return {
apiConfigs,
systemParameters,
integrations,
securityConfig,
auditLogs,
loading,
error,
refetch: loadData,
updateApiConfig,
testApiConnection,
updateSystemParameter,
syncIntegration,
updateSecurityConfig,
};
};