saveMonitoreo method
Implementation
Future<void> saveMonitoreo(
Map<String, dynamic> monitoreo, BuildContext context) async {
try {
// Crear una copia del monitoreo para manipular los datos
Map<String, dynamic> localMonitoreo = Map.from(monitoreo);
// Eliminar los campos no deseados
localMonitoreo.remove('ubicacion_individuo');
localMonitoreo.remove('identificador');
localMonitoreo.remove('cod_expediente');
localMonitoreo.remove('first_name');
localMonitoreo.remove('last_name');
localMonitoreo.remove('habit');
// Guardar monitoreo localmente
await _dbHelper.insertMonitoreo(localMonitoreo);
print("Monitoreo guardado localmente con éxito");
// También eliminar 'ubicacion_individuo' antes de enviar al API
Map<String, dynamic> apiMonitoreo = Map.from(monitoreo);
apiMonitoreo.remove('ubicacion_individuo');
// Intentar sincronizar con la API
bool apiSuccess = await _saveMonitoreoToApi(apiMonitoreo);
if (!apiSuccess) {
// Guardar como pendiente si falla la sincronización
await _dbHelper.insertPendingUpdateMonitoreo(jsonEncode(monitoreo));
print(
"El monitoreo se guardó localmente pero no se pudo sincronizar con la API. Guardado como pendiente.");
await _sendNotification(
'Sincronización Fallida',
'El monitoreo se guardó localmente pero no se pudo sincronizar con la API.',
);
showMessage(
context,
'Sincronización Fallida: El monitoreo se guardó localmente pero no se pudo sincronizar con la API.',
);
} else {
await _sendNotification(
'Monitoreo Guardado',
'El monitoreo se ha guardado exitosamente en la API',
);
showMessage(context, 'Monitoreo guardado exitosamente en la API');
}
} catch (e) {
print("Error al guardar el monitoreo: $e");
await _sendNotification(
'Error',
'Ocurrió un error al guardar el monitoreo: $e',
);
showMessage(context, 'Error al guardar el monitoreo: $e');
}
}