findApplicantByIdentifier method

Future<SdkApplicantResponse?> findApplicantByIdentifier(
  1. String identifier
)

Find applicant by customer identifier or email

identifier - Customer identifier or email to search for

Returns the applicant if found, null otherwise

Implementation

Future<SdkApplicantResponse?> findApplicantByIdentifier(String identifier) async {
  try {
    final response = await _apiClient.get(
      '/sdk/kyc-verification/applicants',
      queryParameters: {'identifier': identifier},
    );
    final jsonData = json.decode(response.body) as Map<String, dynamic>;
    return SdkApplicantResponse.fromJson(jsonData);
  } catch (e) {
    // If applicant not found, return null instead of throwing
    if (e is ApexKycException) {
      // Check status code for 404 or 400 (bad request for not found)
      if (e.statusCode == 404 ||
          e.statusCode == 400 ||
          e.toString().toLowerCase().contains('not found')) {
        return null;
      }
      rethrow;
    }
    // Check if it's a 404 or not found error
    final errorString = e.toString().toLowerCase();
    if (errorString.contains('not found') || errorString.contains('404')) {
      return null;
    }
    throw ApexKycException(
      'Failed to find applicant: ${e.toString()}',
      originalError: e,
    );
  }
}