. */ declare(strict_types=1); namespace FireflyIII\Handlers\Events\Model; use FireflyIII\Events\Model\Rule\RuleActionFailedOnArray; use FireflyIII\Events\Model\Rule\RuleActionFailedOnObject; use FireflyIII\Notifications\User\RuleActionFailed; use Illuminate\Support\Facades\Notification; /** * Class RuleHandler */ class RuleHandler { /** * @param RuleActionFailedOnArray $event * * @return void */ public function ruleActionFailedOnArray(RuleActionFailedOnArray $event): void { $ruleAction = $event->ruleAction; $rule = $ruleAction->rule; /** @var bool $preference */ $preference = app('preferences')->getForUser($rule->user, 'notification_rule_action_failures', true)->data; if (false === $preference) { return; } app('log')->debug('Now in ruleActionFailedOnArray'); $journal = $event->journal; $error = $event->error; $user = $ruleAction->rule->user; $mainMessage = trans('rules.main_message', ['rule' => $rule->title, 'action' => $ruleAction->action_type, 'group' => $journal['transaction_group_id'], 'error' => $error]); $groupTitle = $journal['description'] ?? ''; $groupLink = route('transactions.show', [$journal['transaction_group_id']]); $ruleTitle = $rule->title; $ruleLink = route('rules.edit', [$rule->id]); $params = [$mainMessage, $groupTitle, $groupLink, $ruleTitle, $ruleLink]; Notification::send($user, new RuleActionFailed($params)); } /** * @param RuleActionFailedOnObject $event * * @return void */ public function ruleActionFailedOnObject(RuleActionFailedOnObject $event): void { $ruleAction = $event->ruleAction; $rule = $ruleAction->rule; /** @var bool $preference */ $preference = app('preferences')->getForUser($rule->user, 'notification_rule_action_failures', true)->data; if (false === $preference) { return; } app('log')->debug('Now in ruleActionFailedOnObject'); $journal = $event->journal; $error = $event->error; $user = $ruleAction->rule->user; $mainMessage = trans('rules.main_message', ['rule' => $rule->title, 'action' => $ruleAction->action_type, 'group' => $journal->transaction_group_id, 'error' => $error]); $groupTitle = $journal->description ?? ''; $groupLink = route('transactions.show', [$journal->transaction_group_id]); $ruleTitle = $rule->title; $ruleLink = route('rules.edit', [$rule->id]); $params = [$mainMessage, $groupTitle, $groupLink, $ruleTitle, $ruleLink]; Notification::send($user, new RuleActionFailed($params)); } }