Utilize notifications and banking
This commit is contained in:
parent
28d3cb2aa2
commit
6608a8de38
@ -24,11 +24,19 @@ package com.iluwatar.hexagonal.administration;
|
|||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.iluwatar.hexagonal.banking.WireTransfers;
|
||||||
|
import com.iluwatar.hexagonal.banking.WireTransfersImpl;
|
||||||
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
|
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
|
||||||
import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
|
import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryTicket;
|
import com.iluwatar.hexagonal.domain.LotteryTicket;
|
||||||
|
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult;
|
||||||
|
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
||||||
|
import com.iluwatar.hexagonal.notifications.LotteryNotifications;
|
||||||
|
import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl;
|
||||||
|
import com.iluwatar.hexagonal.service.LotteryService;
|
||||||
|
import com.iluwatar.hexagonal.service.LotteryServiceImpl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -39,6 +47,12 @@ public class LotteryAdministrationImpl implements LotteryAdministration {
|
|||||||
|
|
||||||
private final LotteryTicketRepository repository;
|
private final LotteryTicketRepository repository;
|
||||||
|
|
||||||
|
private final LotteryService service = new LotteryServiceImpl();
|
||||||
|
|
||||||
|
private final LotteryNotifications notifications = new LotteryNotificationsImpl();
|
||||||
|
|
||||||
|
private final WireTransfers bank = new WireTransfersImpl();
|
||||||
|
|
||||||
public LotteryAdministrationImpl() {
|
public LotteryAdministrationImpl() {
|
||||||
repository = new LotteryTicketRepositoryMock();
|
repository = new LotteryTicketRepositoryMock();
|
||||||
}
|
}
|
||||||
@ -50,7 +64,18 @@ public class LotteryAdministrationImpl implements LotteryAdministration {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public LotteryNumbers performLottery() {
|
public LotteryNumbers performLottery() {
|
||||||
return LotteryNumbers.createRandom();
|
LotteryNumbers numbers = LotteryNumbers.createRandom();
|
||||||
|
Map<LotteryTicketId, LotteryTicket> tickets = getAllSubmittedTickets();
|
||||||
|
for (LotteryTicketId id: tickets.keySet()) {
|
||||||
|
LotteryTicketCheckResult result = service.checkTicketForPrize(id, numbers);
|
||||||
|
if (result.equals(CheckResult.WIN_PRIZE)) {
|
||||||
|
bank.transferFunds(1000, "123-123", tickets.get(id).getPlayerDetails().getBankAccount());
|
||||||
|
notifications.notifyPrize(tickets.get(id).getPlayerDetails(), 1000);
|
||||||
|
} else if (result.equals(CheckResult.NO_PRIZE)) {
|
||||||
|
notifications.notifyNoWin(tickets.get(id).getPlayerDetails());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return numbers;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,6 +34,10 @@ public class WireTransfersImpl implements WireTransfers {
|
|||||||
|
|
||||||
private static Map<String, Integer> accounts = new HashMap<>();
|
private static Map<String, Integer> accounts = new HashMap<>();
|
||||||
|
|
||||||
|
static {
|
||||||
|
accounts.put("123-123", 50000);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setFunds(String bankAccount, int amount) {
|
public void setFunds(String bankAccount, int amount) {
|
||||||
accounts.put(bankAccount, amount);
|
accounts.put(bankAccount, amount);
|
||||||
|
@ -24,6 +24,8 @@ package com.iluwatar.hexagonal.service;
|
|||||||
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import com.iluwatar.hexagonal.banking.WireTransfers;
|
||||||
|
import com.iluwatar.hexagonal.banking.WireTransfersImpl;
|
||||||
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
|
import com.iluwatar.hexagonal.database.LotteryTicketRepository;
|
||||||
import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
|
import com.iluwatar.hexagonal.database.LotteryTicketRepositoryMock;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
import com.iluwatar.hexagonal.domain.LotteryNumbers;
|
||||||
@ -31,6 +33,8 @@ import com.iluwatar.hexagonal.domain.LotteryTicket;
|
|||||||
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult;
|
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
import com.iluwatar.hexagonal.domain.LotteryTicketId;
|
||||||
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult;
|
import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult;
|
||||||
|
import com.iluwatar.hexagonal.notifications.LotteryNotifications;
|
||||||
|
import com.iluwatar.hexagonal.notifications.LotteryNotificationsImpl;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
@ -40,6 +44,10 @@ import com.iluwatar.hexagonal.domain.LotteryTicketCheckResult.CheckResult;
|
|||||||
public class LotteryServiceImpl implements LotteryService {
|
public class LotteryServiceImpl implements LotteryService {
|
||||||
|
|
||||||
private final LotteryTicketRepository repository;
|
private final LotteryTicketRepository repository;
|
||||||
|
|
||||||
|
private final WireTransfers bank = new WireTransfersImpl();
|
||||||
|
|
||||||
|
private final LotteryNotifications notifications = new LotteryNotificationsImpl();
|
||||||
|
|
||||||
public LotteryServiceImpl() {
|
public LotteryServiceImpl() {
|
||||||
repository = new LotteryTicketRepositoryMock();
|
repository = new LotteryTicketRepositoryMock();
|
||||||
@ -47,7 +55,12 @@ public class LotteryServiceImpl implements LotteryService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Optional<LotteryTicketId> submitTicket(LotteryTicket ticket) {
|
public Optional<LotteryTicketId> submitTicket(LotteryTicket ticket) {
|
||||||
return repository.save(ticket);
|
bank.transferFunds(3, ticket.getPlayerDetails().getBankAccount(), "123-123");
|
||||||
|
Optional<LotteryTicketId> optional = repository.save(ticket);
|
||||||
|
if (optional.isPresent()) {
|
||||||
|
notifications.notifyTicketSubmitted(ticket.getPlayerDetails());
|
||||||
|
}
|
||||||
|
return optional;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user