-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.java
More file actions
197 lines (181 loc) · 8.25 KB
/
Copy pathMain.java
File metadata and controls
197 lines (181 loc) · 8.25 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
import Controller.GadgetController;
import Controller.LoginController;
import Controller.RegisterController;
import Controller.TransactionController;
import Node.GadgetNode;
import Node.UserNode;
import Object.User;
import java.util.*;
public class Main {
public static void main(String[] args) {
GadgetController gadgetController = new GadgetController();
RegisterController registerController = new RegisterController();
LoginController loginController = new LoginController();
TransactionController transactionController = new TransactionController();
showMainMenu(registerController, loginController, gadgetController, transactionController);
}
static void showMainMenu(RegisterController registerController, LoginController loginController,
GadgetController gadgetController, TransactionController transactionController) {
Scanner inp = new Scanner(System.in);
int pilihan;
User loggedInUser = null;
do {
System.out.println("\n===== MAIN MENU =====");
System.out.println("1. Register User");
System.out.println("2. Register Admin");
System.out.println("3. Login");
System.out.println("0. Exit");
System.out.print("Masukkan Pilihanmu: ");
pilihan = inp.nextInt();
inp.nextLine();
switch (pilihan) {
case 1:
registerUser(inp, registerController);
break;
case 2:
registerAdmin(inp, registerController);
break;
case 3:
loginController.loadRegisteredUser(registerController);
loggedInUser = performLogin(inp, loginController);
if (loggedInUser != null) {
if (User.Role.Admin.equals(loggedInUser.getRole())) {
showAdminMenu(inp, loggedInUser, registerController, gadgetController, transactionController);
} else {
showUserMenu(inp, loggedInUser, loginController, gadgetController, transactionController);
}
}
break;
case 0:
System.out.println("Exiting the system. Goodbye!");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
} while (pilihan != 0);
}
private static void showAdminMenu(Scanner inp, User admin, RegisterController registerController,
GadgetController gadgetController, TransactionController transactionController) {
int choice;
do {
System.out.println("\n===== ADMIN MENU =====");
System.out.println("1. View All Registered Users");
System.out.println("2. Add Gadget");
System.out.println("3. View All Transactions");
System.out.println("0. Logout");
System.out.print("Enter your choice: ");
choice = inp.nextInt();
inp.nextLine();
switch (choice) {
case 1:
System.out.println("----- Registered Users -----");
registerController.viewAllUsers();
break;
case 2:
addGadget(inp, gadgetController);
break;
case 3:
System.out.println("----- History Transaksi -----");
transactionController.viewAllTransaction();
break;
case 0:
System.out.println("Logging out...");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
} while (choice != 0);
}
private static void showUserMenu(Scanner inp, User user, LoginController loginController,
GadgetController gadgetController, TransactionController transactionController) {
int choice;
do {
System.out.println("\n===== USER MENU =====");
System.out.println("1. View Available Gadgets");
System.out.println("2. Buy Gadgets");
System.out.println("3. View Transaction History");
System.out.println("0. Logout");
System.out.print("Enter your choice: ");
choice = inp.nextInt();
inp.nextLine();
switch (choice) {
case 1:
System.out.println("----- Available Gadgets -----");
gadgetController.viewAllGadgets();
break;
case 2:
performPurchase(inp, user, loginController, gadgetController, transactionController);
break;
case 3:
System.out.println("----- History Transaksi -----");
transactionController.viewAllTransaction();
break;
case 0:
System.out.println("Logging out...");
break;
default:
System.out.println("Invalid choice. Please try again.");
}
} while (choice != 0);
}
private static void registerUser(Scanner inp, RegisterController registerController) {
System.out.print("Enter username: ");
String username = inp.nextLine();
System.out.print("Enter email: ");
String email = inp.nextLine();
System.out.print("Enter password: ");
String password = inp.nextLine();
registerController.createAcoount(username, email, password);
}
private static void registerAdmin(Scanner inp, RegisterController registerController) {
System.out.print("Enter admin username: ");
String adminUsername = inp.nextLine();
System.out.print("Enter admin email: ");
String adminEmail = inp.nextLine();
System.out.print("Enter admin password: ");
String adminPassword = inp.nextLine();
registerController.createAcoountAdmin(adminUsername, adminEmail, adminPassword);
}
private static User performLogin(Scanner inp, LoginController loginController) {
System.out.print("Enter email: ");
String loginEmail = inp.nextLine();
System.out.print("Enter password: ");
String loginPassword = inp.nextLine();
return loginController.Login(loginEmail, loginPassword);
}
private static void addGadget(Scanner inp, GadgetController gadgetController) {
System.out.print("Enter gadget name: ");
String gadgetName = inp.nextLine();
System.out.print("Enter gadget price: ");
double price = inp.nextDouble();
System.out.print("Enter gadget stock: ");
int stock = inp.nextInt();
gadgetController.creategadget(gadgetName, price, stock);
System.out.println("Gadget added successfully!");
}
private static void performPurchase(Scanner inp, User user, LoginController loginController,
GadgetController gadgetController, TransactionController transactionController) {
System.out.println("----- Beli Gadget -----");
gadgetController.viewAllGadgets();
System.out.print("Enter gadget name: ");
String gadgetName = inp.nextLine();
System.out.print("Enter how much you wanted to buy: ");
int stock = inp.nextInt();
boolean purchaseSuccess = gadgetController.reduceGadgetStock(gadgetName, stock);
if (purchaseSuccess) {
GadgetNode gadgetNode = gadgetController.gadgetManager.findGadgetNode(gadgetName);
UserNode userNode = loginController.findUserNode(user.getEmail());
if (gadgetNode != null && userNode != null) {
transactionController.createTransaction(
userNode,
gadgetNode,
stock,
gadgetNode.data.getPrice() * stock
);
System.out.println("Gadget bought successfully!");
}
} else {
System.out.println("Purchase failed. Please check stock availability.");
}
}
}