diff options
3 files changed, 115 insertions, 1 deletions
diff --git a/src/main/java/design/controller/userinput/menus/LeageMenu.java b/src/main/java/design/controller/userinput/menus/LeageMenu.java new file mode 100644 index 0000000..d9afa91 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/LeageMenu.java @@ -0,0 +1,30 @@ +package design.controller.userinput.menus; + +import design.controller.userinput.Menu; +import design.controller.userinput.MenuOption; +import design.model.League; + +import java.util.ArrayList; +import java.util.List; + +public class LeageMenu extends Menu { + private final League league; + + public LeageMenu(League league) { + this.league = league; + } + + @Override + public String getTitle() { + return "League Menu"; + } + + @Override + public List<MenuOption> getMenuOptions() { + List<MenuOption> options = new ArrayList<>(); + options.add(new MenuOption("statistics...", () -> {})); + options.add(new MenuOption("leaderboard...", () -> {})); + options.add(new MenuOption("log round...", () -> {})); + return options; + } +} diff --git a/src/main/java/design/controller/userinput/menus/MainMenu.java b/src/main/java/design/controller/userinput/menus/MainMenu.java index 7522ceb..e476997 100644 --- a/src/main/java/design/controller/userinput/menus/MainMenu.java +++ b/src/main/java/design/controller/userinput/menus/MainMenu.java @@ -19,7 +19,8 @@ public class MainMenu extends Menu { new MenuOption("manage courses...", () -> new ManageCourses().present()), new MenuOption("manage clubs...", () -> new ManageClubs().present()), new MenuOption("statistics...", () -> new StatisticsMenu().present()), - new MenuOption("log round...", () -> new HolePlayMenu().present()) + new MenuOption("log round...", () -> new HolePlayMenu().present()), + new MenuOption("League play...", () -> new SelectLeague().present()) ); } } diff --git a/src/main/java/design/controller/userinput/menus/SelectLeague.java b/src/main/java/design/controller/userinput/menus/SelectLeague.java new file mode 100644 index 0000000..08f6c91 --- /dev/null +++ b/src/main/java/design/controller/userinput/menus/SelectLeague.java @@ -0,0 +1,83 @@ +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<MenuOption> getMenuOptions() { + List<MenuOption> options = new ArrayList<>(); + for (League l : LeagueDatabase.instance().getLeagues()) { + options.add(new MenuOption(l.getName(), () -> { + 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("<create>", 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(); + } +} |
