<?php namespace App\Notifications\Emails; use Carbon\Carbon; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; use Illuminate\Support\Facades\Log; use App\Models\Address; class NodeMarkedHold extends Notification //implements ShouldQueue { use Queueable; private const LOGKEY = 'NEH'; /** * Create a new notification instance. */ public function __construct(private Address $ao) { } /** * Get the notification's delivery channels. * * @return array<int, string> */ public function via(object $notifiable): array { return ['mail']; } /** * Get the mail representation of the notification. */ public function toMail(object $notifiable): MailMessage { Log::info(sprintf('%s:+ Sending a NODE MARKED HOLD EMAIL for address [%s]',self::LOGKEY,$this->ao->ftn)); $now = Carbon::now(); return (new MailMessage) ->cc(our_address($this->ao)->system->users->first()->email) ->subject('Your system has been marked HOLD') ->line(sprintf('Your system has been marked **HOLD**, because it hasnt polled **%s** with address %s since **%s** (%d days).', $this->ao->zone->domain->name, $this->ao->ftn4d, $this->ao->system->last_seen?->format('Y-m-d') ?: 'Not seen', $this->ao->system->last_seen?->diffInDays($now))) ->line('') ->line('You have (waiting for collection):') ->line(sprintf('* %s Netmails',number_format($this->ao->netmailWaiting()->count()))) ->line(sprintf('* %s Echomails',number_format($this->ao->echomailWaiting()->count()))) ->line(sprintf('* %s Files',number_format($this->ao->filesWaiting()->count()))) ->line('') ->line(sprintf('To clear this status, all you need to do make sure your system polls and collects mail by **%s**',($this->ao->system->last_seen ?: Carbon::now())->addDays(config('fido.idle.down'))->format('Y-m-d'))) ->line('If you think you\'ve received this email by mistake or need help, please let me know.'); } }