getUserReports method
Implementation
@override
Future<List<Report>> getUserReports(String businessId) async {
if (businessId.isEmpty) {
throw LittlefishReportException(
ReportErrorCodes.invalidBusinessId.code,
ReportErrorCodes.invalidBusinessId.message,
);
}
if (user == null) {
throw LittlefishReportException(
ReportErrorCodes.userNotAuthenticated.code,
ReportErrorCodes.userNotAuthenticated.message,
);
}
if (!isReady) {
throw LittlefishReportException(
ReportErrorCodes.reportClientNotReady.code,
ReportErrorCodes.reportClientNotReady.message,
);
} else {
logger.info(
this,
'getting user reports for businessId: $businessId, and user ${user?.uid}',
);
final String url =
'$baseUrl/Get${settings.provider}Dashboards/businessId=$businessId';
logger.debug(this, 'getting user reports from $url');
final LittleFishHttpClient http = LittleFishHttpClient();
final response = await http.get(
url: url,
user: authService.user,
additionalHeaders: {'x-api-key': apiKey},
);
logger.debug(
this,
'response status code: ${response?.statusCode}, from getting reports, for business: $businessId, and user:${user?.uid}, from url: $url',
);
if ((response?.isOk ?? false)) {
logger.debug(this, 'got user reports from $url successfully');
final List<Report> reports = [];
final items = response?.data!["data"] ?? [];
for (final item in items) {
reports.add(Report.fromJson(item));
}
logger.info(
this,
'got ${reports.length} reports for $businessId, user: ${user?.uid}',
);
return reports;
} else {
logger.error(
this,
'failed to get user reports from $url, for business: $businessId, and user:${user?.uid}, with error: ${response?.statusCode}, and message: ${response?.statusMessage}',
);
final errorCode = response?.statusCode == 403
? ReportErrorCodes.reportPermissionDenied
: ReportErrorCodes.failedToLoadReports;
throw LittlefishReportException(
errorCode.code,
errorCode.message,
);
}
}
}