. */ declare(strict_types=1); namespace FireflyIII\Notifications\User; use FireflyIII\Support\Notifications\UrlValidator; use FireflyIII\User; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Notification; /** * Class RuleActionFailed */ class RuleActionFailed extends Notification { use Queueable; private string $groupLink; private string $groupTitle; private string $message; private string $ruleLink; private string $ruleTitle; /** * Create a new notification instance. */ public function __construct(array $params) { [$mainMessage, $groupTitle, $groupLink, $ruleTitle, $ruleLink] = $params; $this->message = $mainMessage; $this->groupTitle = $groupTitle; $this->groupLink = $groupLink; $this->ruleTitle = $ruleTitle; $this->ruleLink = $ruleLink; } /** * Get the array representation of the notification. * * @param mixed $notifiable * * @return array * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function toArray($notifiable) { return [ ]; } /** * Get the Slack representation of the notification. * * @param mixed $notifiable * * @return SlackMessage * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function toSlack($notifiable) { $groupTitle = $this->groupTitle; $groupLink = $this->groupLink; $ruleTitle = $this->ruleTitle; $ruleLink = $this->ruleLink; return (new SlackMessage())->content($this->message)->attachment(static function ($attachment) use ($groupTitle, $groupLink): void { $attachment->title((string)trans('rules.inspect_transaction', ['title' => $groupTitle]), $groupLink); })->attachment(static function ($attachment) use ($ruleTitle, $ruleLink): void { $attachment->title((string)trans('rules.inspect_rule', ['title' => $ruleTitle]), $ruleLink); }); } /** * Get the notification's delivery channels. * * @param mixed $notifiable * * @return array * * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function via($notifiable) { /** @var null|User $user */ $user = auth()->user(); $slackUrl = null === $user ? '' : app('preferences')->getForUser(auth()->user(), 'slack_webhook_url', '')->data; if (is_array($slackUrl)) { $slackUrl = ''; } if (UrlValidator::isValidWebhookURL((string)$slackUrl)) { app('log')->debug('Will send ruleActionFailed through Slack!'); return ['slack']; } app('log')->debug('Will NOT send ruleActionFailed through Slack'); return []; } }