. */ declare(strict_types=1); namespace FireflyIII\Notifications\User; use FireflyIII\Notifications\ReturnsAvailableChannels; use FireflyIII\Notifications\ReturnsSettings; use FireflyIII\User; use Illuminate\Bus\Queueable; use Illuminate\Notifications\Messages\SlackMessage; use Illuminate\Notifications\Notification; use NotificationChannels\Pushover\PushoverMessage; use Ntfy\Message; /** * Class RuleActionFailed */ class RuleActionFailed extends Notification { use Queueable; private string $groupLink; private string $groupTitle; private string $message; private string $ruleLink; private string $ruleTitle; 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; } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function toArray(User $notifiable): array { return [ ]; } public function toNtfy(User $notifiable): Message { $settings = ReturnsSettings::getSettings('ntfy', 'user', $notifiable); $message = new Message(); $message->topic($settings['ntfy_topic']); $message->body($this->message); return $message; } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function toPushover(User $notifiable): PushoverMessage { return PushoverMessage::create($this->message); } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function toSlack(User $notifiable): SlackMessage { $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); }); } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function via(User $notifiable): array { $channels = ReturnsAvailableChannels::returnChannels('user', $notifiable); if (($key = array_search('mail', $channels, true)) !== false) { unset($channels[$key]); } return $channels; } }