saveMonitoreo method

Future<void> saveMonitoreo(
  1. Map<String, dynamic> monitoreo,
  2. BuildContext context
)

Implementation

Future<void> saveMonitoreo(
    Map<String, dynamic> monitoreo, BuildContext context) async {
  try {
    // Crear una copia del monitoreo para manipular los datos
    Map<String, dynamic> localMonitoreo = Map.from(monitoreo);

    // Eliminar los campos no deseados

    localMonitoreo.remove('ubicacion_individuo');
    localMonitoreo.remove('identificador');
    localMonitoreo.remove('cod_expediente');
    localMonitoreo.remove('first_name');
    localMonitoreo.remove('last_name');
    localMonitoreo.remove('habit');

    // Guardar monitoreo localmente
    await _dbHelper.insertMonitoreo(localMonitoreo);
    print("Monitoreo guardado localmente con éxito");

    // También eliminar 'ubicacion_individuo' antes de enviar al API
    Map<String, dynamic> apiMonitoreo = Map.from(monitoreo);
    apiMonitoreo.remove('ubicacion_individuo');

    // Intentar sincronizar con la API
    bool apiSuccess = await _saveMonitoreoToApi(apiMonitoreo);

    if (!apiSuccess) {
      // Guardar como pendiente si falla la sincronización
      await _dbHelper.insertPendingUpdateMonitoreo(jsonEncode(monitoreo));
      print(
          "El monitoreo se guardó localmente pero no se pudo sincronizar con la API. Guardado como pendiente.");
      await _sendNotification(
        'Sincronización Fallida',
        'El monitoreo se guardó localmente pero no se pudo sincronizar con la API.',
      );
      showMessage(
        context,
        'Sincronización Fallida: El monitoreo se guardó localmente pero no se pudo sincronizar con la API.',
      );
    } else {
      await _sendNotification(
        'Monitoreo Guardado',
        'El monitoreo se ha guardado exitosamente en la API',
      );
      showMessage(context, 'Monitoreo guardado exitosamente en la API');
    }
  } catch (e) {
    print("Error al guardar el monitoreo: $e");
    await _sendNotification(
      'Error',
      'Ocurrió un error al guardar el monitoreo: $e',
    );
    showMessage(context, 'Error al guardar el monitoreo: $e');
  }
}