callARMMultipleStockDeliveryScanApi method

Future<void> callARMMultipleStockDeliveryScanApi(
  1. String? serialNum,
  2. String? serialStartRange,
  3. String? serialEndRange,
  4. int pageNo,
  5. String requestToPartnerId,
)

Implementation

Future<void> callARMMultipleStockDeliveryScanApi(
    String? serialNum,
    String? serialStartRange,
    String? serialEndRange,
    int pageNo,
    String requestToPartnerId) async {
  BuildContext context = Get.context!;
  WidgetsBinding.instance.addPostFrameCallback((_) {
    Helper.progressDialog(context, "Please wait..");
  });
  // pageNum = pageNo;
  passedAssets = <PassedAssets>[].obs;
  var action = "";
  if (currentScan == ScanType.sellThru) {
    action = "INV_SELL_THRU_DELIVERY";
  } else if (currentScan == ScanType.collectStock) {
    action = "INV_SCAN_IN_ALLOCATION";
  } else if (currentScan == ScanType.spotSellThru) {
    action = "INV_SCAN_IN_ALLOCATION";
  } else {
    action = "INV_SELL_THRU_DELIVERY";
  }
  try {
    StockDeliveryScanModel model =
        await ApiClient(baseUrl: ApiConstant.armBaseUrl).validateAssetsV2(
            xUserId: storage.read("XUSER_ID"),
            action: action,
            assetIds: checkValue(serialNum),
            pageNo: pageNo,
            assetStartRange: checkValue(serialStartRange),
            assetEndRange: checkValue(serialEndRange),
            fromPartnerId: requestToPartnerId);
    Get.back();
    isLoadingAssets.value = false;
    if (model.status == true) {
      var isValidated = false;
      if (model.data != null &&
          model.data!.passedAssets != null &&
          model.data!.passedAssets!.isNotEmpty) {
        // if (pageNo == 1) {
        if (model.data!.passedAssets!.length == 1) {
          if (currentScan == ScanType.sellThru) {
            productDataScannedList.forEach((element) {
              if (element.productCode ==
                  model.data!.passedAssets![0].productCode) {
                isValidated = true;
              }
            });

            if (isValidated) {
              if (cartId.isNotEmpty) {
                callUpdateCartApi(
                    serialNum, serialStartRange, serialEndRange, null);
              } else {
                callAddToCartApi(
                    serialNum, serialStartRange, serialEndRange, null);
              }
            }
          } else {
            if (cartId.isNotEmpty) {
              callUpdateCartApi(
                  serialNum, serialStartRange, serialEndRange, null);
            } else {
              callAddToCartApi(
                  serialNum, serialStartRange, serialEndRange, null);
            }
          }
          isValidated = false;
        } else {
          passedAssets.addAll(model.data!.passedAssets!);
          // if (pageNo == 1) {
          ProductsBottomsheet().multipleProductsBottomsheet(
              context,
              localization.translate("selectProductUnderSerial"),
              serialNum,
              serialStartRange,
              serialEndRange,
              requestToPartnerId);
          // }
        }
        // }
      }
    } else {
      if (model.errors != null) {
        Helper.messageDialog(
            Get.context!,
            model.errors![0].errorCode ?? "Try again!!",
            model.errors![0].errorDescription ?? "Something went wrong");
      }
    }
  } catch (err, stacktrace) {
    isLoadingAssets.value = false;
    Get.back();
    log(err.toString());
    print(stacktrace);
    Helper.messageDialog(Get.context!, "Try Again!!", err.toString());
  }
}