getOrgData method

  1. @override
Future<Org> getOrgData(
  1. String orgId
)
override

Retrieves the org details for the given org id

Implementation

@override
Future<Org> getOrgData(String orgId) async {
  final operation = _amplifyApi.query<String>(
    request: GraphQLRequest(
      document: '''
        query GetOrg(\$orgID: ID!) {
          getOrg(orgID: \$orgID) {
            org {
              orgID
              orgName
              businessRef
              publicKey
              certificate
              verified
              config
              owner {
                userID
                userName
                firstName
                middleName
                familyName
              }
              admins {
                userID
                userName
                firstName
                middleName
                familyName
              }
              contacts {
                type
                description
                emailAddress
                phoneNumber
              }
              addresses {
                type
                description
                number
                street
                other
                municipality
                county
                province
                postalCode
                countryCode
              }
              quotas {
                quotaName
                description
                period
                softLimit
                limit
                used
              }
              users {
                orgUsers {
                  user {
                    userID
                    userName
                    firstName
                    middleName
                    familyName
                    emailAddress
                  }
                  isOwner
                  isAdmin
                  status
                }
              }
            }
          }
        }
      ''',
      variables: {
        'orgID': orgId,
      },
    ),
  );

  final response = await operation.response.onError((e, stackTrace) {
    _logger.severe(
      'Exception when invoking service call to '
      'read org data for org with id "$orgId": $e',
    );

    throw OrgServiceError(
      message: 'Failed to retrieve org data for org with id: $orgId',
      innerException: e is Exception ? e : Exception(e),
      innerStackTrace: stackTrace,
    );
  });

  if (response.hasErrors) {
    final errorPayload = jsonEncode(response.errors);
    _logger.severe('Failed to retrieve org: $errorPayload');

    if (response.errors.any(
      (error) => error.message.contains(
        'Given org was not found',
      ),
    )) {
      throw OrgDoesNotExistError(orgId: orgId);
    } else {
      throw OrgDataReadError(orgId: orgId);
    }
  }

  final data = response.data;
  return Org.fromJson(jsonDecode(data!)['getOrg']['org']);
}