From 8918c3ed12e69c6a294eabab6bec6e072937599e Mon Sep 17 00:00:00 2001 From: James Cole Date: Wed, 20 Jan 2021 18:41:31 +0100 Subject: [PATCH] Add "id:xxx" search --- app/Helpers/Collector/GroupCollector.php | 14 ++++++++++++++ app/Helpers/Collector/GroupCollectorInterface.php | 9 +++++++++ app/Support/Search/OperatorQuerySearch.php | 4 ++++ config/firefly.php | 1 + 4 files changed, 28 insertions(+) diff --git a/app/Helpers/Collector/GroupCollector.php b/app/Helpers/Collector/GroupCollector.php index 99378123c8..3fa7a843a7 100644 --- a/app/Helpers/Collector/GroupCollector.php +++ b/app/Helpers/Collector/GroupCollector.php @@ -255,6 +255,20 @@ class GroupCollector implements GroupCollectorInterface return $this; } + /** + * Limit the result to a set of specific transaction groups. + * + * @param array $groupIds + * + * @return GroupCollectorInterface + */ + public function setIds(array $groupIds): GroupCollectorInterface { + + $this->query->whereIn('transaction_groups.id', $groupIds); + + return $this; + } + /** * Limit the number of returned entries. * diff --git a/app/Helpers/Collector/GroupCollectorInterface.php b/app/Helpers/Collector/GroupCollectorInterface.php index 3897f9ab44..b0dbe45856 100644 --- a/app/Helpers/Collector/GroupCollectorInterface.php +++ b/app/Helpers/Collector/GroupCollectorInterface.php @@ -240,6 +240,15 @@ interface GroupCollectorInterface */ public function setJournalIds(array $journalIds): GroupCollectorInterface; + /** + * Limit the result to a set of specific transaction groups. + * + * @param array $groupIds + * + * @return GroupCollectorInterface + */ + public function setIds(array $groupIds): GroupCollectorInterface; + /** * Limit the number of returned entries. * diff --git a/app/Support/Search/OperatorQuerySearch.php b/app/Support/Search/OperatorQuerySearch.php index 0a9b52af1a..afabdc2632 100644 --- a/app/Support/Search/OperatorQuerySearch.php +++ b/app/Support/Search/OperatorQuerySearch.php @@ -332,6 +332,10 @@ class OperatorQuerySearch implements SearchInterface $parts = explode(',', $value); $this->collector->setJournalIds($parts); break; + case 'id': + $parts = explode(',', $value); + $this->collector->setIds($parts); + break; case 'destination_account_starts': $this->searchAccount($value, 2, 1); break; diff --git a/config/firefly.php b/config/firefly.php index 3abd8f99d0..5bae2b3c1d 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -482,6 +482,7 @@ return [ 'any_notes' => ['alias' => false, 'needs_context' => false,], // one exact (or array of) journals: + 'id' => ['alias' => false, 'trigger_class' => null, 'needs_context' => true,], 'journal_id' => ['alias' => false, 'trigger_class' => null, 'needs_context' => true,], // exact amount