checkAndSyncPendingProperties method
Revisa y sincroniza los predios pendientes almacenados localmente.
Implementation
Future<void> checkAndSyncPendingProperties() async {
var connectivityResult = await Connectivity().checkConnectivity();
if (connectivityResult == ConnectivityResult.mobile ||
connectivityResult == ConnectivityResult.wifi) {
final pendingUpdates = await _dbHelper.getPendingUpdatesProperty();
for (var update in pendingUpdates) {
final property = jsonDecode(update['data']);
bool apiSuccess = await _savePropertyToApi(property);
if (apiSuccess) {
await _dbHelper.deletePendingUpdateProperty(update['id']);
await _sendNotification(
'Sincronización Exitosa',
'El predio pendiente (id: ${update['id']}) se ha sincronizado correctamente.',
);
} else {
// Si falla, se puede optar por eliminarlo igualmente o dejarlo para reintentar más tarde.
// En este ejemplo, se elimina para "quitarlo" de la lista de pendientes:
await _dbHelper.deletePendingUpdateProperty(update['id']);
await _sendNotification(
'Sincronización Fallida',
'No se pudo sincronizar el predio pendiente (id: ${update['id']}). Se eliminará de la lista de pendientes.',
);
}
}
} else {
await _sendNotification(
'Sin Conexión',
'No hay conexión a internet. No se pudieron sincronizar los predios pendientes.',
);
}
}