-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApplicantController.java
More file actions
91 lines (73 loc) · 3.07 KB
/
Copy pathApplicantController.java
File metadata and controls
91 lines (73 loc) · 3.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
package assignment2002;
import assignment2002.application.ApplicationService;
import assignment2002.user.Applicant;
import assignment2002.user.UserService;
import assignment2002.utils.Data;
import assignment2002.utils.InputUtil;
import assignment2002.utils.ProjectPrinter;
import java.util.Scanner;
public class ApplicantController {
private Applicant applicant;
private ApplicantEnquiryController enquiryController;
public ApplicantController(Applicant applicant) {
this.applicant = applicant;
this.enquiryController = new ApplicantEnquiryController(applicant);
}
public void showMenu() {
Scanner sc = new Scanner(System.in);
boolean run = true;
do {
System.out.println("==== APPLICANT MENU ====");
System.out.println("1: View Available Projects");
System.out.println("2: Apply for a Project");
System.out.println("3: View Application Status");
System.out.println("4: Withdraw Application");
System.out.println("5: Submit Enquiry");
System.out.println("6: View/Edit/Close Enquiries");
System.out.println("7: Change Password");
System.out.println("8: Logout");
int choice = InputUtil.getValidatedIntRange(sc, "Choice: ", 1, 8);
switch (choice) {
case 1 -> viewProjects();
case 2 -> applyToProject(sc);
case 3 -> viewStatus();
case 4 -> ApplicationService.withdraw(applicant);
case 5 -> enquiryController.submitEnquiry(sc);
case 6 -> enquiryController.manageEnquiries(sc);
case 7 -> UserService.resetPasswordPrompt(applicant);
case 8 -> run = false;
default -> System.out.println("Invalid input. Try again.");
}
} while (run);
System.out.println("You have logged out.");
}
private void viewProjects() {
ProjectPrinter.viewProjectsForApplicant(applicant, Data.btoList);
}
private void viewStatus() {
String status = ApplicationService.getApplicationStatus(applicant);
System.out.println("Your current application status: " + status);
}
private void applyToProject(Scanner sc) {
viewProjects();
String projName = InputUtil.getNonEmptyString(sc, "Enter Project Name to apply for: ");
BTOProperty selected = null;
for (BTOProperty p : Data.btoList) {
if (p.getProjectName().equalsIgnoreCase(projName)) {
selected = p;
break;
}
}
if (selected == null) {
System.out.println("Project not found.");
return;
}
String flatType = InputUtil.getNonEmptyString(sc, "Enter flat type (2-Room / 3-Room): ");
boolean success = ApplicationService.apply(applicant, selected, flatType);
if (success) {
System.out.println("Application submitted.");
} else {
System.out.println("Application failed.");
}
}
}