-
Notifications
You must be signed in to change notification settings - Fork 362
/
Copy pathLottoController.kt
59 lines (48 loc) · 2.17 KB
/
LottoController.kt
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
package lotto.controller
import lotto.domain.AutoLottoIssuer
import lotto.domain.LottoNumberGenerator
import lotto.domain.LottoPurchaseCalculator
import lotto.domain.LottoTickets
import lotto.domain.LottoWinnerNumbers
import lotto.view.LottoPayoutView
import lotto.view.ManualLottoView
import lotto.view.PurchaseLottoView
import lotto.view.WinnerLottoNumberView
object LottoController {
fun getMaxPurchaseLottoCountFromPayment(): Int {
val amountPaid = PurchaseLottoView.inputPurchaseCost()
return LottoPurchaseCalculator.getMaxPurchasedLottoTicketCount(amountPaid)
}
fun purchaseManualLotto(maxPurchaseLottoCount: Int): LottoTickets {
val manualLottoCount = ManualLottoView.inputManualLottoCount(maxPurchaseLottoCount)
return ManualLottoView.repeatInputManualLottoNumbers(manualLottoCount)
}
fun createAutoLotto(
maxPurchaseLottoCount: Int,
manualLottoTickets: LottoTickets,
): LottoTickets {
val autoLottoCount = maxPurchaseLottoCount - manualLottoTickets.lottoTickets.size
val autoLottoTickets =
AutoLottoIssuer.issueAutoLottoTickets(autoLottoCount) {
LottoNumberGenerator.generateAutoLottoNumbers()
}
PurchaseLottoView.displayPurchasedLottosView(
manualLottoTickets = manualLottoTickets,
autoLottoTickets = autoLottoTickets,
)
val combinedManualLottoAndAutoLotto = manualLottoTickets.lottoTickets.plus(autoLottoTickets.lottoTickets)
return LottoTickets(combinedManualLottoAndAutoLotto)
}
fun createWinningLottoNumbers(): LottoWinnerNumbers {
val inputLottoNumbers = WinnerLottoNumberView.inputWinningLottoNumbers()
val inputBonusNumber = WinnerLottoNumberView.inputBonusNumber()
return LottoWinnerNumbers(lottoNumbers = inputLottoNumbers, bonusNumber = inputBonusNumber)
}
fun resultPayout(
lottoTickets: LottoTickets,
lottoWinnerNumbers: LottoWinnerNumbers,
) {
val purchasedLottoResults = lottoWinnerNumbers.resultLottoPayout(lottoTickets)
return LottoPayoutView.displayWinningStatistics(purchasedLottoResults = purchasedLottoResults)
}
}