checkAndSyncPending method

Future<void> checkAndSyncPending()
  1. Cuando recobra conexión, revisa la tabla de pendientes y los sube uno a uno.

Implementation

Future<void> checkAndSyncPending() async {
  if (await Connectivity().checkConnectivity() == ConnectivityResult.none)
    return;

  debugPrint(
      '🔄 checkAndSyncPending: Recuperada conexión. Revisando pendientes...');
  final pendientes = await _dbHelper.getPendingMetodoMuestreoEspecie();
  for (var item in pendientes) {
    final data = jsonDecode(item['data']);
    debugPrint('➡️ Intentando subir PENDIENTE ID=${data['id']}');
    final success = await upload(data);
    if (success) {
      // Si se subió correctamente, elimina de pendientes
      await _dbHelper.deletePendingMetodoMuestreoEspecie(item['id']);
      debugPrint(
          '✔️ Pendiente sincronizado y eliminado de la tabla → ID=${data['id']}');
      await _sendNotification(
          'Pendiente Muestreo sincronizado', 'ID=${data['id']}');
    } else {
      debugPrint(
          '❌ Error al sincronizar pendiente ID=${data['id']}. Detengo intento.');
      await _sendNotification(
          'Error de sincronización', 'Pendiente ID=${data['id']} no enviado');
      break;
    }
  }
}