2022-03-14 11:28:54 +00:00
< ? php
namespace App\Notifications ;
use Carbon\Carbon ;
use Illuminate\Bus\Queueable ;
use Illuminate\Contracts\Queue\ShouldQueue ;
use Illuminate\Notifications\Notification ;
use Illuminate\Support\Facades\Log ;
use App\Classes\ { ANSI , Fonts\Thin , Page };
use App\Classes\Fonts\Thick ;
use App\Classes\FTN\Message ;
use App\Models\ { Address , Netmail , Setup , User };
class AddressLink extends Notification //implements ShouldQueue
{
private const LOGKEY = 'NAL' ;
use Queueable ;
private Address $ao ;
private User $uo ;
/**
* Create a netmail to enable a sysop to activate an address .
*
* @ param Address $ao
* @ param User $uo
*/
public function __construct ( Address $ao , User $uo )
{
$this -> queue = 'netmail' ;
$this -> ao = $ao ;
$this -> uo = $uo ;
}
/**
* Get the notification ' s delivery channels .
*
2023-06-27 07:39:11 +00:00
* @ param mixed $notifiable
2022-03-14 11:28:54 +00:00
* @ return array
*/
public function via ( $notifiable )
{
return [ 'netmail' ];
}
/**
* Get the mail representation of the notification .
*
* @ param mixed $notifiable
* @ return Netmail
* @ throws \Exception
*/
public function toNetmail ( $notifiable ) : Netmail
{
Log :: info ( sprintf ( '%s:Sending a link code for address [%s]' , self :: LOGKEY , $this -> ao -> ftn ));
$so = Setup :: findOrFail ( config ( 'app.id' )) -> system ;
$o = new Netmail ;
$o -> to = $this -> ao -> system -> sysop ;
$o -> from = Setup :: PRODUCT_NAME ;
$o -> subject = 'Address Link Code' ;
$o -> datetime = Carbon :: now ();
$o -> tzoffset = $o -> datetime -> utcOffset ();
$o -> fftn_id = $so -> match ( $this -> ao -> zone ) -> first () -> id ;
$o -> tftn_id = $this -> ao -> id ;
$o -> flags = Message :: FLAG_LOCAL ;
$o -> cost = 0 ;
$o -> tagline = 'Address Linking...' ;
$o -> tearline = sprintf ( '%s (%04X)' , Setup :: PRODUCT_NAME , Setup :: PRODUCT_ID );
// Message
$msg = new Page ;
$msg -> addLogo ( new ANSI ( base_path ( 'public/logo/netmail.bin' )));
$header = new Thick ;
$header -> addText ( ANSI :: ansi_code ([ 1 , 37 ]) . 'Clearing Houz' );
$msg -> addHeader ( $header , 'FTN Mailer and Tosser' , TRUE , 0xc4 );
$lbc = new Thin ;
$lbc -> addText ( '#link' );
$msg -> addLeftBoxContent ( $lbc );
$msg -> addText ( sprintf (
" Hi %s, \r \r " .
" This message is to link your address [%s] to your user ID in the Clearing Houz web site. \r \r " .
" If you didnt start this process, then you can safely ignore this netmail. But if you wanted to link this address, please head over to [%s] and paste in the following: \r \r %s \r " ,
$this -> ao -> system -> sysop ,
$this -> ao -> ftn3d ,
url ( '/link' ),
$this -> ao -> set_activation ( $this -> uo )
));
$o -> msg = $msg -> render ();
$o -> save ();
return $o ;
}
}