callCreditLimitValidation method

Future<void> callCreditLimitValidation(
  1. String? serialNum,
  2. String? serialStartRange,
  3. String? serialEndRange,
  4. String? productCode,
)

Implementation

Future<void> callCreditLimitValidation(
    String? serialNum,
    String? serialStartRange,
    String? serialEndRange,
    String? productCode) async {
  BuildContext context = Get.context!;
  Helper.progressDialog(context, "Please wait..");
  try {
    CreditLimitValidationModel model =
        await ApiClient(baseUrl: ApiConstant.posBFF).creditLimitValidation(
            cartId: cartId,
            xRoles: storage.read("XUSER_ID"),
            xUserId: storage.read("XUSER_ID"));

    if (model.status == "POS200") {
      availableCreditBalance.value =
          double.parse(model.data!.creditLimitInfo!.limit!.amount ?? "0.0");
      usedCreditBalance.value =
          double.parse(model.data!.creditLimitInfo!.used!.amount ?? "0.0");
      totalCreditBalance.value = // credit balance
          double.parse(model.data!.creditLimitInfo!.balance!.amount ?? "0.0");
      if (usedCreditBalance.value != 0.0) {
        percentageCreditBalance.value =
            usedCreditBalance.value / availableCreditBalance.value;
      }
      Helper.close();
    } else if (model.status == "POS401" &&
        (serialNum != null || serialStartRange != null)) {
      Helper.close();
      await Helper.messageDialog(
        Get.context!,
        localization.translate("tryAgain"),
        model.errors?[0].localeMessage ?? "",
      );
      callDeleteAssetByIdApi(
          serialNum, serialStartRange, serialEndRange, productCode, true);
    } else {
      Helper.close();
    }
  } catch (err, stacktrace) {
    log(err.toString());
    print(stacktrace);
    MainController mainController = Get.put(MainController());
    mainController.showErrorPopup();
  }
}