addToCartVariant method

void addToCartVariant(
  1. String itemId,
  2. int quantity,
  3. String variantTag,
  4. AddToCartVariant addToCartVariant,
)

Implementation

void addToCartVariant(String itemId, int quantity, String variantTag,
    AddToCartVariant addToCartVariant) async {
  addToCartVariant.onLoading();

  final url = "https://api.plentrasphere.com/v2/client/index.php";
  final body = {
    'class': 'cart',
    "appKey": appKey,
    "action": "addToCart",
    "itemId": itemId,
    "quantity": quantity.toString(),
    "variantTag": variantTag,
  };

  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 == "session-expired" || status == "please-login") {
        addToCartVariant.onNotLoggedIn();
        addToCartVariant.onLoadfinished();
        return;
      }

      if (status == "app-expired") {
        addToCartVariant.onAppNotActive(data['info']['appName']);
        addToCartVariant.onLoadfinished();
        return;
      }

      if (status == "item-already-added") {
        addToCartVariant.onItemAlreadyAdded();
        addToCartVariant.onLoadfinished();
        return;
      }

      if (status == "not-in-stock") {
        addToCartVariant.onVariantNotInStock();
        addToCartVariant.onLoadfinished();
        return;
      }

      if (status == "cart-max-limit-reached") {
        addToCartVariant.onCartMaxLimitReached();
        addToCartVariant.onLoadfinished();
        return;
      }

      if (status == "variant-not-found") {
        addToCartVariant.onVariantNotFound();
        addToCartVariant.onLoadfinished();
        return;
      }

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

    addToCartVariant.onSuccess(status);
    addToCartVariant.onLoadfinished();
  } catch (e) {
    addToCartVariant.onError(e.toString());
    addToCartVariant.onLoadfinished();
  }
}