summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus/SelectLeague.java
diff options
context:
space:
mode:
authorsowgro <tpoke.ferrari@gmail.com>2025-11-13 08:20:04 -0500
committersowgro <tpoke.ferrari@gmail.com>2025-11-13 08:20:04 -0500
commitc1bf473e5c6735ae00c3fbfec0f9d16c421387db (patch)
tree703e1bfaf95d274ff10d9946e63d2e4e39ae9d6f /src/main/java/design/controller/userinput/menus/SelectLeague.java
parentc8e3d79f09670a94c0a2f503ca6c78f9913a1669 (diff)
parentaf23c48329b749ba3d0a4fcd841723d55a16ae95 (diff)
downloaddesignproject-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/menus/SelectLeague.java')
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectLeague.java83
1 files changed, 83 insertions, 0 deletions
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();
+ }
+}