From 72a4e86e2fed5ca8613ef853b58af06d3d430118 Mon Sep 17 00:00:00 2001 From: James Cole Date: Thu, 12 Mar 2020 05:11:19 +0100 Subject: [PATCH] Throw better exception. --- .../TransactionGroupTransformer.php | 29 +++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/app/Transformers/TransactionGroupTransformer.php b/app/Transformers/TransactionGroupTransformer.php index c58faa73b5..4731f56e31 100644 --- a/app/Transformers/TransactionGroupTransformer.php +++ b/app/Transformers/TransactionGroupTransformer.php @@ -23,6 +23,7 @@ declare(strict_types=1); namespace FireflyIII\Transformers; +use FireflyIII\Exceptions\FireflyException; use FireflyIII\Models\Budget; use FireflyIII\Models\Category; use FireflyIII\Models\Transaction; @@ -32,6 +33,7 @@ use FireflyIII\Models\TransactionType; use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface; use FireflyIII\Support\NullArrayObject; use Illuminate\Support\Collection; +use Log; /** * Class TransactionGroupTransformer @@ -98,9 +100,11 @@ class TransactionGroupTransformer extends AbstractTransformer * @param TransactionGroup $group * * @return array + * @throws FireflyException */ public function transformObject(TransactionGroup $group): array { + try { $result = [ 'id' => (int)$group->id, 'created_at' => $group->created_at->toAtomString(), @@ -115,7 +119,11 @@ class TransactionGroupTransformer extends AbstractTransformer ], ], ]; - + } catch(FireflyException $e) { + Log::error($e->getMessage()); + Log::error($e->getTraceAsString()); + throw new FireflyException(sprintf('Transaction group #%d is broken. Please check out your log files.', $group->id)); + } // do something else. return $result; @@ -125,36 +133,47 @@ class TransactionGroupTransformer extends AbstractTransformer * @param TransactionJournal $journal * * @return Transaction + * @throws FireflyException */ private function getDestinationTransaction(TransactionJournal $journal): Transaction { - - return $journal->transactions->first( + $result = $journal->transactions->first( static function (Transaction $transaction) { return (float)$transaction->amount > 0; } ); + if (null === $result) { + throw new FireflyException(sprintf('Journal #%d unexpectedly has no destination transaction.', $journal->id)); + } + + return $result; } /** * @param TransactionJournal $journal * * @return Transaction + * @throws FireflyException */ private function getSourceTransaction(TransactionJournal $journal): Transaction { - - return $journal->transactions->first( + $result = $journal->transactions->first( static function (Transaction $transaction) { return (float)$transaction->amount < 0; } ); + if (null === $result) { + throw new FireflyException(sprintf('Journal #%d unexpectedly has no source transaction.', $journal->id)); + } + + return $result; } /** * @param Collection $transactionJournals * * @return array + * @throws FireflyException */ private function transformJournals(Collection $transactionJournals): array {