throw new OfferChangedExcpetion(reservation.getAggregateId(), seenOffer, newOffer);
Client client = loadClient();//create per logged client, not reservation owner
Purchase purchase = purchaseFactory.create(reservation.getAggregateId(), client, seenOffer);
if (! client.canAfford(purchase.getTotalCost()))
throw new DomainOperationException(client.getAggregateId(), "client has insufficent money");
purchaseRepository.save(purchase);//Aggregate must be managed by persistence context before firing events (synchronous listeners may need to load it)
/*