private static int requestInput(int userInterface) {

    switch (userInterface) {
      case MAIN_MENU:
        System.out.println(
            "Choose one option:\n"
                + "1) List the movies available\n"
                + "2) List the movies with details\n"
                + "3) Search for movies\n"
                + "4) Book ticket\n"
                + "5) Rate,Review and see the top movie\n"
                + "6) View your booking\n"
                + "7) Exit\n");

        // input check
        while (true) {
          if (sc.hasNextInt()) {
            int choice = sc.nextInt();
            if (choice > 0 && choice <= 7) return choice;
            else continue;
          }
          sc.nextLine();
          System.out.println("Invalid Option, choose again: ");
        }

      case CINEPLEX_INTERFACE:
        System.out.println("Choose cineplex:");

        for (int i = 0; i < cineplexList.size(); i++) {

          System.out.printf("%d) ", i + 1);
          System.out.println(cineplexList.get(i).getCineplexName());
        }

        // input check
        while (true) {
          if (sc.hasNextInt()) {
            int choice = sc.nextInt();
            if (choice > 0 && choice <= cineplexList.size() + 1) return choice;
            else continue;
          }
          sc.nextLine();
          System.out.println("Invalid Option, choose again: ");
        }

      case MOVIE_INTERFACE_FOR_SELECTED_CINEPLEX:
        System.out.println("Choose movie:");

        for (int i = 0; i < movieListForSpecificCineplex.size(); i++) {

          System.out.printf("%d) ", i + 1);
          System.out.println(movieListForSpecificCineplex.get(i).getTitle());
        }

        // input check
        while (true) {
          if (sc.hasNextInt()) {
            int choice = sc.nextInt();
            if (choice > 0 && choice <= movieListForSpecificCineplex.size() + 1) return choice;
            else continue;
          }
          sc.nextLine();
          System.out.println("Invalid Option, choose again: ");
        }

      case MOVIE_INTERFACE:
        /*System.out.println("Choose movie:");

        for (int i = 0; i < movieListForAllCineplex.size(); i++){

        	System.out.printf("%d) ", i + 1);
        	System.out.println(movieListForAllCineplex.get(i).getTitle());

        }
        if (sc.hasNextInt()){

        	int choice = sc.nextInt();
        	while (choice >= movieListForAllCineplex.size() + 1){

        		System.out.println("Invalid Option, choose again: ");
        		choice = sc.nextInt();
        	}
        	return choice;

        }
        */
        // print all the movie from ratedmovie

        System.out.println("1) Top 5 Movie based on Rating");
        System.out.println("2) Top 5 movie based on Ticket Sales");
        System.out.println("3) Rate the movie");
        System.out.println("4) Write your review here");
        System.out.println("5) See the review of your favorite movie");
        int choiceOption = sc.nextInt();
        switch (choiceOption) {
          case 1:
            ratedMovie.printTopFiveMovieBasedOnRating();
            break;
          case 2:
            ratedMovie.printTopFiveMovieBasedOnTicket();
            break;
          case 3:
            ratedMovie.printTopFiveMovieBasedOnRating();
            System.out.println("which movie you want to rate");
            int movieRatedOption = sc.nextInt();
            while (true) {
              System.out.println("insert your rating here(1-5)");
              double rating = sc.nextDouble();
              if (rating > 5 || rating < 0) {
                System.out.println("sorry please put the acceptable range\n");
                continue;
              }
              ratedMovie.updateMovieRating(movieRatedOption - 1, rating);
              break;
            }
            break;
          case 4:
            ratedMovie.printNormalMovieList();
            System.out.println("Which movie you want to review");
            int optionReview = sc.nextInt();
            String movieHasRated = ratedMovie.getRatedMovie().get(optionReview - 1).getTitle();
            sc.nextLine();
            System.out.println("Insert your name please");
            String bufferName = sc.nextLine();
            System.out.println("Insert your review here");
            String reviewIns = "Review: \n";
            String reviewInserted = sc.nextLine();
            reviewIns += reviewInserted;
            System.out.println("");

            ratedMovie.updateMovieReview(bufferName, reviewIns, optionReview - 1);
            break;
          case 5:
            ratedMovie.printNormalMovieList();
            System.out.println("which movie you want to see the review");
            int optionReview1 = sc.nextInt();
            ratedMovie.printReview(optionReview1 - 1);
            break;
        }
        ratedMovieDatabase.writeToDatabase("RatedMovie.dat", readMovie);
        System.out.println("");
        return 0;

      case BOOKING_MAIN_INTERFACE:
        String customerEmailAdd;
        int customerPhoneNumber;
        System.out.println("Please enter your name: ");
        sc.nextLine();
        String customerName = sc.nextLine();
        System.out.println("Please enter your phone number: ");
        do {

          customerPhoneNumber = sc.nextInt();

          if (customerPhoneNumber / 10000000 == 8 || customerPhoneNumber / 10000000 == 9) break;
          else System.out.println("Invalid phone number, enter again: ");
          ;

        } while (true);

        System.out.println("Please enter your e-mail address: ");
        do {

          customerEmailAdd = sc.next();

          if (validateEmailAdd(customerEmailAdd) == false)
            System.out.println("Invalid email address, enter again: ");
          else break;

        } while (true);
        // need to check whether there has a people with the same name or not
        boolean pass = true;
        for (int i = 0; i < customerList.size(); i++) {
          customer = (Customer) customerList.get(i);
          if (customer.getEmailAdd().equals(customerEmailAdd)) {
            System.out.println("\nyour account has been in database");
            pass = false;
            break;
          }
        }
        if (pass) {
          customer = new Customer(customerName, customerPhoneNumber, customerEmailAdd);
          customerList.add(customer);
        }
        return 0;

      case RATING_INTERFACE:
        System.out.println("Select movie from list below to rate: ");
        listMovies(0);
        System.out.print("Your selection: ");

        return 0;

      case SELECT_TIMING_INTERFACE:
        System.out.println("Choose timing:");

        for (int i = 0; i < movieScheduleList.size(); i++) {

          System.out.printf("%d) ", i + 1);
          System.out.println(movieScheduleList.get(i).getTime());
        }

        // input check
        while (true) {
          if (sc.hasNextInt()) {
            int choice = sc.nextInt();
            if (choice > 0 && choice <= movieScheduleList.size() + 1) {
              choosenDate = movieScheduleList.get(choice - 1);
              return choice;
            } else continue;
          }
          sc.nextLine();
          System.out.println("Invalid Option, choose again: ");
        }

      case SELECT_AGE_GROUP_INTERFACE:
        System.out.println("Select your age group:");

        System.out.println(
            "1) Child (12 and below)"
                + "\n2) Adult (13-64)"
                + "\n3) Senior Citizen (65 and above)");

        // input check
        while (true) {
          if (sc.hasNextInt()) {
            int choice = sc.nextInt();
            if (choice > 0 && choice <= 4) return choice;
            else continue;
          }
          sc.nextLine();
          System.out.println("Invalid Option, choose again: ");
        }

      case SELECT_SEAT:
        Cinema showingCinema =
            movieChosen.getAvailableMovieDateList().get(choiceDate - 1).getCinema();
        boolean success = true;
        System.out.println(showingCinema.getSeatArrangement());
        System.out.println("Select seat from cinema layout above: ");
        System.out.print("Row (A - J): ");
        String row = sc.next();
        System.out.print("Column (1 - 10): ");
        int column = sc.nextInt();

        while (!showingCinema.requestSeat(row, column)) {

          System.out.println("Seat taken, please select again");
          System.out.print("(To cancel, enter 'z') Row (A - J): ");
          row = sc.next();
          if (row.equals("z")) {
            success = false;
            break;
          }
          System.out.print("Column (1 - 10): ");
          column = sc.nextInt();
        }

        if (success == true) {

          System.out.println("Successfully booked! movie name: " + movieChosen.getTitle());
          customer.assignSeat(row + Integer.toString(column));
          ratedMovie.updateMovieTicket(movieChosen.getTitle());

        } else {

          System.out.println("Cancelled");
        }

        return 0;

      case CHECK_MOVIE_INTERFACE:
        System.out.println("Enter your email address: ");
        do {

          customerEmailAdd = sc.next();

          if (validateEmailAdd(customerEmailAdd) == false)
            System.out.println("Invalid email address, enter again: ");
          else break;

        } while (true);

        Customer currentCustomer = null;

        for (int i = 0; i < customerList.size(); i++) {

          if (((Customer) customerList.get(i)).getEmailAdd().equals(customerEmailAdd)) {

            currentCustomer = (Customer) customerList.get(i);
            break;
          }
        }
        if (currentCustomer != null) {
          ArrayList<String> temp = currentCustomer.getBookedMovieList();
          String currentTransactionId = currentCustomer.getTransactionId();
          printBookedMovie(temp, currentTransactionId);
        } else {
          System.out.println("Sorry database do not save your email, have you ordered yet?\n");
        }
        return 0;

      default:
        return 0;
    }
  }