dhisUrl method

Future<String> dhisUrl()
override

Implementation

Future<String> dhisUrl() async {
  if (this.useUserOrgUnit == true) {
    final userOrgUnits =
        await UserOrganisationUnitQuery(database: database).get();

    this.orgUnit =
        userOrgUnits.map((userOrgUnit) => userOrgUnit.orgUnit).join(';');
  }

  String orgUnitMode = 'ouMode=';

  switch (this.ouMode) {
    case OrgUnitMode.DESCENDANTS:
      orgUnitMode += 'DESCENDANTS';
      break;
    case OrgUnitMode.CHILDREN:
      orgUnitMode += 'CHILDREN';
      break;
    case OrgUnitMode.SELECTED:
      orgUnitMode += 'SELECTED';
      break;
    case OrgUnitMode.ACCESSIBLE:
      orgUnitMode += 'ACCESSIBLE';
      break;
    default:
      orgUnitMode += 'SELECTED';
      break;
  }

  String url =
      'trackedEntityInstances.json?ou=${this.orgUnit}&$orgUnitMode&program=${this.program}&pageSize=50&order=created:desc&fields=${(this.selected).isNotEmpty ? this.selected.join(',') : '*'}${this.attributeFilters?.length == 0 ? "" : "&" + (this.attributeFilters?.map((queryFilterItem) {
            return "filter=" +
                queryFilterItem.attribute +
                (queryFilterItem.condition == QueryCondition.In
                    ? ":IN:"
                    : ":EQ:") +
                queryFilterItem.value;
          }).join("&") as String)}';

  return Future.value(url);
}