. */ declare(strict_types=1); namespace FireflyIII\Factory; use FireflyIII\Models\PiggyBank; use FireflyIII\Models\TransactionJournal; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use Illuminate\Support\Facades\Log; /** * Create piggy bank events. * * Class PiggyBankEventFactory */ class PiggyBankEventFactory { public function create(TransactionJournal $journal, ?PiggyBank $piggyBank): void { Log::debug(sprintf('Now in PiggyBankEventCreate for a %s', $journal->transactionType->type)); if (!$piggyBank instanceof PiggyBank) { Log::debug('Piggy bank is null'); return; } /** @var PiggyBankRepositoryInterface $piggyRepos */ $piggyRepos = app(PiggyBankRepositoryInterface::class); $piggyRepos->setUser($journal->user); $amount = $piggyRepos->getExactAmount($piggyBank, $journal); if (0 === bccomp($amount, '0')) { Log::debug('Amount is zero, will not create event.'); return; } // amount can be negative here $piggyRepos->addAmountToPiggyBank($piggyBank, $amount, $journal); } }