-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSplitwise.java
148 lines (130 loc) · 5.53 KB
/
Splitwise.java
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
package splitwise;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Splitwise {
public static void main(String args[]) {
ExpenseManager expenseManager = new ExpenseManager();
expenseManager.addUser(new User("pradipta", "Pradipta Sarma", "[email protected]", "8133910729"));
expenseManager.addUser(new User("nasir", "Nasir Ahmed", "[email protected]", "0000999909"));
expenseManager.addUser(new User("hemant", "Hemant Saikia", "[email protected]", "7123123123"));
expenseManager.addUser(new User("asmita", "Asmita Dutta", "[email protected]", "8133910729"));
expenseManager.addUser(new User("jishnu", "Jishnu Sankar Bora", "[email protected]", "1231231232"));
expenseManager.addUser(new User("swaranga", "Swaranga Sarma", "[email protected]", "1212121212"));
expenseManager.addUser(new User("debanga", "Debanga Sarma", "[email protected]", "4747474747"));
Scanner scanner = new Scanner(System.in);
while (true){
System.out.println("Select mode: Create Expense [1], Show Balance [2]");
String input = scanner.nextLine();
switch (input){
case "1":
//new expense
createExpense(expenseManager, scanner);
break;
case "2":
viewBalance(expenseManager, scanner);
break;
}
}
}
private static void viewBalance(ExpenseManager expenseManager, Scanner scanner) {
System.out.println("Enter userid for whom you want to see balance:");
String userId = scanner.nextLine();
//TODO put check
expenseManager.showBalanceForUser(userId);
}
private static void createExpense(ExpenseManager expenseManager, Scanner scanner) {
System.out.println("Choose split type:");
System.out.println("1. Equal");
System.out.println("2. Exact");
System.out.println("3. Percent");
String splitType = scanner.nextLine();
switch(splitType){
case "1":
createEqualExpense(expenseManager, scanner);
break;
case "2":
createExactExpense(expenseManager, scanner);
break;
case "3":
createPercentExpense(expenseManager, scanner);
break;
default:
System.out.println("Incorrect option");
return;
}
}
private static void createPercentExpense(ExpenseManager expenseManager, Scanner scanner) {
System.out.println("Enter no. of Users:");
int noOfUsers = Integer.parseInt(scanner.nextLine());
List<Split> splits = new ArrayList<>();
System.out.println("Who paid?");
String paidBy = scanner.nextLine();
System.out.println("What did you spend on?");
String label = scanner.nextLine();
System.out.println("Enter amount");
double amount = Double.parseDouble(scanner.nextLine());
System.out.println("Enter percentage shared by "+paidBy+":");
double percentIndi = Double.parseDouble(scanner.nextLine());
double percentCheck = percentIndi;
//TODO check for total percentage
splits.add(new PercentSplit(expenseManager.userMap.get(paidBy), percentIndi));
for (int i = 1; i<noOfUsers; i++){
System.out.println("Participant "+(i+1));
System.out.println("Enter user id: ");
String userIdNow = scanner.nextLine();
System.out.println("Enter percentage shared by "+userIdNow+":");
percentIndi = Double.parseDouble(scanner.nextLine());
splits.add(new PercentSplit(expenseManager.userMap.get(userIdNow), percentIndi));
}
expenseManager.addExpense(ExpenseType.PERCENT, amount, paidBy, splits, label);
expenseManager.showBalanceForUser(paidBy);
}
private static void createExactExpense(ExpenseManager expenseManager, Scanner scanner) {
System.out.println("Enter no. of Users:");
int noOfUsers = Integer.parseInt(scanner.nextLine());
List<Split> splits = new ArrayList<>();
System.out.println("Who paid?");
String paidBy = scanner.nextLine();
System.out.println("What did you spend on?");
String label = scanner.nextLine();
System.out.println("Enter total amount");
double amount = Double.parseDouble(scanner.nextLine());
System.out.println("Enter amount paid by "+paidBy+":");
double amountIndi = Double.parseDouble(scanner.nextLine());
double amountCheck = amountIndi;
splits.add(new ExactSplit(amountIndi,expenseManager.userMap.get(paidBy)));
for (int i = 1; i<noOfUsers; i++){
System.out.println("Participant "+(i+1));
System.out.println("Enter user id: ");
String userIdNow = scanner.nextLine();
System.out.println("Enter amount paid by "+userIdNow+":");
amountIndi = Double.parseDouble(scanner.nextLine());
splits.add(new ExactSplit(amountIndi,expenseManager.userMap.get(userIdNow)));
}
//TODO check total amount equal to sum of all
expenseManager.addExpense(ExpenseType.EXACT, amount, paidBy, splits, label);
expenseManager.showBalanceForUser(paidBy);
}
private static void createEqualExpense(ExpenseManager expenseManager, Scanner scanner) {
System.out.println("Enter no. of Users:");
int noOfUsers = Integer.parseInt(scanner.nextLine());
List<Split> splits = new ArrayList<>();
System.out.println("Who paid?");
String paidBy = scanner.nextLine();
System.out.println("What did you spend on?");
String label = scanner.nextLine();
System.out.println("Enter amount");
double amount = Double.parseDouble(scanner.nextLine());
splits.add(new EqualSplit(amount,expenseManager.userMap.get(paidBy)));
for (int i = 1; i<noOfUsers; i++){
System.out.println("Participant "+(i+1));
System.out.println("Enter user id: ");
String userIdNow = scanner.nextLine();
//TODO put check if user exists
splits.add(new EqualSplit(amount,expenseManager.userMap.get(userIdNow)));
}
expenseManager.addExpense(ExpenseType.EQUAL, amount, paidBy, splits, label);
expenseManager.showBalanceForUser(paidBy);
}
}