updateTrackedEntityAttributeValue method

Future updateTrackedEntityAttributeValue({
  1. required String attribute,
  2. required String trackedEntityInstance,
  3. required String resourceId,
})

Implementation

Future<dynamic> updateTrackedEntityAttributeValue(
    {required String attribute,
    required String trackedEntityInstance,
    required String resourceId}) async {
  TrackedEntityAttributeValue? trackedEntityAttributeValue =
      await TrackedEntityAttributeValueQuery(database: database)
          .where(attribute: 'attribute', value: attribute)
          .where(
              attribute: 'trackedEntityInstance',
              value: trackedEntityInstance)
          .getOne();

  if (trackedEntityAttributeValue == null) {
    final newTrackedEntityAttributeValue = TrackedEntityAttributeValue(
        dirty: true,
        attribute: attribute,
        trackedEntityInstance: trackedEntityInstance,
        value: resourceId);

    return await TrackedEntityAttributeValueQuery(database: database)
        .setData(newTrackedEntityAttributeValue)
        .save();
  }

  trackedEntityAttributeValue.value = resourceId;
  return await TrackedEntityAttributeValueQuery(database: database)
      .setData(trackedEntityAttributeValue)
      .save();
}