getAddresses method

void getAddresses(
  1. GetAddresses getAddresses
)

Implementation

void getAddresses(GetAddresses getAddresses) async {
  getAddresses.onLoading();

  final url = "https://api.plentrasphere.com/v2/client/index.php";
  final body = {
    'class': 'address',
    "appKey": appKey,
    "action": "getAddresses",
  };

  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-addresses-available") {
        getAddresses.onEmpty();
        getAddresses.onLoadfinished();
        return;
      }
      if (status == "session-expired" || status == "please-login") {
        getAddresses.onNotLoggedIn();
        getAddresses.onLoadfinished();
        return;
      }
      if (status == "app-expired") {
        getAddresses.onAppNotActive(data['info']['appName']);
        getAddresses.onLoadfinished();
        return;
      }

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

    List<Map<String, dynamic>> addresses = [];
    data['addresses'].forEach((address) {
      addresses.add({
        "addressId": address['addressId'],
        "name": address['addressInfo']['name'],
        "address": address['addressInfo']['address'],
        "city": address['addressInfo']['city'],
        "state": address['addressInfo']['state'],
        "postalCode": address['addressInfo']['postalCode'],
        "phoneNumber": address['addressInfo']['phoneNumber'],
        "lat": address['addressInfo']['lat'],
        "lng": address['addressInfo']['lng'],
        "default": address['default'],
      });
    });

    getAddresses.onResult(
        data['info']['appName'], data['info']['itemCount'], addresses);
    getAddresses.onLoadfinished();
  } catch (e) {
    getAddresses.onError(e.toString());
    getAddresses.onLoadfinished();
  }
}