2024-05-25 12:25:57 +00:00
< ? 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 ;
2024-05-26 10:53:59 +00:00
use Illuminate\Support\Facades\Log ;
2024-05-25 12:25:57 +00:00
use App\Models\Address ;
class NodeMarkedDown extends Notification //implements ShouldQueue
{
use Queueable ;
2024-05-26 10:53:59 +00:00
private const LOGKEY = 'NEM' ;
2024-05-25 12:25:57 +00:00
/**
* 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
{
2024-05-26 10:53:59 +00:00
Log :: info ( sprintf ( '%s:+ Sending a NODE MARKED DOWN EMAIL for address [%s]' , self :: LOGKEY , $this -> ao -> ftn ));
2024-05-25 12:25:57 +00:00
$now = Carbon :: now ();
return ( new MailMessage )
-> cc ( our_address ( $this -> ao ) -> system -> users -> first () -> email )
-> subject ( sprintf ( 'ACTION REQUIRED: Your system will be delisted on %s' , $now -> format ( 'Y-m-d' )))
2024-06-30 01:25:04 +00:00
-> line ( sprintf ( 'Your system has been marked **DOWN**, because it hasnt polled **%s** with address %s since **%s** (%d days).' ,
$this -> ao -> zone -> domain -> name ,
$this -> ao -> ftn4d ,
$this -> ao -> system -> last_session -> format ( 'Y-m-d' ),
$this -> ao -> system -> last_session -> diffInDays ( $now )))
2024-05-25 12:25:57 +00:00
-> line ( '' )
-> line ( 'You have (waiting for collection):' )
-> lineIf ( $this -> ao -> uncollected_netmail , sprintf ( '* %s Netmails' , number_format ( $this -> ao -> uncollected_netmail )))
-> lineIf ( $this -> ao -> uncollected_echomail , sprintf ( '* %s Echomails' , number_format ( $this -> ao -> uncollected_echomail )))
-> lineIf ( $this -> ao -> uncollected_files , sprintf ( '* %s Files' , number_format ( $this -> ao -> uncollected_files )))
-> line ( '' )
-> line ( sprintf ( 'Your system will automatically be **DE-LISTED** if your system hasnt polled to collected your mail/file(s) by **%s**' , $now -> addDays ( 7 ) -> format ( 'Y-m-d' )))
-> line ( 'If you think you\'ve received this email by mistake or need help, please let me know.' );
}
}