| 
									
										
										
										
											2015-02-09 07:23:39 +01:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2022-12-29 19:42:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * JournalRepository.php | 
					
						
							| 
									
										
										
										
											2020-02-16 14:00:57 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2016-10-05 06:52:15 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2017-10-21 08:40:00 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							| 
									
										
										
										
											2016-05-20 12:41:23 +02:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2017-03-24 15:01:53 +01:00
										 |  |  | declare(strict_types=1); | 
					
						
							| 
									
										
										
										
											2015-02-09 07:23:39 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Repositories\Journal; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-24 14:31:20 +01:00
										 |  |  | use Carbon\Carbon; | 
					
						
							| 
									
										
										
										
											2020-02-28 18:56:27 +01:00
										 |  |  | use FireflyIII\Exceptions\FireflyException; | 
					
						
							| 
									
										
										
										
											2019-12-20 21:01:27 +01:00
										 |  |  | use FireflyIII\Models\Account; | 
					
						
							| 
									
										
										
										
											2018-12-20 22:03:34 +01:00
										 |  |  | use FireflyIII\Models\Note; | 
					
						
							| 
									
										
										
										
											2017-11-05 19:48:43 +01:00
										 |  |  | use FireflyIII\Models\Transaction; | 
					
						
							| 
									
										
										
										
											2019-03-30 07:09:52 +01:00
										 |  |  | use FireflyIII\Models\TransactionGroup; | 
					
						
							| 
									
										
										
										
											2015-02-24 22:53:38 +01:00
										 |  |  | use FireflyIII\Models\TransactionJournal; | 
					
						
							| 
									
										
										
										
											2018-12-20 22:03:34 +01:00
										 |  |  | use FireflyIII\Models\TransactionJournalLink; | 
					
						
							| 
									
										
										
										
											2018-05-05 13:53:12 +02:00
										 |  |  | use FireflyIII\Models\TransactionJournalMeta; | 
					
						
							| 
									
										
										
										
											2018-02-22 20:07:14 +01:00
										 |  |  | use FireflyIII\Services\Internal\Destroy\JournalDestroyService; | 
					
						
							| 
									
										
										
										
											2019-03-30 07:09:52 +01:00
										 |  |  | use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService; | 
					
						
							| 
									
										
										
										
											2018-02-22 20:07:14 +01:00
										 |  |  | use FireflyIII\Services\Internal\Update\JournalUpdateService; | 
					
						
							| 
									
										
										
										
											2018-02-24 14:31:20 +01:00
										 |  |  | use FireflyIII\Support\CacheProperties; | 
					
						
							| 
									
										
										
										
											2016-03-03 08:55:43 +01:00
										 |  |  | use FireflyIII\User; | 
					
						
							| 
									
										
										
										
											2023-02-19 08:43:28 +01:00
										 |  |  | use Illuminate\Contracts\Auth\Authenticatable; | 
					
						
							| 
									
										
										
										
											2016-10-21 21:41:31 +02:00
										 |  |  | use Illuminate\Support\Collection; | 
					
						
							| 
									
										
										
										
											2015-02-24 22:53:38 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  | /** | 
					
						
							| 
									
										
										
										
											2017-11-15 12:25:49 +01:00
										 |  |  |  * Class JournalRepository. | 
					
						
							| 
									
										
										
										
											2015-02-11 07:35:10 +01:00
										 |  |  |  */ | 
					
						
							|  |  |  | class JournalRepository implements JournalRepositoryInterface | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2023-10-22 18:44:30 +02:00
										 |  |  |     private User $user; | 
					
						
							| 
									
										
										
										
											2018-09-03 08:41:03 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-30 07:09:52 +01:00
										 |  |  |     public function destroyGroup(TransactionGroup $transactionGroup): void | 
					
						
							| 
									
										
										
										
											2017-07-04 16:31:16 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-03-30 07:09:52 +01:00
										 |  |  |         /** @var TransactionGroupDestroyService $service */ | 
					
						
							|  |  |  |         $service = app(TransactionGroupDestroyService::class); | 
					
						
							|  |  |  |         $service->destroy($transactionGroup); | 
					
						
							| 
									
										
										
										
											2017-07-04 16:31:16 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-03-30 07:09:52 +01:00
										 |  |  |     public function destroyJournal(TransactionJournal $journal): void | 
					
						
							| 
									
										
										
										
											2015-05-04 23:46:14 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2018-02-22 20:07:14 +01:00
										 |  |  |         /** @var JournalDestroyService $service */ | 
					
						
							|  |  |  |         $service = app(JournalDestroyService::class); | 
					
						
							|  |  |  |         $service->destroy($journal); | 
					
						
							| 
									
										
										
										
											2015-05-04 23:46:14 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |     public function findByType(array $types): Collection | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return $this->user | 
					
						
							|  |  |  |             ->transactionJournals() | 
					
						
							|  |  |  |             ->leftJoin('transaction_types', 'transaction_types.id', '=', 'transaction_journals.transaction_type_id') | 
					
						
							|  |  |  |             ->whereIn('transaction_types.type', $types) | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |             ->get(['transaction_journals.*']) | 
					
						
							|  |  |  |         ; | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-02 15:10:40 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Get users first transaction journal or NULL. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function firstNull(): ?TransactionJournal | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|TransactionJournal $entry */ | 
					
						
							| 
									
										
										
										
											2018-04-02 15:10:40 +02:00
										 |  |  |         $entry  = $this->user->transactionJournals()->orderBy('date', 'ASC')->first(['transaction_journals.*']); | 
					
						
							|  |  |  |         $result = null; | 
					
						
							|  |  |  |         if (null !== $entry) { | 
					
						
							|  |  |  |             $result = $entry; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $result; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     public function getDestinationAccount(TransactionJournal $journal): Account | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|Transaction $transaction */ | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         $transaction = $journal->transactions()->with('account')->where('amount', '>', 0)->first(); | 
					
						
							|  |  |  |         if (null === $transaction) { | 
					
						
							|  |  |  |             throw new FireflyException(sprintf('Your administration is broken. Transaction journal #%d has no destination transaction.', $journal->id)); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $transaction->account; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Return total amount of journal. Is always positive. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getJournalTotal(TransactionJournal $journal): string | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2024-01-01 14:43:56 +01:00
										 |  |  |         $cache  = new CacheProperties(); | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |         $cache->addProperty($journal->id); | 
					
						
							|  |  |  |         $cache->addProperty('amount-positive'); | 
					
						
							|  |  |  |         if ($cache->has()) { | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             return $cache->get(); | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // saves on queries:
 | 
					
						
							|  |  |  |         $amount = $journal->transactions()->where('amount', '>', 0)->get()->sum('amount'); | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |         $amount = (string) $amount; | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |         $cache->store($amount); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $amount; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     public function getLast(): ?TransactionJournal | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|TransactionJournal $entry */ | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         $entry  = $this->user->transactionJournals()->orderBy('date', 'DESC')->first(['transaction_journals.*']); | 
					
						
							|  |  |  |         $result = null; | 
					
						
							|  |  |  |         if (null !== $entry) { | 
					
						
							|  |  |  |             $result = $entry; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $result; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-12-20 22:03:34 +01:00
										 |  |  |     public function getLinkNoteText(TransactionJournalLink $link): string | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|Note $note */ | 
					
						
							| 
									
										
										
										
											2018-12-20 22:03:34 +01:00
										 |  |  |         $note = $link->notes()->first(); | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |         return (string) $note?->text; | 
					
						
							| 
									
										
										
										
											2018-12-20 22:03:34 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Return Carbon value of a meta field (or NULL). | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function getMetaDateById(int $journalId, string $field): ?Carbon | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2022-10-30 14:24:28 +01:00
										 |  |  |         $cache = new CacheProperties(); | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         $cache->addProperty('journal-meta-updated'); | 
					
						
							|  |  |  |         $cache->addProperty($journalId); | 
					
						
							|  |  |  |         $cache->addProperty($field); | 
					
						
							| 
									
										
										
										
											2018-03-10 22:34:02 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         if ($cache->has()) { | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             return new Carbon($cache->get()); | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         } | 
					
						
							|  |  |  |         $entry = TransactionJournalMeta::where('transaction_journal_id', $journalId) | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |             ->where('name', $field)->first() | 
					
						
							|  |  |  |         ; | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         if (null === $entry) { | 
					
						
							|  |  |  |             return null; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         $value = new Carbon($entry->data); | 
					
						
							|  |  |  |         $cache->store($entry->data); | 
					
						
							| 
									
										
										
										
											2018-02-24 14:31:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         return $value; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-02-24 14:31:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     public function getSourceAccount(TransactionJournal $journal): Account | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|Transaction $transaction */ | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         $transaction = $journal->transactions()->with('account')->where('amount', '<', 0)->first(); | 
					
						
							|  |  |  |         if (null === $transaction) { | 
					
						
							|  |  |  |             throw new FireflyException(sprintf('Your administration is broken. Transaction journal #%d has no source transaction.', $journal->id)); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-03-11 16:24:07 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         return $transaction->account; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-02-24 14:31:20 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-06-23 05:53:01 +02:00
										 |  |  |     public function reconcileById(int $journalId): void | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|TransactionJournal $journal */ | 
					
						
							| 
									
										
										
										
											2019-06-23 05:53:01 +02:00
										 |  |  |         $journal = $this->user->transactionJournals()->find($journalId); | 
					
						
							| 
									
										
										
										
											2021-09-18 10:20:19 +02:00
										 |  |  |         $journal?->transactions()->update(['reconciled' => true]); | 
					
						
							| 
									
										
										
										
											2018-02-25 19:09:05 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-21 12:34:58 +02:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Find a specific journal. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function find(int $journalId): ?TransactionJournal | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-01-04 07:39:16 +01:00
										 |  |  |         /** @var null|TransactionJournal */ | 
					
						
							| 
									
										
										
										
											2023-06-21 12:34:58 +02:00
										 |  |  |         return $this->user->transactionJournals()->find($journalId); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |     /** | 
					
						
							|  |  |  |      * Search in journal descriptions. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function searchJournalDescriptions(string $search, int $limit): Collection | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $query = $this->user->transactionJournals() | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |             ->orderBy('date', 'DESC') | 
					
						
							|  |  |  |         ; | 
					
						
							| 
									
										
										
										
											2023-10-08 16:11:04 +02:00
										 |  |  |         if ('' !== $search) { | 
					
						
							| 
									
										
										
										
											2024-10-10 06:30:05 +02:00
										 |  |  |             $query->whereLike('description', sprintf('%%%s%%', $search)); | 
					
						
							| 
									
										
										
										
											2021-03-12 06:20:01 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $query->take($limit)->get(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |     public function setUser(null|Authenticatable|User $user): void | 
					
						
							| 
									
										
										
										
											2017-02-17 06:42:36 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-10-30 19:49:40 +01:00
										 |  |  |         if ($user instanceof User) { | 
					
						
							| 
									
										
										
										
											2023-02-19 08:43:28 +01:00
										 |  |  |             $this->user = $user; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2017-02-17 06:42:36 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-10-28 15:03:33 +02:00
										 |  |  |     public function unreconcileById(int $journalId): void | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|TransactionJournal $journal */ | 
					
						
							| 
									
										
										
										
											2023-10-28 15:03:33 +02:00
										 |  |  |         $journal = $this->user->transactionJournals()->find($journalId); | 
					
						
							|  |  |  |         $journal?->transactions()->update(['reconciled' => false]); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |      * Update budget for a journal. | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |     public function updateBudget(TransactionJournal $journal, int $budgetId): TransactionJournal | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |         /** @var JournalUpdateService $service */ | 
					
						
							|  |  |  |         $service = app(JournalUpdateService::class); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 17:31:47 +02:00
										 |  |  |         $service->setTransactionJournal($journal); | 
					
						
							|  |  |  |         $service->setData( | 
					
						
							|  |  |  |             [ | 
					
						
							|  |  |  |                 'budget_id' => $budgetId, | 
					
						
							|  |  |  |             ] | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |         $service->update(); | 
					
						
							|  |  |  |         $journal->refresh(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $journal; | 
					
						
							| 
									
										
										
										
											2017-06-07 08:18:42 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |      * Update category for a journal. | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |     public function updateCategory(TransactionJournal $journal, string $category): TransactionJournal | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /** @var JournalUpdateService $service */ | 
					
						
							|  |  |  |         $service = app(JournalUpdateService::class); | 
					
						
							| 
									
										
										
										
											2019-07-04 17:31:47 +02:00
										 |  |  |         $service->setTransactionJournal($journal); | 
					
						
							|  |  |  |         $service->setData( | 
					
						
							|  |  |  |             [ | 
					
						
							|  |  |  |                 'category_name' => $category, | 
					
						
							|  |  |  |             ] | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |         $service->update(); | 
					
						
							|  |  |  |         $journal->refresh(); | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-07-04 17:31:47 +02:00
										 |  |  |         return $journal; | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Update tag(s) for a journal. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function updateTags(TransactionJournal $journal, array $tags): TransactionJournal | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  |         /** @var JournalUpdateService $service */ | 
					
						
							|  |  |  |         $service = app(JournalUpdateService::class); | 
					
						
							| 
									
										
										
										
											2019-07-04 17:31:47 +02:00
										 |  |  |         $service->setTransactionJournal($journal); | 
					
						
							|  |  |  |         $service->setData( | 
					
						
							|  |  |  |             [ | 
					
						
							|  |  |  |                 'tags' => $tags, | 
					
						
							|  |  |  |             ] | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |         $service->update(); | 
					
						
							|  |  |  |         $journal->refresh(); | 
					
						
							| 
									
										
										
										
											2018-02-23 16:21:28 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return $journal; | 
					
						
							| 
									
										
										
										
											2018-02-23 15:12:47 +01:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2015-04-03 09:30:44 +02:00
										 |  |  | } |