getOrderRulesServiceRequest method

Future<bool> getOrderRulesServiceRequest(
  1. BuildContext context,
  2. List<Map<String, dynamic>> offers
)

Implementation

Future<bool> getOrderRulesServiceRequest(
  BuildContext context,
  List<Map<String, dynamic>> offers,
) async {
  BuildContext context = Get.context!;

  Helper.progressDialog(context, "Please wait..");

  try {
    bool status = false;
    var body = approvalData;
    if (approvalData['orderRules'] == null) {
      approvalData['orderRules'] = {};
    }
    if (approvalData['orderRules']['offers'] == null) {
      approvalData['orderRules']['offers'] = [];
    }
    approvalData['orderRules']['offers'].addAll(offers);
    approvalData['orderRules']['offers'] =
        approvalData['orderRules']['offers']
            .fold<Map<String, dynamic>>({}, (map, offer) {
              map[offer['offerId']] = offer;
              return map;
            })
            .values
            .toList();
    print("Updated approvalData: ${approvalData}");

    String requestTime = "";
    String responseTime = "";
    await ApiClient(
      baseUrl: ApiConstant.baseUrl,
      onFetchRequestTime: (time) {
        requestTime = time;
      },
      onFetchResponseTime: (time) {
        responseTime = time;
      },
      screenName: "approval",
    )
        .getOrderRulesServiceRequest(
      body: body,
      xUserId: SecureStorageService.readSecureData(
        SecureStorageService.xUserId,
      ) ?? "",
    )
        .then((response) async {
      Helper.logEvent(
        "RESPONSE_EVENT",
        success: true,
        endPoint: "${Api.customersList}/${SecureStorageService.readSecureData(
          SecureStorageService.userId,
        )}",
        responseDate: responseTime,
        screenName: "customerManagement",
        requestDate: requestTime,
      );
      Helper.close();
      if (response != null) {
        if (response.transactionId != null) {
          status = true;
          Helper.close();
        } else {
          Helper.messageDialog(
            Get.context!,
            response.responseCode ?? localization.translate("tryAgain"),
            response.responseMessage ??
                localization.translate("somethingWentWrong"),
          );
        }
      }
    }).catchError((error) {
      isLoading.value = false;
      Helper.close();
      ConditionalLogs().customLog("$error");
      if (error is DioException) {
        if (error.response != null &&
            error.response!.data is Map<String, dynamic>) {
          Map<String, dynamic> errorData = error.response!.data;
          String responseCode = errorData["responseCode"] ?? "Unknown Code";
          String responseMessage =
              errorData["responseMessage"] ?? "Something went wrong.";

          // Show dialog with error details
          Helper.messageDialog(
            Get.context!,
            responseCode,
            responseMessage,
          );
        } else {
          // Show generic error message if no response data is available
          Helper.messageDialog(
            Get.context!,
            localization.translate("error"),
            localization.translate("somethingWentWrong"),
          );
        }
      } else {
        // Show generic error message for non-Dio errors
        Helper.messageDialog(
          Get.context!,
          localization.translate("error"),
          error.toString(),
        );
      }
    });
    return status;
  } catch (err, stacktrace) {
    ConditionalLogs().customLog("$stacktrace");

    Helper.close();
    return false;
  }
}