editPassenger method

Future<bool> editPassenger({
  1. String? passengerType,
  2. bool fromDialog = false,
})

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