getOrders method

void getOrders(
  1. int page,
  2. GetOrders getOrders
)

Implementation

void getOrders(int page, GetOrders getOrders) async {
  getOrders.onLoading();

  final url = "https://api.plentrasphere.com/v2/client/index.php";
  final body = {
    'class': 'orders',
    "appKey": appKey,
    "action": "getOrders",
    "page": page.toString(),
  };

  try {
    final response = await http.post(Uri.parse(url),
        headers: {
          "Content-Type": "application/x-www-form-urlencoded",
          'Authorization': 'Bearer $token'
        },
        body: body);

    final data = json.decode(response.body);

    int code = data['response']['code'];
    String status = data['response']['status'];

    if (code == 400) {
      if (status == "no-orders") {
        getOrders.onEmpty();
        getOrders.onNoNextPage();
        getOrders.onLoadfinished();
        return;
      }
      if (status == "please-login" || status == "session-expired") {
        getOrders.onNotLoggedIn();
        getOrders.onLoadfinished();
        return;
      }
      if (status == "app-expired") {
        getOrders.onAppNotActive(data['info']['appName']);
        getOrders.onLoadfinished();
        return;
      }

      getOrders.onError(status);
      getOrders.onLoadfinished();
      return;
    }

    Map<String, dynamic> info = data['info'];

    if (info['nextPage']['status']) {
      getOrders.onNextPage(info['nextPage']['page']);
    } else {
      getOrders.onNoNextPage();
    }

    if (info['totalItemCount'] == 0) {
      getOrders.onEmpty();
      getOrders.onLoadfinished();
      return;
    }

    getOrders.onResult(
      info['appName'],
      info['totalItemCount'],
      info['itemsInThisPage'],
      info['itemsPerPage'],
      data['orders'],
    );
    getOrders.onLoadfinished();
  } catch (e) {
    getOrders.onError(e.toString());
    getOrders.onLoadfinished();
  }
}