savePalma method
- Map<
String, dynamic> palmaData, - BuildContext context
Guarda palma en local y trata de enviarla a la API. Si no puede, queda en "pending_palmas".
Implementation
Future<void> savePalma(
Map<String, dynamic> palmaData, BuildContext context) async {
try {
// Insertar localmente en 'palmas' (tabla principal si existe) o como parte de lote
// (aquí asumimos que el insert en la tabla principal ya ocurrió antes de llamar a este método).
// Si deseas guardar primero en la base de palmas local, podrías hacer:
// await _dbHelper.insertPalma(palmaData);
bool success = await _sendToApi(palmaData);
if (!success) {
// Si falla la API o no hay token, almacenar en pendientes
await _dbHelper.insertPendingPalma(jsonEncode(palmaData));
await _sendNotification(
'Sincronización Fallida', 'Guardado local, se sincronizará luego');
_showMessage(context,
'Guardado localmente. Se sincronizará cuando haya internet.');
} else {
await _sendNotification(
'Guardado Exitoso', 'Palma sincronizada con la API');
_showMessage(context, 'Palma guardada exitosamente en la API');
}
} catch (e) {
// En caso de error inesperado, guardar en pendientes
await _dbHelper.insertPendingPalma(jsonEncode(palmaData));
await _sendNotification('Error', 'Ocurrió un error: $e');
_showMessage(context,
'Error al guardar palma. Guardada localmente para reintentar.');
}
}