downloadReservedValueByAttribute method

dynamic downloadReservedValueByAttribute(
  1. ProgramTrackedEntityAttribute reservedAttribute, {
  2. Dio? dioTestClient,
})

Implementation

downloadReservedValueByAttribute(
    ProgramTrackedEntityAttribute reservedAttribute,
    {Dio? dioTestClient}) async {
  final int reservedCount = await AttributeReservedValueQuery()
      .where(attribute: 'attribute', value: reservedAttribute.attribute)
      .count();

  final numberToReserve = 100 - reservedCount;

  if (numberToReserve <= 0) {
    return null;
  }

  final response = await HttpClient.get(
      'trackedEntityAttributes/${reservedAttribute.attribute}/generateAndReserve?numberToReserve=$numberToReserve',
      database: this.database,
      dioTestClient: dioTestClient);

  List<AttributeReservedValue> reservedValues = [];

  (response.body ?? []).forEach((reservedResult) {
    reservedValues.add(
        AttributeReservedValue.fromJson({...reservedResult, 'dirty': false}));
  });

  return AttributeReservedValueQuery().setData(reservedValues).save();
}