package design.controller.userinput.menus; import design.controller.userinput.Menu; import design.controller.userinput.MenuOption; import design.model.Golfer; import design.model.League; import design.model.ScrambleLeague; import design.model.StrokeLeague; import design.persistence.LeagueDatabase; import design.runtime.Session; import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class SelectLeague extends Menu { private final Golfer golfer = Session.getCurrentGolfer(); @Override public String getTitle() { return "Select League"; } @Override public List getMenuOptions() { List options = new ArrayList<>(); for (League l : LeagueDatabase.instance().getLeagues()) { options.add(new MenuOption(l.toString(), () -> { if (l instanceof ScrambleLeague sl && sl.locateTeam(golfer) == null) { Scanner sc = new Scanner(System.in); System.out.print("You are not a member of a team for this league. Would you like to create one (Y/n): "); if (sc.next().equals("n")) { new MainMenu().present(); } else { // create team } } else { new LeageMenu(l).present(); } })); } options.add(new MenuOption("", this::createLeagueWizard)); return options; } private void createLeagueWizard() { try { Scanner scanner = new Scanner(System.in); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); System.out.print("Enter league name: "); String name = scanner.nextLine(); System.out.print("Enter registration date (yyyy-MM-dd): "); Date registrationDate = dateFormat.parse(scanner.nextLine()); System.out.print("Enter start date (yyyy-MM-dd): "); Date startDate = dateFormat.parse(scanner.nextLine()); System.out.print("Enter end date (yyyy-MM-dd): "); Date endDate = dateFormat.parse(scanner.nextLine()); Golfer owner = Session.getCurrentGolfer(); System.out.print("Enter format (stroke/scramble): "); String scramble = scanner.nextLine(); League league; switch (scramble) { case "scramble" -> league = new ScrambleLeague(name, registrationDate, startDate, endDate, owner); case "stroke" -> league = new StrokeLeague(name, registrationDate, startDate, endDate, owner); default -> throw new RuntimeException(); } LeagueDatabase.instance().addLeague(league); } catch (ParseException ex) { System.out.println("Invalid format"); } catch (IOException ex) { System.out.println("Error writing to file"); } this.present(); } }