onPractitionerExcelUpload<E> method

Future<Either<ApiFailure, E>> onPractitionerExcelUpload<E>(
  1. String fileName,
  2. List<int> fileBytes,
  3. List<String?> organizationIds,
  4. E fromJsonE(
    1. dynamic
    ),
)

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.'),
    );
  }
}