2525import com .google .inject .Guice ;
2626import com .google .inject .Injector ;
2727import com .iluwatar .hexagonal .banking .WireTransfers ;
28- import com .iluwatar .hexagonal .domain .LotteryNumbers ;
29- 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 ;
3428import com .iluwatar .hexagonal .module .LotteryModule ;
3529import com .iluwatar .hexagonal .mongo .MongoConnectionPropertiesLoader ;
3630import org .slf4j .Logger ;
3731import org .slf4j .LoggerFactory ;
3832
39- import java .util .HashSet ;
40- import java .util .Optional ;
4133import java .util .Scanner ;
42- import java .util .Set ;
4334
4435/**
4536 * Console interface for lottery players
@@ -54,21 +45,22 @@ public class ConsoleLottery {
5445 public static void main (String [] args ) {
5546 MongoConnectionPropertiesLoader .load ();
5647 Injector injector = Guice .createInjector (new LotteryModule ());
57- LotteryService service = injector .getInstance (LotteryService .class );
48+ com . iluwatar . hexagonal . domain . LotteryService service = injector .getInstance ( com . iluwatar . hexagonal . domain . LotteryService .class );
5849 WireTransfers bank = injector .getInstance (WireTransfers .class );
5950 try (final Scanner scanner = new Scanner (System .in )) {
6051 boolean exit = false ;
6152 while (!exit ) {
6253 printMainMenu ();
6354 String cmd = readString (scanner );
55+ LotteryService lotteryService = new LotteryServiceImpl (LOGGER );
6456 if ("1" .equals (cmd )) {
65- queryLotteryAccountFunds (bank , scanner );
57+ lotteryService . queryLotteryAccountFunds (bank , scanner );
6658 } else if ("2" .equals (cmd )) {
67- addFundsToLotteryAccount (bank , scanner );
59+ lotteryService . addFundsToLotteryAccount (bank , scanner );
6860 } else if ("3" .equals (cmd )) {
69- submitTicket (service , scanner );
61+ lotteryService . submitTicket (service , scanner );
7062 } else if ("4" .equals (cmd )) {
71- checkTicket (service , scanner );
63+ lotteryService . checkTicket (service , scanner );
7264 } else if ("5" .equals (cmd )) {
7365 exit = true ;
7466 } else {
@@ -78,75 +70,6 @@ public static void main(String[] args) {
7870 }
7971 }
8072
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-
15073 private static void printMainMenu () {
15174 LOGGER .info ("" );
15275 LOGGER .info ("### Lottery Service Console ###" );
0 commit comments