// TODO 1: Add transactional annotation to identify this method as needing transactional behavior
// TODO 3: Add non-default propagation level (don't do this until instructed)
public RewardConfirmation rewardAccountFor(Dining dining) {
Account account = accountRepository.findByCreditCard(dining.getCreditCardNumber());
Restaurant restaurant = restaurantRepository.findByMerchantNumber(dining.getMerchantNumber());
MonetaryAmount amount = restaurant.calculateBenefitFor(account, dining);
AccountContribution contribution = account.makeContribution(amount);
accountRepository.updateBeneficiaries(account);
return rewardRepository.confirmReward(contribution, dining);
}