package design.controller.userinput.menus; import design.controller.userinput.Action; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Golfer; import design.runtime.Session; import design.persistence.PersonalDatabase; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class SelectUser extends Menu { private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE; private final Action doAfter; public SelectUser(Action doAfter) { this.doAfter = doAfter; } @Override public String getTitle() { return "select user"; } @Override public List getMenuOptions() { var opts = new ArrayList(); for (Golfer i : personalDB.getGolfers()) { MenuOption menuOption = new MenuOption(i.getUsername(), () -> { // Sets user in Session too Session.setCurrentGolfer(i); System.out.printf("Loaded user: %s%n", i.getUsername()); doAfter.onCommand(); }); opts.add(menuOption); } opts.add(new MenuOption("", () -> { Scanner sc = new Scanner(System.in); System.out.print("Enter username: "); var username = sc.nextLine(); System.out.print("Enter full name: "); var fullName = sc.nextLine(); System.out.print("Enter password: "); var password = sc.nextLine(); try { personalDB.addGolfer(new Golfer(fullName, username, password)); } catch (IOException ex) { throw new RuntimeException(ex); } this.present(); })); return opts; } }