Descripción General
El endpoint de Sincronización de Estados asegura que el estado de las mesas (MesasEstado) coincida con la situación real de las cabeceras de mesa (MesasCabecera). Este endpoint es fundamental para mantener la integridad de datos y corregir inconsistencias entre las tablas de estado y cabeceras.
🎯 Funcionalidades de Sincronización
- Sincronización automática: Alinea estados con cabeceras existentes
- Limpieza de datos: Elimina estados huérfanos sin cabeceras
- Corrección de inconsistencias: Repara referencias a facturas inexistentes
- Detección de duplicados: Identifica cabeceras duplicadas por factura
- Reporte detallado: Proporciona resumen de acciones realizadas
- Manejo de errores: Gestiona errores durante la sincronización
- Integridad de datos: Mantiene consistencia entre tablas
Endpoint Disponible
POST
/api/TableManager/sync-table-states
Sincroniza todos los estados de mesa (MesasEstado) con las cabeceras actuales (MesasCabecera). Este endpoint asegura que el estado de las mesas coincida con la situación real de las cabeceras de mesa, corrigiendo inconsistencias y limpiando datos huérfanos.
Headers:
- initialCatalog (string, requerido): Nombre de la base de datos
- userID (string, opcional): ID de usuario de la base de datos
- password (string, opcional): Contraseña de la base de datos
200 OK
Sincronización completada exitosamente
{
"success": true,
"info": [
"Se sincronizaron 15 estados de mesa",
"Se eliminaron 3 estados huérfanos",
"Se corrigieron 2 referencias a facturas inexistentes",
"Se detectaron 1 cabecera duplicada"
],
"errors": [
"Error al procesar mesa 5 del salón 2: Factura 12345 no encontrada"
],
"summary": {
"totalProcessed": 15,
"statesUpdated": 12,
"orphanStatesDeleted": 3,
"invalidReferencesFixed": 2,
"duplicatesFound": 1,
"errorsCount": 1
}
}
500 Internal Server Error
Error interno durante la sincronización
{
"success": false,
"error": "Error de conexión a la base de datos durante la sincronización",
"details": "Timeout en la operación de sincronización"
}
Ejemplos de Uso
🔧 Ejemplo con cURL
curl -X POST \
'http://localhost:1379/api/TableManager/sync-table-states' \
-H 'accept: application/json' \
-H 'initialCatalog: ELSIFON'
🔧 Ejemplo con JavaScript (Fetch API)
fetch('/api/TableManager/sync-table-states', {
method: 'POST',
headers: {
'Accept': 'application/json',
'initialCatalog': 'ELSIFON'
}
})
.then(response => response.json())
.then(data => {
console.log('Sincronización completada:', data.success);
console.log('Acciones realizadas:', data.info);
console.log('Errores encontrados:', data.errors);
console.log('Resumen:', data.summary);
})
.catch(error => console.error('Error:', error));
🔧 Ejemplo con C# (HttpClient)
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("initialCatalog", "ELSIFON");
var response = await client.PostAsync(
"http://localhost:1379/api/TableManager/sync-table-states",
null);
var result = await response.Content.ReadAsStringAsync();
var syncResult = JsonSerializer.Deserialize(result);
Console.WriteLine($"Sincronización exitosa: {syncResult.Success}");
Console.WriteLine($"Total procesado: {syncResult.Summary.TotalProcessed}");
Console.WriteLine($"Estados actualizados: {syncResult.Summary.StatesUpdated}");
Console.WriteLine($"Errores: {syncResult.Summary.ErrorsCount}");
Servicio Utilizado
ITableManagerService - Servicio para la sincronización de estados
- SyncAllTableStatesWithHeaders(): Sincroniza todos los estados con cabeceras