|
| 1 | +package ui; |
| 2 | + |
| 3 | +import domain.lottery.*; |
| 4 | +import service.LotteryService; |
| 5 | +import ui.common.InputView; |
| 6 | +import ui.common.Result; |
| 7 | +import util.Calculator; |
| 8 | +import util.Converter; |
| 9 | + |
| 10 | +import static constant.LotteryRules.DEFAULT_LOTTERY_TICKET_PRICE; |
| 11 | + |
| 12 | +public class ManualResultView implements Result { |
| 13 | + private final String DELIMITER = ", "; |
| 14 | + private LotteryTickets lotteryTickets; |
| 15 | + private WinnerLotteryTicket winnerLotteryTicket; |
| 16 | + private RewardLotteryTickets rewardLotteryTickets; |
| 17 | + |
| 18 | + @Override |
| 19 | + public void printAll() { |
| 20 | + LotteryService lotteryService = new LotteryService(); |
| 21 | + |
| 22 | + printTicketNumbers(); |
| 23 | + printLotteryResult(lotteryService); |
| 24 | + } |
| 25 | + |
| 26 | + @Override |
| 27 | + public void printTicketNumbers() { |
| 28 | + System.out.println("구입금액을 입력해 주세요."); |
| 29 | + |
| 30 | + long amount = InputView.inputInteger(); |
| 31 | + int totalNumberOfLotteryTickets = (int) Calculator.divide(amount, DEFAULT_LOTTERY_TICKET_PRICE); |
| 32 | + |
| 33 | + System.out.println(); |
| 34 | + System.out.println("수동으로 구매할 로또 수를 입력해 주세요."); |
| 35 | + int numberOfManualLotteryTickets = InputView.inputInteger(); |
| 36 | + |
| 37 | + lotteryTickets = new LotteryTickets(totalNumberOfLotteryTickets - numberOfManualLotteryTickets); |
| 38 | + |
| 39 | + System.out.println(); |
| 40 | + System.out.println("수동으로 구매할 번호를 입력해 주세요."); |
| 41 | + for (int count = 1; count <= numberOfManualLotteryTickets; count++) { |
| 42 | + lotteryTickets.add(Converter.convertStringToLotteryTicket(InputView.inputString().split(DELIMITER))); |
| 43 | + } |
| 44 | + |
| 45 | + System.out.println(); |
| 46 | + System.out.println("수동으로 " + numberOfManualLotteryTickets + "장, 자동으로 " + (totalNumberOfLotteryTickets - numberOfManualLotteryTickets) + "개를 구매했습니다."); |
| 47 | + for (LotteryTicket lotteryTicket : lotteryTickets.getLotteryTickets()) { |
| 48 | + System.out.println(lotteryTicket.getTicketNumbers()); |
| 49 | + } |
| 50 | + |
| 51 | + System.out.println(); |
| 52 | + System.out.println("지난 주 당첨 번호를 입력해 주세요."); |
| 53 | + LotteryTicket winnerTicket = Converter.convertStringToLotteryTicket(InputView.inputString().split(DELIMITER)); |
| 54 | + |
| 55 | + System.out.println("보너스 볼을 입력해 주세요."); |
| 56 | + int bonusTicketNumber = InputView.inputInteger(); |
| 57 | + winnerLotteryTicket = new WinnerLotteryTicket(winnerTicket, LotteryNumber.of(bonusTicketNumber)); |
| 58 | + rewardLotteryTickets = new RewardLotteryTickets(lotteryTickets, winnerLotteryTicket); |
| 59 | + } |
| 60 | + |
| 61 | + @Override |
| 62 | + public void printLotteryResult(LotteryService lotteryService) { |
| 63 | + System.out.println(); |
| 64 | + System.out.println("당첨 통계"); |
| 65 | + System.out.println("---------"); |
| 66 | + |
| 67 | + System.out.println("3개 일치 (5000원)- " + lotteryService.countOfLotteryWinners(3, rewardLotteryTickets) + "개"); |
| 68 | + System.out.println("4개 일치 (50000원)- " + lotteryService.countOfLotteryWinners(4, rewardLotteryTickets) + "개"); |
| 69 | + System.out.println("5개 일치 (1500000원)- " + lotteryService.countOfLotteryWinners(5, rewardLotteryTickets) + "개"); |
| 70 | + System.out.println("5개 일치, 보너스 볼 일치(30000000원)- " + lotteryService.countOfLotteryWinners(7, rewardLotteryTickets) + "개"); |
| 71 | + System.out.println("6개 일치 (2000000000원)- " + lotteryService.countOfLotteryWinners(6, rewardLotteryTickets) + "개"); |
| 72 | + System.out.println("총 수익률은 " + Calculator.rateOfProfit((long) lotteryTickets.getLotteryTickets().size() * DEFAULT_LOTTERY_TICKET_PRICE, lotteryService.findTotalRewards(new RewardLotteryTickets(lotteryTickets, winnerLotteryTicket))) + "입니다.(기준이 1이기 때문에 결과적으로 손해라는 의미임)"); |
| 73 | + } |
| 74 | +} |
0 commit comments