package org.sculptor.betting.customer.consumer;
import org.sculptor.betting.core.domain.Bet;
import org.sculptor.betting.core.domain.BetPlaced;
import org.sculptor.betting.customer.domain.Customer;
import org.sculptor.betting.customer.domain.CustomerBet;
import org.sculptor.betting.customer.exception.CustomerNotFoundException;
import org.sculptor.framework.event.DynamicMethodDispatcher;
import org.sculptor.framework.event.Event;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
/**
* Implementation of BettingConsumer.
*/
@Component("bettingConsumer")
public class BettingConsumerImpl extends BettingConsumerImplBase {
private static final Logger LOG = LoggerFactory.getLogger(BettingConsumerImpl.class);
public BettingConsumerImpl() {
}
public void receive(Event event) {
DynamicMethodDispatcher.dispatch(this, event, "handle");
}
public void handle(BetPlaced betPlaced) {
LOG.info("### Consuming betPlaced: {}", betPlaced);
Bet bet = betPlaced.getBet();
String customerId = bet.getCustomerId();
String customerName = null;
try {
Customer customer = getCustomerRepository().findByKey(customerId);
customerName = customer.getCustomerName();
} catch (CustomerNotFoundException e) {
// ok
}
CustomerBet customerBet = new CustomerBet(customerId, customerName, bet.getAmount());
getCustomerBetRepository().save(customerBet);
}
}