From f49ef1622eecff2b4436e96613de08f50456161b Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 14 Sep 2019 06:22:02 +0200 Subject: [PATCH] Fix #2589 --- app/Helpers/Collector/GroupCollector.php | 36 +++++++++++++++++++ .../Collector/GroupCollectorInterface.php | 18 ++++++++++ app/Support/Search/Search.php | 10 ++++++ config/firefly.php | 3 +- resources/lang/en_US/firefly.php | 2 ++ 5 files changed, 68 insertions(+), 1 deletion(-) diff --git a/app/Helpers/Collector/GroupCollector.php b/app/Helpers/Collector/GroupCollector.php index 1432ab144d..fbd36d911d 100644 --- a/app/Helpers/Collector/GroupCollector.php +++ b/app/Helpers/Collector/GroupCollector.php @@ -1162,4 +1162,40 @@ class GroupCollector implements GroupCollectorInterface return $this; } + + /** + * Collect transactions created on a specific date. + * + * @param Carbon $date + * + * @return GroupCollectorInterface + */ + public function setCreatedAt(Carbon $date): GroupCollectorInterface + { + $after = $date->format('Y-m-d 00:00:00'); + $before = $date->format('Y-m-d 23:59:59'); + $this->query->where('transaction_journals.created_at', '>=', $after); + $this->query->where('transaction_journals.created_at', '<=', $before); + Log::debug(sprintf('GroupCollector created_at is now after %s (inclusive)', $after)); + + return $this; + } + + /** + * Collect transactions updated on a specific date. + * + * @param Carbon $date + * + * @return GroupCollectorInterface + */ + public function setUpdatedAt(Carbon $date): GroupCollectorInterface + { + $after = $date->format('Y-m-d 00:00:00'); + $before = $date->format('Y-m-d 23:59:59'); + $this->query->where('transaction_journals.updated_at', '>=', $after); + $this->query->where('transaction_journals.updated_at', '<=', $before); + Log::debug(sprintf('GroupCollector created_at is now after %s (inclusive)', $after)); + + return $this; + } } diff --git a/app/Helpers/Collector/GroupCollectorInterface.php b/app/Helpers/Collector/GroupCollectorInterface.php index 0ab7a9f5d7..5bc36ac7a5 100644 --- a/app/Helpers/Collector/GroupCollectorInterface.php +++ b/app/Helpers/Collector/GroupCollectorInterface.php @@ -139,6 +139,24 @@ interface GroupCollectorInterface */ public function setAfter(Carbon $date): GroupCollectorInterface; + /** + * Collect transactions created on a specific date. + * + * @param Carbon $date + * + * @return GroupCollectorInterface + */ + public function setCreatedAt(Carbon $date): GroupCollectorInterface; + + /** + * Collect transactions updated on a specific date. + * + * @param Carbon $date + * + * @return GroupCollectorInterface + */ + public function setUpdatedAt(Carbon $date): GroupCollectorInterface; + /** * Collect transactions before a specific date. * diff --git a/app/Support/Search/Search.php b/app/Support/Search/Search.php index 099a4b57f9..bace5b8f62 100644 --- a/app/Support/Search/Search.php +++ b/app/Support/Search/Search.php @@ -288,6 +288,16 @@ class Search implements SearchInterface $after = new Carbon($modifier['value']); $collector->setAfter($after); break; + case 'created_at': + Log::debug(sprintf('Set "%s" using collector with value "%s"', $modifier['type'], $modifier['value'])); + $createdAt = new Carbon($modifier['value']); + $collector->setCreatedAt($createdAt); + break; + case 'updated_at': + Log::debug(sprintf('Set "%s" using collector with value "%s"', $modifier['type'], $modifier['value'])); + $updatedAt = new Carbon($modifier['value']); + $collector->setUpdatedAt($updatedAt); + break; } } $collector->setAccounts($totalAccounts); diff --git a/config/firefly.php b/config/firefly.php index e8360c6472..a43f8281d7 100644 --- a/config/firefly.php +++ b/config/firefly.php @@ -519,7 +519,8 @@ return [ 'default_currency' => 'EUR', 'default_language' => 'en_US', 'search_modifiers' => ['amount_is', 'amount', 'amount_max', 'amount_min', 'amount_less', 'amount_more', 'source', 'destination', 'category', - 'budget', 'bill', 'type', 'date', 'date_before', 'date_after', 'on', 'before', 'after','from','to','tag'], + 'budget', 'bill', 'type', 'date', 'date_before', 'date_after', 'on', 'before', 'after', 'from', 'to', 'tag', 'created_at', + 'updated_at'], // TODO notes has_attachments 'cer_providers' => [ diff --git a/resources/lang/en_US/firefly.php b/resources/lang/en_US/firefly.php index 85ce2a8445..74e5c9e587 100644 --- a/resources/lang/en_US/firefly.php +++ b/resources/lang/en_US/firefly.php @@ -253,6 +253,8 @@ return [ 'search_modifier_on' => 'Transaction date is :value', 'search_modifier_before' => 'Transaction date is before :value', 'search_modifier_after' => 'Transaction date is after :value', + 'search_modifier_created_at' => 'Transaction was created on :value', + 'search_modifier_updated_at' => 'Transaction was last updated on :value', 'modifiers_applies_are' => 'The following modifiers are applied to the search as well:', 'general_search_error' => 'An error occured while searching. Please check the log files for more information.', 'search_box' => 'Search',