25
25
import com .google .inject .Guice ;
26
26
import com .google .inject .Injector ;
27
27
import com .iluwatar .hexagonal .banking .WireTransfers ;
28
- import com .iluwatar .hexagonal .domain .LotteryNumbers ;
29
28
import com .iluwatar .hexagonal .domain .LotteryService ;
30
- import com .iluwatar .hexagonal .domain .LotteryTicket ;
31
- import com .iluwatar .hexagonal .domain .LotteryTicketCheckResult ;
32
- import com .iluwatar .hexagonal .domain .LotteryTicketId ;
33
- import com .iluwatar .hexagonal .domain .PlayerDetails ;
34
29
import com .iluwatar .hexagonal .module .LotteryModule ;
35
30
import com .iluwatar .hexagonal .mongo .MongoConnectionPropertiesLoader ;
36
31
import org .slf4j .Logger ;
37
32
import org .slf4j .LoggerFactory ;
38
33
39
- import java .util .HashSet ;
40
- import java .util .Optional ;
41
34
import java .util .Scanner ;
42
- import java .util .Set ;
43
35
44
36
/**
45
37
* Console interface for lottery players
@@ -54,21 +46,22 @@ public class ConsoleLottery {
54
46
public static void main (String [] args ) {
55
47
MongoConnectionPropertiesLoader .load ();
56
48
Injector injector = Guice .createInjector (new LotteryModule ());
57
- LotteryService service = injector .getInstance (LotteryService .class );
49
+ LotteryService service = injector .getInstance ( LotteryService .class );
58
50
WireTransfers bank = injector .getInstance (WireTransfers .class );
59
51
try (final Scanner scanner = new Scanner (System .in )) {
60
52
boolean exit = false ;
61
53
while (!exit ) {
62
54
printMainMenu ();
63
55
String cmd = readString (scanner );
56
+ LotteryConsoleService lotteryConsoleService = new LotteryConsoleServiceImpl (LOGGER );
64
57
if ("1" .equals (cmd )) {
65
- queryLotteryAccountFunds (bank , scanner );
58
+ lotteryConsoleService . queryLotteryAccountFunds (bank , scanner );
66
59
} else if ("2" .equals (cmd )) {
67
- addFundsToLotteryAccount (bank , scanner );
60
+ lotteryConsoleService . addFundsToLotteryAccount (bank , scanner );
68
61
} else if ("3" .equals (cmd )) {
69
- submitTicket (service , scanner );
62
+ lotteryConsoleService . submitTicket (service , scanner );
70
63
} else if ("4" .equals (cmd )) {
71
- checkTicket (service , scanner );
64
+ lotteryConsoleService . checkTicket (service , scanner );
72
65
} else if ("5" .equals (cmd )) {
73
66
exit = true ;
74
67
} else {
@@ -78,75 +71,6 @@ public static void main(String[] args) {
78
71
}
79
72
}
80
73
81
- private static void checkTicket (LotteryService service , Scanner scanner ) {
82
- LOGGER .info ("What is the ID of the lottery ticket?" );
83
- String id = readString (scanner );
84
- LOGGER .info ("Give the 4 comma separated winning numbers?" );
85
- String numbers = readString (scanner );
86
- try {
87
- String [] parts = numbers .split ("," );
88
- Set <Integer > winningNumbers = new HashSet <>();
89
- for (int i = 0 ; i < 4 ; i ++) {
90
- winningNumbers .add (Integer .parseInt (parts [i ]));
91
- }
92
- LotteryTicketCheckResult result = service .checkTicketForPrize (
93
- new LotteryTicketId (Integer .parseInt (id )), LotteryNumbers .create (winningNumbers ));
94
- if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .WIN_PRIZE )) {
95
- LOGGER .info ("Congratulations! The lottery ticket has won!" );
96
- } else if (result .getResult ().equals (LotteryTicketCheckResult .CheckResult .NO_PRIZE )) {
97
- LOGGER .info ("Unfortunately the lottery ticket did not win." );
98
- } else {
99
- LOGGER .info ("Such lottery ticket has not been submitted." );
100
- }
101
- } catch (Exception e ) {
102
- LOGGER .info ("Failed checking the lottery ticket - please try again." );
103
- }
104
- }
105
-
106
- private static void submitTicket (LotteryService service , Scanner scanner ) {
107
- LOGGER .info ("What is your email address?" );
108
- String email = readString (scanner );
109
- LOGGER .info ("What is your bank account number?" );
110
- String account = readString (scanner );
111
- LOGGER .info ("What is your phone number?" );
112
- String phone = readString (scanner );
113
- PlayerDetails details = new PlayerDetails (email , account , phone );
114
- LOGGER .info ("Give 4 comma separated lottery numbers?" );
115
- String numbers = readString (scanner );
116
- try {
117
- String [] parts = numbers .split ("," );
118
- Set <Integer > chosen = new HashSet <>();
119
- for (int i = 0 ; i < 4 ; i ++) {
120
- chosen .add (Integer .parseInt (parts [i ]));
121
- }
122
- LotteryNumbers lotteryNumbers = LotteryNumbers .create (chosen );
123
- LotteryTicket lotteryTicket = new LotteryTicket (new LotteryTicketId (), details , lotteryNumbers );
124
- Optional <LotteryTicketId > id = service .submitTicket (lotteryTicket );
125
- if (id .isPresent ()) {
126
- LOGGER .info ("Submitted lottery ticket with id: {}" , id .get ());
127
- } else {
128
- LOGGER .info ("Failed submitting lottery ticket - please try again." );
129
- }
130
- } catch (Exception e ) {
131
- LOGGER .info ("Failed submitting lottery ticket - please try again." );
132
- }
133
- }
134
-
135
- private static void addFundsToLotteryAccount (WireTransfers bank , Scanner scanner ) {
136
- LOGGER .info ("What is the account number?" );
137
- String account = readString (scanner );
138
- LOGGER .info ("How many credits do you want to deposit?" );
139
- String amount = readString (scanner );
140
- bank .setFunds (account , Integer .parseInt (amount ));
141
- LOGGER .info ("The account {} now has {} credits." , account , bank .getFunds (account ));
142
- }
143
-
144
- private static void queryLotteryAccountFunds (WireTransfers bank , Scanner scanner ) {
145
- LOGGER .info ("What is the account number?" );
146
- String account = readString (scanner );
147
- LOGGER .info ("The account {} has {} credits." , account , bank .getFunds (account ));
148
- }
149
-
150
74
private static void printMainMenu () {
151
75
LOGGER .info ("" );
152
76
LOGGER .info ("### Lottery Service Console ###" );
0 commit comments