-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApplication.java
More file actions
70 lines (64 loc) · 2.21 KB
/
Application.java
File metadata and controls
70 lines (64 loc) · 2.21 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
import java.util.NoSuchElementException;
import domain.Bill;
import domain.PayType;
import service.CafeOrderService;
import view.InputView;
import view.OutputView;
public class Application {
final static int ORDER = 1;
final static int PAY = 2;
final static int STOP = 3;
// TODO 구현 진행
public static void main(String[] args) {
OutputView.printMain();
final CafeOrderService cafeOrderService = new CafeOrderService();
int selectedFunction = InputView.inputFunction();
while (selectedFunction != STOP) {
if (selectedFunction == ORDER) {
orderMenu(cafeOrderService);
}
if (selectedFunction == PAY) {
payOrders(cafeOrderService);
}
if (!cafeOrderService.isValidFunction(selectedFunction, STOP, ORDER)) {
throw new NoSuchElementException("해당 기능은 존재하지 않습니다.");
}
OutputView.printMain();
selectedFunction = InputView.inputFunction();
}
}
private static void payOrders(CafeOrderService cafeOrderService) {
OutputView.printTables(cafeOrderService);
int tableNumber = InputView.inputPayTableNumber();
if (!cafeOrderService.checkOrderedTable(tableNumber)) {
OutputView.printNoOrder();
return;
}
Bill bill = cafeOrderService.getBillByTable(tableNumber);
OutputView.printBill(bill);
OutputView.printPayMessage(tableNumber);
int payTypeNumber = InputView.inputPayType();
PayType payType = cafeOrderService.findPayType(payTypeNumber);
long amountOfPayment = cafeOrderService.getAmountOfPayment(bill, payType);
OutputView.printAmountOfPayment(amountOfPayment);
}
private static void orderMenu(CafeOrderService cafeOrderService) {
OutputView.printTables(cafeOrderService);
int tableNumber = InputView.inputTableNumber();
if (!cafeOrderService.isValidTableNumber(tableNumber)) {
orderMenu(cafeOrderService);
}
OutputView.printMenus();
int menuNumber = InputView.inputMenu();
if (!cafeOrderService.isValidMenuNumber(menuNumber)) {
OutputView.printMenuAlert();
orderMenu(cafeOrderService);
}
int menuCount = InputView.inputCount();
if (!cafeOrderService.checkMaximumCount(tableNumber, menuNumber, menuCount)) {
OutputView.printMaxAlert();
return;
}
cafeOrderService.orderMenu(tableNumber, menuNumber, menuCount);
}
}