-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBevShop.java
More file actions
140 lines (116 loc) · 4.28 KB
/
BevShop.java
File metadata and controls
140 lines (116 loc) · 4.28 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
import java.util.ArrayList;
public class BevShop implements BevShopInterface{
private int numOfAlcoholInOrder;
private int currentOrderIdx;
private ArrayList<Order> orders;
public boolean validTime(int time) {
if (time >= MIN_TIME && time <= MAX_TIME) {
return true;
}
return false;
}
public boolean validAge(int age) {
if (age >= MIN_AGE_FOR_ALCOHOL) {
return true;
}
return false;
}
public boolean eligibleForMore() {
if (numOfAlcoholInOrder < 3) {
return true;
}
return false;
}
public BevShop() {
orders = new ArrayList<>();
}
public String toString() {
String s = "Monthly Orders\n";
for (Order o : orders) {
s += o.toString();
}
s += "Total Sale: " +totalMonthlySale();
return s;
}
public boolean isMaxFruit(int num) {
if (num > MAX_FRUIT) {
return true;
}
return false;
}
public void startNewOrder(int time, DAY day, String customerName, int customerAge) {
Customer customer = new Customer(customerName, customerAge);
Order order = new Order(time, day, customer);
orders.add(order);
currentOrderIdx = orders.indexOf(order);
numOfAlcoholInOrder = 0;
}
public void processCoffeeOrder(String bevName, SIZE size, boolean extraShot, boolean extraSyrup) {
orders.get(currentOrderIdx).addNewBeverage(bevName, size, extraShot, extraSyrup);
}
public void processSmoothieOrder(String bevName, SIZE size, int numOfFruits, boolean addProtein) {
orders.get(currentOrderIdx).addNewBeverage(bevName, size, numOfFruits, addProtein);
}
public void processAlcoholOrder(String bevName, SIZE size) {
orders.get(currentOrderIdx).addNewBeverage(bevName, size);
numOfAlcoholInOrder++;
}
public int findOrder(int orderNo) {
for (int i = 0; i < orders.size(); i++) {
if (orders.get(i).getOrderNo() == orderNo) {
return i;
}
}
return -1;
}
public double totalOrderPrice(int orderNo) {
double orderSale = 0;
for (Order o : orders) {
if (o.getOrderNo() == orderNo) {
for (Beverage b : o.getBeverages()) {
orderSale += b.calcPrice();
}
}
}
return orderSale;}
public double totalMonthlySale() {
double totalSale = 0;
for (Order o : orders) {
for (Beverage b : o.getBeverages()) {
totalSale += b.calcPrice();
}
}
return totalSale;
}
public int totalNumOfMonthlyOrders() {
return orders.size();
}
public void sortOrders() {
for (int i = 0; i < orders.size()-1; i++) {
int minOrderNumIdx = i;
for (int j = i+1; j < orders.size(); j++) {
if (orders.get(j).getOrderNo() < orders.get(minOrderNumIdx).getOrderNo()) {
minOrderNumIdx = j;
}
}
Order temp = orders.get(minOrderNumIdx);
orders.set(minOrderNumIdx, orders.get(i));
orders.set(i, temp);
}
}
public Order getOrderAtIndex(int index) {
return orders.get(index);
}
public int getMaxOrderForAlcohol() {
return MAX_ORDER_FOR_ALCOHOL;
}
public int getMinAgeForAlcohol() {
return MIN_AGE_FOR_ALCOHOL;
}
public Order getCurrentOrder() {
return orders.get(currentOrderIdx);
}
public int getNumOfAlcoholDrink() {
return numOfAlcoholInOrder;
}
}