-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathApplication.java
More file actions
81 lines (75 loc) · 2.65 KB
/
Application.java
File metadata and controls
81 lines (75 loc) · 2.65 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
import java.util.List;
import java.util.NoSuchElementException;
import domain.Bill;
import domain.Menu;
import domain.PayType;
import domain.Table;
import repository.MenuRepository;
import repository.OrderRepository;
import repository.PayTypeRepository;
import repository.TableRepository;
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(new OrderRepository());
final List<Table> tables = TableRepository.tables();
int func = InputView.inputFunction();
while (func != STOP) {
if (func == ORDER) {
orderMenu(tables, cafeOrderService);
}
if (func == PAY) {
payOrders(tables, cafeOrderService);
} else if (func > STOP || func < ORDER) {
throw new NoSuchElementException("해당 기능은 존재하지 않습니다.");
}
OutputView.printMain();
func = InputView.inputFunction();
}
}
private static void payOrders(List<Table> tables, CafeOrderService cafeOrderService) {
OutputView.printTables(tables, cafeOrderService);
int tableNum = InputView.inputPayTableNumber();
if (!cafeOrderService.checkOrderedTable(tableNum)) {
OutputView.printNoOrder();
return;
}
Bill bill = cafeOrderService.getBillByTable(tableNum);
OutputView.printBill(bill);
OutputView.printPayMessage(tableNum);
int payTypeNumber = InputView.inputPayType();
PayType payType = PayTypeRepository.findByNumber(payTypeNumber);
long amountOfPayment = cafeOrderService.getAmountOfPayment(bill, payType);
OutputView.printAmountOfPayment(amountOfPayment);
}
private static void orderMenu(List<Table> tables, CafeOrderService cafeOrderService) {
OutputView.printTables(tables, cafeOrderService);
int tableNumber = InputView.inputTableNumber();
boolean isValidTableNumber = cafeOrderService.isValidTableNumber(tableNumber);
if (!isValidTableNumber) {
orderMenu(tables, cafeOrderService);
}
final List<Menu> menus = MenuRepository.menus();
OutputView.printMenus(menus);
int menuNumber = InputView.inputMenu();
boolean isValidMenuNum = cafeOrderService.isValidMenuNumber(menuNumber);
if (!isValidMenuNum) {
OutputView.printMenuAlert();
orderMenu(tables, cafeOrderService);
}
int menuCount = InputView.inputCount();
boolean isMaxMenuCount = cafeOrderService.checkMaximumCount(tableNumber, menuNumber, menuCount);
if (!isMaxMenuCount) {
OutputView.printMaxAlert();
return;
}
cafeOrderService.orderMenu(tableNumber, menuNumber, menuCount);
}
}