editPassenger method
Implementation
Future<bool> editPassenger({String? passengerType, bool fromDialog = false}) async {
if (!hasEdited) {
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message: "Please make at least one change to update passenger.",
);
return false;
} else if (!isValidPassengerFields()) {
return false;
} else {
if (isInvalidType(passengerType)) {
return false;
}
try {
//dont remove , added on purpose
loadingDialog();
Map<String, String> data = {};
final type = getTypeFromDob(dobController.text);
if (firstNameController.text != specificPassenger.value.firstName) {
data["firstName"] = firstNameController.text;
}
if (middleNameController.text != (specificPassenger.value.middleName ?? '')) {
data["middleName"] = middleNameController.text;
}
if (lastNameController.text != specificPassenger.value.lastName) {
data["lastName"] = lastNameController.text;
}
if (passportNumberController.text != specificPassenger.value.passportNo) {
data["passportNo"] = passportNumberController.text;
}
if ((Constants.ALL_COUNTRIES_ALPHA_2[selectedPassportCountry.value] ??
'') != specificPassenger.value.passportIssuingCountry) {
data["passportIssuingCountry"] = Constants.ALL_COUNTRIES_ALPHA_2[selectedPassportCountry.value] ??
'';
}
if (passportExpiryController.text != specificPassenger.value.passportExpiry?.split('T').first) {
data["passportExpiry"] = passportExpiryController.text;
}
if (selectedNationality.value != specificPassenger.value.nationality) {
data["nationality"] = selectedNationality.value;
}
if (type != "INFANT" && phoneNumber.value != (specificPassenger.value.phone ?? '')) {
data["phone"] = phoneNumber.value;
}
if (type != "INFANT" && emailController.text != (specificPassenger.value.email ?? '')) {
data["email"] = emailController.text;
}
if (dobController.text != specificPassenger.value.dob?.split('T').first) {
data["dob"] = dobController.text;
data["type"] = type;
}
var response = await Requests.getDio(showLoadingDialog: false)
.patch("passengers/${specificPassenger.value.id}", data: data);
if (response.statusCode == 200) {
selectedPassengers.clear();
Passengers edited = Passengers.fromJson(response.data['data']);
selectedPassengers.add(edited);
selectedPassengers.refresh();
isEdit.value = false;
closeDialog();
if (fromDialog) {
closeDialog();
}
CustomFlashWidget.showFlashMessage(
title: "Success",
message: "Passenger Updated Successfully",
type: FlashType.success);
await getPassengers();
clearAddPassengerFields();
return true;
} else if (response.data
.toString()
.contains("Value of passportExpiry can not be before today.")) {
closeDialog();
if (fromDialog) {
closeDialog();
}
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message:
"You can't select today's date for passport expiry. Please choose a future date.",
);
return false;
} else {
closeDialog();
if (fromDialog) {
closeDialog();
}
log("Error editing passenger e: ${response.data.toString()}");
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message: response.data?["message"] ??
response.data?["errorCode"] ??
response.data?["message"]?["errorCode"] ??
"Something unexpected happened. Please try again later!",
);
return false;
}
} catch (e) {
closeDialog();
log("Error editing passenger e: ${e.toString()}");
CustomFlashWidget.showFlashMessage(
type: FlashType.error,
title: "Error",
message: "Something unexpected happened. Please try again later!",
);
return false;
}
}
}