callARMMultipleGrnScanApi method

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

Implementation

Future<void> callARMMultipleGrnScanApi(
    String? serialNum,
    String? serialStartRange,
    String? serialEndRange,
    int pageNo,
    String requestToPartnerId) async {
  BuildContext context = Get.context!;
  WidgetsBinding.instance.addPostFrameCallback((_) {
    Helper.progressDialog(context, "Please wait..");
  });
  passedAssets = <PassedAssets>[].obs;
  try {
    StockDeliveryScanModel model =
        await ApiClient(baseUrl: ApiConstant.armBaseUrl).validateAssets(
            xUserId: storage.read("XUSER_ID"),
            action: "INV_OPERATOR_STOCK_GR",
            assetIds: serialNum,
            assetStartRange: serialStartRange,
            assetEndRange: 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) {
          var tempIccids = <String>[].obs;
          tempIccids.addAll(scannedIccidList);
          RxList<ProductContentModel> temp = <ProductContentModel>[].obs;
          temp.addAll(productDataScannedList);
          for (int i = 0; i < temp.length; i++) {
            if (model.data != null &&
                model.data!.passedAssets != null &&
                model.data!.passedAssets!.isNotEmpty) {
              if (temp[i].productCode ==
                  model.data!.passedAssets![0].productCode) {
                List<SingleScannedModel> iccidList = [];
                iccidList.addAll(temp[i].iccidList ?? []);
                for (final PassedAssets asset
                    in model.data!.passedAssets ?? []) {
                  tempIccids.add(asset.serialnumber ?? "");
                  iccidList.add(
                    SingleScannedModel(
                      iccid: asset.serialnumber,
                    ),
                  );
                }
                var grnProduct = temp[i].copyWith(
                    iccidList: iccidList, scannedQty: iccidList.length);
                temp[i] = grnProduct;
              }
            }
          }
          scannedIccidList = tempIccids; // assigning all the scanned iccids;
          productDataScannedList.value = [...temp]; // assigning product list
        } 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());
  }
}