refreshOrderPending method

dynamic refreshOrderPending(
  1. BuildContext context, {
  2. required String khqrTransactionId,
  3. required String orderId,
  4. required Function onStatusChange,
})

Implementation

refreshOrderPending(
  BuildContext context, {
  required String khqrTransactionId,
  required String orderId,
  required Function onStatusChange,
}) async {
  Helper.progressDialog(context, "Please wait..");
  String requestTime = DateTime.now().toString();
  try {
    dio
        .put(
      '${ApiConstant.posBFF}mbaas-core-services-svc/payment-gateway/action:refresh',
      data: json.encode(
        {
          "khqrTransactionId": khqrTransactionId,
          "orderId": orderId,
        },
      ),
      options: Options(
        headers: {
          'X-User-Id': SecureStorageService.readSecureData(
            SecureStorageService.xUserId,
          ),
          'X-User-Name': SecureStorageService.readSecureData(
            SecureStorageService.xUserName,
          ),
          'Accept-Language': storage.read("selected_language") ?? "en",
          'x-request-txn-id': UDID.uDID,
          'x-trace-id': UDID.uDIDTraceId,
          "Authorization": "Bearer ${SecureStorageService.readSecureData(
            SecureStorageService.accessToken,
          )}",
        },
      ),
    )
        .then((response) {
      UDID.setTraceId(
        response.headers.map[Constants.traceIdKey]?[0] ?? "",
      );
      Helper.logEvent(
        "RESPONSE_EVENT",
        success: true,
        endPoint: "mbaas-core-services-svc/payment-gateway/action:refresh",
        responseDate: DateTime.now().toString(),
        screenName: "stockOrderHistory",
        buttonName: "orderPendingRefreshButton",
        requestDate: requestTime,
      );
      Helper.close();
      if (response.data != null &&
          response.data.toString().trim().isNotEmpty) {
        final refreshResponse = PendingOrderRefreshResponse.fromJson(
          response.data is Map ? response.data : json.decode(response.data),
        );

        // Check the status
        if (refreshResponse.status?.trim().toUpperCase() == 'POS200' &&
            refreshResponse.data?.isStatusChanged == true) {
          onStatusChange();
          //TODO - Update Data List of Order Pending API Below
        } else {
          final hasError = refreshResponse.errors?.isNotEmpty == true;
          final error = hasError ? refreshResponse.errors![0] : null;
          Helper.popUpDialog(
            isPayment: true,
            headingText: error?.code ??
                localization.translate("sorryPaymentRequestFailed"),
            subHeading: error?.localeMessage ??
                localization.translate("orderIsNotSuccess"),
            onButtonTap: Helper.close,
          );
        }
      }
    }).catchError((error) {
      ConditionalLogs().customLog("$error");
      Helper.close();

      if (error is DioException) {
        UDID.setTraceId(
          error.response?.headers.map[Constants.traceIdKey]
                  ?.elementAtOrNull(0) ??
              "",
        );
        Helper.logEvent(
          "ERROR_EVENT",
          failure: true,
          requestDate: requestTime,
          endPoint: "/payment-gateway/action:refresh",
          responseDate: DateTime.now().toString(),
          screenName: "stockOrderHistory",
          buttonName: "orderPendingRefreshButton",
          error: error,
        );
      }
      MainController mainController = Get.put(MainController());
      mainController.showErrorPopup();
    });
  } catch (err, stacktrace) {
    ConditionalLogs().customLog("$stacktrace");
    Helper.close();

    if (err is DioException) {
      UDID.setTraceId(
        err.response?.headers.map[Constants.traceIdKey]?.elementAtOrNull(0) ??
            "",
      );
      Helper.logEvent(
        "ERROR_EVENT",
        failure: true,
        requestDate: requestTime,
        endPoint: "/payment-gateway/action:refresh",
        responseDate: DateTime.now().toString(),
        screenName: "stockOrderHistory",
        buttonName: "orderPendingRefreshButton",
        error: err,
      );
    }
  }
}