import java.util.Scanner;

/**
 * A simple kiosk app to demonstrate the Boolean methods 
 *
 * @author Nikita Neveditsin
 * @version 1.0
 */
public class TicketKioskMethods {
    public static final Scanner KBD = new Scanner(System.in);


    public static void main(String[] args) {
        // create variables
        String destination;
        String answer;
        double amount = 0.00;

        // welcome customer
        System.out.println("\n\nWelcome to the Ticket Kiosk!\n----------"
                + "------------------\n");

        // ask for destination with validation
        System.out.print("Please enter your destination: ");
        destination = KBD.nextLine();
        while (!isValidDestination(destination)) {
            System.out.println("Invalid destination."
                    + " Please enter a valid Canadian city.");
            System.out.print("Please enter your destination: ");
            destination = KBD.nextLine();
        }

        System.out.println("You've selected: " + destination);
        amount += 2.50;  // base fare

        // ask if want a return ticket
        System.out.print("Would you like a return ticket? (yes/no): ");
        answer = KBD.nextLine();
        while (!answer.equalsIgnoreCase("yes") &&
                !answer.equalsIgnoreCase("no")) {
            System.out.print("Please answer Yes or No: ");
            answer = KBD.nextLine();
        }

        if (answer.equalsIgnoreCase("yes")) {
            System.out.println("Return ticket added.");
            amount += 2.50;
        }

        // report back order and total amount owed
        System.out.println("\nTotal amount owed: $" + amount + ".\n");
        System.out.println("Thank you for using the Ticket Kiosk!\n");
    }

    // Method to check if the destination is a valid Canadian city
    public static boolean isValidDestination(String destination) {
        if (destination.equalsIgnoreCase("Toronto") ||
            destination.equalsIgnoreCase("Vancouver") ||
            destination.equalsIgnoreCase("Montreal") ||
            destination.equalsIgnoreCase("Calgary") ||
            destination.equalsIgnoreCase("Ottawa") ||
            destination.equalsIgnoreCase("Edmonton") ||
            destination.equalsIgnoreCase("Winnipeg") ||
            destination.equalsIgnoreCase("Quebec City")){
            return true;
        }
                    
        return false;
    }
}
