checkAndSyncPendingProperties method

Future<void> checkAndSyncPendingProperties()

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.',
    );
  }
}