diff options
| author | sowgro <tpoke.ferrari@gmail.com> | 2025-11-13 08:20:04 -0500 |
|---|---|---|
| committer | sowgro <tpoke.ferrari@gmail.com> | 2025-11-13 08:20:04 -0500 |
| commit | c1bf473e5c6735ae00c3fbfec0f9d16c421387db (patch) | |
| tree | 703e1bfaf95d274ff10d9946e63d2e4e39ae9d6f /src/main/java/design/controller/userinput | |
| parent | c8e3d79f09670a94c0a2f503ca6c78f9913a1669 (diff) | |
| parent | af23c48329b749ba3d0a4fcd841723d55a16ae95 (diff) | |
| download | designproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.tar.gz designproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.tar.bz2 designproject-design-6-c1bf473e5c6735ae00c3fbfec0f9d16c421387db.zip | |
Merge remote-tracking branch 'origin/league-model'
# Conflicts:
# src/main/java/design/controller/userinput/menus/MainMenu.java
# src/main/java/design/model/Golfer.java
# src/test/java/design/model/ClubTest.java
# src/test/java/design/model/GolferTest.java
Diffstat (limited to 'src/main/java/design/controller/userinput')
4 files changed, 117 insertions, 3 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 8a30258..75ad88f 100644 --- a/src/main/java/design/controller/userinput/menus/MainMenu.java +++ b/src/main/java/design/controller/userinput/menus/MainMenu.java @@ -38,8 +38,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/ManageClubs.java b/src/main/java/design/controller/userinput/menus/ManageClubs.java index d186cac..9c23433 100644 --- a/src/main/java/design/controller/userinput/menus/ManageClubs.java +++ b/src/main/java/design/controller/userinput/menus/ManageClubs.java @@ -65,7 +65,8 @@ public class ManageClubs extends Menu { selector.present(); Club.ClubType type = selector.getResult(); - golfer.addClub(manufacture, nickname, type); + Club c = new Club(manufacture, nickname, type); + golfer.addClub(c); // Add club to JSON try { 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(); + } +} |
