summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-12 12:57:08 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-12 12:57:08 -0500
commitaf23c48329b749ba3d0a4fcd841723d55a16ae95 (patch)
tree5a298359ad1481befbc925b5c3cc8dc96ae486b6 /src/main/java/design/controller/userinput/menus
parent9a0949d31a7a0e8c9c311b07e92852cff867cc66 (diff)
downloaddesignproject-design-6-af23c48329b749ba3d0a4fcd841723d55a16ae95.tar.gz
designproject-design-6-af23c48329b749ba3d0a4fcd841723d55a16ae95.tar.bz2
designproject-design-6-af23c48329b749ba3d0a4fcd841723d55a16ae95.zip
stub out some menus
Diffstat (limited to 'src/main/java/design/controller/userinput/menus')
-rw-r--r--src/main/java/design/controller/userinput/menus/LeageMenu.java30
-rw-r--r--src/main/java/design/controller/userinput/menus/MainMenu.java3
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectLeague.java83
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();
+ }
+}