summaryrefslogtreecommitdiff
path: root/src/main/java/design/controller/userinput/menus/SelectUser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/design/controller/userinput/menus/SelectUser.java')
-rw-r--r--src/main/java/design/controller/userinput/menus/SelectUser.java60
1 files changed, 49 insertions, 11 deletions
diff --git a/src/main/java/design/controller/userinput/menus/SelectUser.java b/src/main/java/design/controller/userinput/menus/SelectUser.java
index 2f1a867..ffae559 100644
--- a/src/main/java/design/controller/userinput/menus/SelectUser.java
+++ b/src/main/java/design/controller/userinput/menus/SelectUser.java
@@ -1,16 +1,25 @@
package design.controller.userinput.menus;
+import design.controller.userinput.Action;
import design.controller.userinput.Menu;
import design.controller.userinput.MenuOption;
+import design.model.Golfer;
import design.runtime.Session;
import design.persistence.PersonalDatabase;
+import java.io.IOException;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
+import java.util.Scanner;
public class SelectUser extends Menu {
- PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final PersonalDatabase personalDB = PersonalDatabase.INSTANCE;
+ private final Action doAfter;
+ private final Scanner scanner = new Scanner(System.in);
+
+ public SelectUser(Action doAfter) {
+ this.doAfter = doAfter;
+ }
@Override
public String getTitle() {
@@ -19,15 +28,44 @@ public class SelectUser extends Menu {
@Override
public List<MenuOption> getMenuOptions() {
- var l = new ArrayList<MenuOption>();
- // Sets user in Session too
- l.addAll(Arrays.stream(personalDB.getGolfers()).map(i -> new MenuOption(i.getUsername(), (a) -> {
- Session.setCurrentGolfer(i);
- System.out.printf("Loaded user: %s%n", i.getUsername());
- new UserSettings().present();
- })).toList());
- l.add(new MenuOption("<create>", (a) -> {
+ var opts = new ArrayList<MenuOption>();
+
+ for (Golfer i : personalDB.getGolfers()) {
+ MenuOption menuOption = new MenuOption(i.getUsername(), () -> {
+ System.out.print("Enter password: ");
+ var password = scanner.nextLine();
+ if (i.checkPassword(password)) {
+ // Sets user in Session too
+ Session.setCurrentGolfer(i);
+ System.out.printf("Loaded user: %s%n", i.getUsername());
+ doAfter.onAction();
+ } else {
+ System.out.println("Incorrect password. ");
+ this.present();
+ }
+ });
+ opts.add(menuOption);
+ }
+
+ opts.add(new MenuOption("<create>", () -> {
+
+ System.out.print("Enter username: ");
+ var username = scanner.nextLine();
+
+ System.out.print("Enter full name: ");
+ var fullName = scanner.nextLine();
+
+ System.out.print("Enter password: ");
+ var password = scanner.nextLine();
+
+ try {
+ personalDB.addGolfer(new Golfer(fullName, username, password));
+ } catch (IOException ex) {
+ throw new RuntimeException(ex);
+ }
+ this.present();
}));
- return l;
+
+ return opts;
}
}