grnSubmit method

Future<GrnSubmitModel?> grnSubmit(
  1. String orderId,
  2. String transferOrderId,
  3. String id
)

Implementation

Future<GrnSubmitModel?> grnSubmit(
  String orderId,
  String transferOrderId,
  String id,
) async {
  String requestTime = "";
  String responseTime = "";
  try {
    Helper.progressDialog(Get.context!, "");
    var body = {
      "id": id,
      "dealerId": SecureStorageService.readSecureData(
            SecureStorageService.partnerIdLogin,
          ) ??
          "",
      "content": [],
      "all": true,
      "rejectReason": null,
      "grRejectReasonType": null
    };
    GrnSubmitModel model = await ApiClient(
      baseUrl: ApiConstant.posBFF,
      receiveTimeout: Constants.defaultSubmitTimeout,
      connectTimeout: Constants.defaultSubmitTimeout,
      onFetchRequestTime: (time) {
        requestTime = time;
      },
      onFetchResponseTime: (time) {
        responseTime = time;
      },
      screenName: "orderHistoryDetails",
      buttonName: "submit",
    ).grnSubmit(
      body: json.encode(body),
      transferOrderId: transferOrderId,
      status: "APPROVE",
      xUserName: SecureStorageService.readSecureData(
        SecureStorageService.xUserId,
      ),
      xUserId: SecureStorageService.readSecureData(
        SecureStorageService.xUserId,
      ),
    );

    if (model.status == "POS200") {
      Get.back();
      Helper.logEvent(
        "RESPONSE_EVENT",
        success: true,
        endPoint: "${Api.grnSubmit}/$transferOrderId/action:APPROVE",
        responseDate: responseTime,
        screenName: "orderHistoryDetails",
        buttonName: "submit",
        requestDate: requestTime,
        transactionId: orderId,
      );
      return model;
    } else {
      Get.back();
      Helper.logEvent(
        "RESPONSE_EVENT",
        failure: true,
        endPoint: "${Api.grnSubmit}/$transferOrderId/action:APPROVE",
        responseDate: responseTime,
        screenName: "orderHistoryDetails",
        buttonName: "submit",
        requestDate: requestTime,
        transactionId: orderId,
      );
      // if (model.errors != null) {
      //   Helper.messageDialog(
      //       Get.context!,
      //       model.errors![0].code ?? "Try again!!",
      //       model.errors![0].localeMessage ?? "Something went wrong");
      // }
      return model;
    }
  } catch (err, stacktrace) {
    Get.back();
    ConditionalLogs().customLog("$err");
    ConditionalLogs().customLog("$stacktrace");
    if (err is DioException) {
      UDID.setTraceId(
        err.response?.headers.map[Constants.traceIdKey]?[0] ?? "",
      );
      Helper.logEvent(
        "ERROR_EVENT",
        failure: true,
        requestDate: requestTime,
        endPoint: "${Api.grnSubmit}/$transferOrderId/action:APPROVE",
        responseDate: DateTime.now().toString(),
        screenName: "stockOrder",
        error: err,
      );
    }
    if (err.runtimeType == DioException) {
      var response = err as DioException;
      if (response.response?.statusCode == 504) {
        ConditionalLogs()
            .customLog("error grnSubmit: ${response.response?.statusCode}");
        var transactionId = "-";
        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
        var date = Helper.fromTimeStamptoDateTime(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 {
        ConditionalLogs()
            .customLog("error grnSubmit: ${response.response?.statusCode}");
        MainController mainController = Get.put(MainController());
        mainController.showErrorPopup();
      }
    } else {
      MainController mainController = Get.put(MainController());
      mainController.showErrorPopup();
    }
    return null;
  }
}