getR3WebData function

Future getR3WebData({
  1. dynamic isReLogin = false,
})

Implementation

Future<dynamic> getR3WebData({isReLogin = false}) async {
  try {
    String url = '${DB.dbR3Url}$r3UrlGetDashboardData${DB.dbR3MS}';
    //debugPrint('URL $url');
    dynamic response = await dio.post(url);
    //log('getR3Data Session => ${dio.options.headers.keys.}');
    dynamic d;
    if (response.statusCode == 200) {
      try {
        d = jsonDecode(response.data);
        log(d.runtimeType.toString());
        if (d["status"] == "200") {
          if (d["Data"] != "") {
            return {'status': 200, 'data': jsonDecode(d["Data"]), 'message': ''};
          } else {
            return {'status': 404, 'data': '', 'message': 'No data found'};
          }
        } else {
          //Try re login if the session is expired and call the getR3Data() for one more time
          if (!isReLogin) {
            bool isValidMS = await isValidR3Session();
            if (!isValidMS) {
              dynamic d = await r3Login(DB.dbUserName, DB.dbPassword, DB.dbCompanyGUID);
              if (d["Status"] == 200) {
                return await getR3WebData(isReLogin: true);
              }
            }
          }
          return {'status': 404, 'data': '', 'message': 'getR3WebData()->api call failed on ${d["error"]}'};
        }
      } catch (e) {
        throw ("Unable to decode the response. $e");
      }
    } else {
      return {'status': 404, 'data': '', 'message': 'getR3WebData()->api call failed.${response.statusMessage}'};
    }
  } catch (e) {
    return {'status': 404, 'data': '', 'message': 'getR3WebData()->api call failed. $e'};
  }
}