/** * @param TransferFundsRequest $request */ public function transfer(TransferFundsRequest $request) { $fromMember = $this->members->with($request->fromMemberId()); $toMember = $this->members->with($request->toMemberId()); $fromMember->transfer($request->amount(), $toMember); $this->members->update($fromMember); $this->members->update($toMember); $this->publisher()->publish($fromMember->events()); $this->notifier()->transferCompleted(new TransferFundsResponse($fromMember, $toMember)); }