saveArbol method

Future<void> saveArbol(
  1. Map<String, dynamic> arbolData,
  2. BuildContext context
)

Guarda árbol en local y trata de enviarlo a la API. Si falla, queda en pending_arboles.

Implementation

Future<void> saveArbol(
    Map<String, dynamic> arbolData, BuildContext context) async {
  try {
    // Insertar localmente en 'arboles' (tabla principal si existe)
    // await _dbHelper.insertArbol(arbolData);

    bool success = await _sendToApi(arbolData);
    if (!success) {
      await _dbHelper.insertPendingArbol(jsonEncode(arbolData));
      await _sendNotification(
          'Sincronización Fallida', 'Guardado local, se sincronizará luego');
      _showMessage(context,
          'Guardado localmente. Se sincronizará cuando haya internet.');
    } else {
      await _sendNotification(
          'Guardado Exitoso', 'Árbol sincronizado con la API');
      _showMessage(context, 'Árbol guardado exitosamente en la API');
    }
  } catch (e) {
    await _dbHelper.insertPendingArbol(jsonEncode(arbolData));
    await _sendNotification('Error', 'Ocurrió un error: $e');
    _showMessage(context,
        'Error al guardar árbol. Guardado localmente para reintentar.');
  }
}