exclusiveRateRequest method

Future<void> exclusiveRateRequest()

Implementation

Future<void> exclusiveRateRequest()  async {
    if((rateRequestRemaining <= 0) && (searchCreditRemaining < searchCreditNeededForRateRequest)){
      closeDialog();
      await InsufficientSearchCreditsDialog.show(fromRateRequest: true);
      return;
    }

    if(checkBookingisWithIn12Hours(selectedExclusiveOffer.value?.departureTrip?.flights?.firstOrNull?.departureDate ?? '', selectedExclusiveOffer.value?.departureTrip?.flights?.firstOrNull?.departureTime ?? '').isLowerThan(0)){
      await callDependingOnScreen(
        doMobile: () async {
          await openBottomSheet(
            BookingNotPossible(
            goBackToResults: () {
              closeDialog();
              backToDeparture();
            },
            isDialog: false,
           )
          );
        },
        doWeb: () async {
          await openDialog(
            barrierDismissible: false,
            BookingNotPossible(
              goBackToResults: () {
                closeDialog();
                backToDeparture();
            },
            isDialog: true,
           )
          );
        },
      );
      return;
    }

    var data = {
      "offerId": selectedExclusiveOffer.value?.offerId?? '',
      "passengers":selectedPassengers.map((p) => p?.id ?? '').toList(),
      "donationAmount": savedDonation.value
    };

    var response =
        await Requests.getDio().post("booking/v4/rate-request", data: data);
    if (response.statusCode == 200) {
      await authenticationController.getUserProfile();
      await DeepSearchSuccessDialog.show(
        searchCreditAdded: searchCreditTotal,
        searchCreditUsed: searchCreditConsumed,
        rateRequestAdded: rateRequestTotal,
        rateRequestUsed: rateRequestConsumed,
        isUsingSearchCredit: (rateRequestTotal - rateRequestConsumed) <= 0,
        goBackToResults: () {
          closeDialog();
          backToDeparture();
        },
        barrierDismissible: false,
      );
    }
    else{
      CustomFlashWidget.showFlashMessage(
        title: "Rate Request Failed",
        message: response.data['message'] ?? "Something unexpected happened",
        type: FlashType.error);
    }
}