callSubmitApi method

Future<void> callSubmitApi(
  1. String cartId,
  2. double totalRetailprice,
  3. double availableCreditLimit
)

Implementation

Future<void> callSubmitApi(String cartId, double totalRetailprice,
    double availableCreditLimit) async {
  BuildContext context = Get.context!;
  if (totalRetailprice > availableCreditLimit) {
    // if (totalRetailprice > availableCreditLimit) {
    Helper.messageDialog(Get.context!, "Can't proceed with submission",
        "Your available credit balance is less than the total amount");
  } else {
    try {
      Helper.progressDialog(context, "Please wait..");
      List<RelatedParty> relatedPart = [];
      relatedPart.add(RelatedParty(
          id: math.Random().nextInt(100) + 50,
          name: storage.read("WAREHOUSE_ID"),
          role: "distributorWarehouseId"));
      relatedPart.add(RelatedParty(
          id: math.Random().nextInt(10),
          name: storage.read("WAREHOUSE_NAME"),
          role: "distributorWarehouseName"));
      CollectStockSubmitRequest request = CollectStockSubmitRequest(
          fieldForceAgentId: fieldForceAgentId,
          fromPartyId: fromPartyId,
          scanbyParty: scanByParty,
          fromPartyType: "DISTRIBUTOR",
          toPartyType: "FIELD_FORCE_AGENT",
          toPartyName: toPartyName,
          toPartyId: toPartyId,
          relatedParty: relatedPart);
      log(request.toJson().toString());
      await ApiClient(
        baseUrl: ApiConstant.posBFF,
        connectTimeout: Constants.defaultSubmitTimeout,
        receiveTimeout: Constants.defaultSubmitTimeout,
      )
          .ownershipTransferForAssets(
              xUserToken: storage.read("ACCESS_TOKEN"),
              body: request,
              type: "SCAN_IN",
              cartId: cartId)
          .then((response) {
        OwnershipChangeModel model = response;
        if (model.status == "POS200") {
          Get.back();
          Get.to(() => CollectStockSuccess(model: model));
        } else {
          Get.back();
          if (model.errors != null) {
            Helper.messageDialog(
                Get.context!,
                model.errors![0].code ?? "Try again!!",
                model.errors![0].localeMessage ?? "Something went wrong");
          }
        }
      }).catchError((error) {
        print(error.toString());
        Get.back();
        if (error.runtimeType == DioException) {
          var response = error as DioException;
          if (response.response?.statusCode == 504) {
            print(
                "error ownershipTransferForAssets: ${response.response?.statusCode}");
            DateTime now = DateTime.now();
            // Convert current time to milliseconds since epoch
            double currentTimeStamp = now.millisecondsSinceEpoch / 1000;
            // Use the existing method to format the date and time
            OwnershipChangeModel model = OwnershipChangeModel();
            Get.to(
              () => CollectStockSuccess(
                model: model,
                isTimeOut: true,
                timestamp: currentTimeStamp,
              ),
            );
            // Handle the 504 status code here
            // Helper.messageDialog(Get.context!, "Gateway Timeout",
            //     "The server took too long to respond. Please try again later.");
          } else {
            print(
              "error ownershipTransferForAssets: ${response.response?.statusCode}",
            );
            MainController mainController = Get.put(MainController());
            mainController.showErrorPopup();
          }
        } else {
          MainController mainController = Get.put(MainController());
          mainController.showErrorPopup();
        }
      });
    } catch (err, stacktrace) {
      Get.close(1);
      print(stacktrace);
    }
  }
}