overdue as $item) { $current = [ 'bill' => $item['bill'], ]; $current['pay_dates'] = array_map( static function (string $date): string { return new Carbon($date)->isoFormat((string)trans('config.month_and_day_moment_js')); }, $item['dates']['pay_dates'] ); $info[] = $current; ++$count; } return new MailMessage() ->markdown('emails.subscriptions-overdue-warning', ['info' => $info, 'count' => $count]) ->subject($this->getSubject()) ; } private function getSubject(): string { if (count($this->overdue) > 1) { return (string)trans('email.subscriptions_overdue_subject_multi', ['count' => count($this->overdue)]); } return (string)trans('email.subscriptions_overdue_subject_single'); } public function toNtfy(User $notifiable): Message { $settings = ReturnsSettings::getSettings('ntfy', 'user', $notifiable); $message = new Message(); $message->topic($settings['ntfy_topic']); $message->title($this->getSubject()); $message->body((string)trans('email.bill_warning_please_action')); return $message; } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function toPushover(User $notifiable): PushoverMessage { return PushoverMessage::create((string)trans('email.bill_warning_please_action')) ->title($this->getSubject()) ; } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function toSlack(User $notifiable): SlackMessage { $bill = $this->bill; $url = route('bills.show', [$bill->id]); return new SlackMessage() ->warning() ->attachment(static function ($attachment) use ($bill, $url): void { $attachment->title((string)trans('firefly.visit_bill', ['name' => $bill->name]), $url); }) ->content($this->getSubject()) ; } /** * @SuppressWarnings("PHPMD.UnusedFormalParameter") */ public function via(User $notifiable): array { return ReturnsAvailableChannels::returnChannels('user', $notifiable); } }