supportRepository->findOneBy([ 'project' => $project, 'origin' => $origin, ]); if ($support === null) { $support = new Support(); $support->setProject($project); $support->setOrigin($origin); } return $support; } /** * Add new Transactions and recalculate the Money for an existing Support. * * @param Transaction[] $transactions */ public function withTransactions(Support $support, array $transactions): Support { foreach ($transactions as $transaction) { $support->addTransaction($transaction); } $money = new Money(0, $support->getProject()->getAccounting()->getCurrency()); foreach ($support->getTransactions() as $transaction) { $money = $this->moneyService->add($transaction->getMoney(), $money); } $support->setMoney(EmbeddableMoney::of($money)); return $support; } }