onPractitionerExcelUpload<E> method
Implementation
Future<Either<ApiFailure, E>> onPractitionerExcelUpload<E>(
String fileName,
List<int> fileBytes,
List<String?> organizationIds,
E Function(dynamic) fromJsonE,
) async {
try {
String url='';
final token ="";
final headers = {
'content-type': 'multipart/form-data',
'Authorization': 'Bearer $token',
};
debugPrint('<> Upload URL: $url \n Headers : \n $headers');
final request = http.MultipartRequest('POST', Uri.parse(url))
..headers.addAll(headers);
request.files.add(
http.MultipartFile.fromBytes(
'practitioners', // field name
fileBytes,
filename: fileName,
),
);
for (final id in organizationIds) {
if (id != null) {
request.fields['organization[]'] = id;
}
}
final streamedResponse = await request.send();
final response = await http.Response.fromStream(streamedResponse);
debugPrint('Bulk Import Request:\n ${request.fields}');
debugPrint('Bulk Import Response status:\n ${response.statusCode}');
debugPrint('Bulk Import Response body: \n${response.body}');
final decodedJson = response.body.isNotEmpty
? jsonDecode(response.body)
: null;
if (response.statusCode == 200 || response.statusCode == 204) {
final responseObj = fromJsonE(decodedJson);
return Right(responseObj);
} else if (response.statusCode == 401) {
// await _pref.clear();
// await AuthUtils.clearToken();
return Left(
ApiFailure.serverError(
message: consolidateErrorMessages(decodedJson),
),
);
} else {
return Left(
ApiFailure.serverError(
message: consolidateErrorMessages(decodedJson),
),
);
}
} catch (e) {
debugPrint('Upload Error: $e');
if (e is SocketException) {
return Left(
ApiFailure.clientError(message: consolidateErrorMessages(e)),
);
}
return const Left(
ApiFailure.clientError(message: 'An unknown error occurred.'),
);
}
}