diff --git a/app/Jobs/ExecuteRuleGroupOnExistingTransactions.php b/app/Jobs/ExecuteRuleGroupOnExistingTransactions.php index 746f36d2d3..4b5c0cc811 100644 --- a/app/Jobs/ExecuteRuleGroupOnExistingTransactions.php +++ b/app/Jobs/ExecuteRuleGroupOnExistingTransactions.php @@ -3,41 +3,106 @@ namespace FireflyIII\Jobs; use Carbon\Carbon; -use FireflyIII\Jobs\Job; -use FireflyIII\User; use FireflyIII\Models\RuleGroup; use FireflyIII\Rules\Processor; -use Illuminate\Database\Eloquent\Collection; -use Illuminate\Queue\SerializesModels; -use Illuminate\Queue\InteractsWithQueue; +use FireflyIII\User; use Illuminate\Contracts\Queue\ShouldQueue; -use Log; +use Illuminate\Database\Eloquent\Collection; +use Illuminate\Queue\InteractsWithQueue; +use Illuminate\Queue\SerializesModels; class ExecuteRuleGroupOnExistingTransactions extends Job implements ShouldQueue { use InteractsWithQueue, SerializesModels; - /** @var RuleGroup */ - private $ruleGroup; /** @var Collection */ private $accounts; /** @var Carbon */ private $endDate; + /** @var RuleGroup */ + private $ruleGroup; /** @var Carbon */ private $startDate; /** @var User */ private $user; - + /** * Create a new job instance. * - * @return void */ public function __construct(RuleGroup $ruleGroup) { $this->ruleGroup = $ruleGroup; } + /** + * @return Collection + */ + public function getAccounts() + { + return $this->accounts; + } + + /** + * + * @param Collection $accounts + */ + public function setAccounts(Collection $accounts) + { + $this->accounts = $accounts; + } + + /** + * @return \Carbon\Carbon + */ + public function getEndDate() + { + return $this->endDate; + } + + /** + * + * @param Carbon $date + */ + public function setEndDate(Carbon $date) + { + $this->endDate = $date; + } + + /** + * @return \Carbon\Carbon + */ + public function getStartDate() + { + return $this->startDate; + } + + /** + * + * @param Carbon $date + */ + public function setStartDate(Carbon $date) + { + $this->startDate = $date; + } + + /** + * @return User + */ + public function getUser() + { + return $this->user; + } + + /** + * + * @param User $user + */ + public function setUser(User $user) + { + $this->user = $user; + } + /** * Execute the job. * @@ -47,16 +112,16 @@ class ExecuteRuleGroupOnExistingTransactions extends Job implements ShouldQueue { // Lookup all journals that match the parameters specified $journals = $this->collectJournals(); - + // Find processors for each rule within the current rule group - $processors = $this->collectProcessors(); - + $processors = $this->collectProcessors(); + // Execute the rules for each transaction - foreach($journals as $journal) { + foreach ($journals as $journal) { /** @var Processor $processor */ foreach ($processors as $processor) { $processor->handleTransactionJournal($journal); - + // Stop processing this group if the rule specifies 'stop_processing' if ($processor->getRule()->stop_processing) { break; @@ -67,92 +132,38 @@ class ExecuteRuleGroupOnExistingTransactions extends Job implements ShouldQueue /** * Collect all journals that should be processed + * * @return Collection */ protected function collectJournals() { $args = [$this->accounts, $this->user, $this->startDate, $this->endDate]; $journalCollector = app('FireflyIII\Repositories\Journal\JournalCollector', $args); + return $journalCollector->collect(); - } - + } + /** * Collects a list of rule processors, one for each rule within the rule group + * * @return array */ - protected function collectProcessors() { + protected function collectProcessors() + { // Find all rules belonging to this rulegroup $rules = $this->ruleGroup->rules() - ->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id') - ->where('rule_triggers.trigger_type', 'user_action') - ->where('rule_triggers.trigger_value', 'store-journal') - ->where('rules.active', 1) - ->get(['rules.*']); - + ->leftJoin('rule_triggers', 'rules.id', '=', 'rule_triggers.rule_id') + ->where('rule_triggers.trigger_type', 'user_action') + ->where('rule_triggers.trigger_value', 'store-journal') + ->where('rules.active', 1) + ->get(['rules.*']); + // Create a list of processors for these rules - return array_map( function( $rule ) { - return Processor::make($rule); - }, $rules->all()); + return array_map( + function ($rule) { + return Processor::make($rule); + }, $rules->all() + ); } - /** - * @return User - */ - public function getUser() { - return $this->user; - } - - /** - * - * @param User $user - */ - public function setUser(User $user) { - $this->user = $user; - } - - /** - * @return Collection - */ - public function getAccounts() { - return $this->accounts; - } - - /** - * - * @param Carbon $user - */ - public function setAccounts(Collection $accounts) { - $this->accounts = $accounts; - } - - /** - * @return \Carbon\Carbon - */ - public function getStartDate() { - return $this->startDate; - } - - /** - * - * @param Carbon $date - */ - public function setStartDate(Carbon $date) { - $this->startDate = $date; - } - - /** - * @return \Carbon\Carbon - */ - public function getEndDate() { - return $this->endDate; - } - - /** - * - * @param Carbon $date - */ - public function setEndDate(Carbon $date) { - $this->endDate = $date; - } - } diff --git a/app/Rules/Processor.php b/app/Rules/Processor.php index 6be99aee43..5b1e4f330b 100644 --- a/app/Rules/Processor.php +++ b/app/Rules/Processor.php @@ -14,10 +14,10 @@ use FireflyIII\Models\Rule; use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleTrigger; use FireflyIII\Models\TransactionJournal; -use FireflyIII\Rules\Factory\ActionFactory; use FireflyIII\Rules\Actions\ActionInterface; -use FireflyIII\Rules\Triggers\AbstractTrigger; +use FireflyIII\Rules\Factory\ActionFactory; use FireflyIII\Rules\Factory\TriggerFactory; +use FireflyIII\Rules\Triggers\AbstractTrigger; use Illuminate\Support\Collection; use Log; @@ -113,6 +113,14 @@ final class Processor return $self; } + /** + * + * @return \FireflyIII\Models\Rule + */ + public function getRule() + { + return $this->rule; + } /** * This method will scan the given transaction journal and check if it matches the triggers found in the Processor @@ -140,14 +148,6 @@ final class Processor } - /** - * - * @return \FireflyIII\Models\Rule - */ - public function getRule() { - return $this->rule; - } - /** * @return bool */