addPassenger method

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

Implementation

Future<Passengers?> addPassenger({String? passengerType, bool fromDialog = false}) async {
  if (!isValidPassengerFields()) {
    return null;
  }

  final type = getTypeFromDob(dobController.text);
  if (isInvalidType(passengerType)) {
    return null;
  }

  try {
    Map<String, String> data = {
      "firstName": firstNameController.text,
      "middleName": middleNameController.text,
      "lastName": lastNameController.text,
      "passportNo": passportNumberController.text,
      "gender": selectedGender.value.toLowerCase(),
      "passportIssuingCountry":
          Constants.ALL_COUNTRIES_ALPHA_2[selectedPassportCountry.value] ??
              '',
      "passportExpiry": passportExpiryController.text,
      "nationality": selectedNationality.value,
      "dob": dobController.text,
      "type": type,
    };

    if (type != 'INFANT') {
      if (phoneNumber.isNotEmpty) {
        data["phone"] = phoneNumber.value;
      }

      if (emailController.text.isNotEmpty) {
        data["email"] = emailController.text;
      }
    }

    //dont remove , added on purpose
    loadingDialog();

    var response = await Requests.getDio(showLoadingDialog: false)
        .post("passengers?", data: data);
    if (response.statusCode == 200) {
      Passengers newPassenger = Passengers.fromJson(response.data['data']);
      selectedPassengers.add(newPassenger);
      selectedPassengers.refresh();
      clearAddPassengerFields();
      await getPassengers();

      closeDialog();
      if (fromDialog) {
        closeDialog();
      }
      CustomFlashWidget.showFlashMessage(
        type: FlashType.success,
        title: "Success",
        message: "Passenger Added Successfully",
      );
      return newPassenger;
    } 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 null;
    } else {
      closeDialog();
      log("Error adding 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 null;
    }
  } catch (e) {
    closeDialog();
    log("Error adding passenger e: ${e.toString()}");
    CustomFlashWidget.showFlashMessage(
      type: FlashType.error,
      title: "Error",
      message: "Something unexpected happened. Please try again later!",
    );

    return null;
  }
}