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);
}
}