2020-06-27 00:32:33 +01:00
< ? php
2020-10-10 16:30:26 +00:00
/*
* Copyright © 2020 Miguel Nogueira
*
* This file is part of Raspberry Staff Manager .
*
* Raspberry Staff Manager is free software : you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation , either version 3 of the License , or
* ( at your option ) any later version .
*
* Raspberry Staff Manager is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with Raspberry Staff Manager . If not , see < https :// www . gnu . org / licenses />.
*/
2020-06-27 00:32:33 +01:00
namespace App\Notifications ;
2020-10-10 16:30:26 +00:00
use App\Facades\Options ;
use App\Traits\Cancellable ;
use App\Vacancy ;
2020-06-27 00:32:33 +01:00
use Illuminate\Bus\Queueable ;
use Illuminate\Contracts\Queue\ShouldQueue ;
use Illuminate\Notifications\Messages\MailMessage ;
use Illuminate\Notifications\Notification ;
2020-07-11 20:34:26 +01:00
use Illuminate\Queue\SerializesModels ;
2020-06-27 00:32:33 +01:00
2022-02-11 01:55:01 +00:00
class VacancyStatusUpdated extends Notification implements ShouldQueue
2020-06-27 00:32:33 +01:00
{
2020-08-31 22:06:00 +01:00
use Queueable , SerializesModels , Cancellable ;
2020-06-27 00:32:33 +01:00
2022-02-11 01:55:01 +00:00
protected string $status ;
protected Vacancy $vacancy ;
2020-06-27 00:32:33 +01:00
/**
* Create a new notification instance .
*
* @ return void
*/
2022-02-11 01:55:01 +00:00
public function __construct ( Vacancy $vacancy , $status )
2020-06-27 00:32:33 +01:00
{
2022-02-11 01:55:01 +00:00
// there's no simpler solution to this for now, but an array works
$statusDict = [
'open' => 'opened' ,
'close' => 'closed'
];
2020-10-10 16:30:26 +00:00
$this -> vacancy = $vacancy ;
2022-02-11 01:55:01 +00:00
$this -> status = $statusDict [ $status ];
2020-06-27 00:32:33 +01:00
}
2020-08-31 22:06:00 +01:00
public function optOut ( $notifiable )
2020-06-27 00:32:33 +01:00
{
2022-02-11 00:51:16 +00:00
return Options :: getOption ( 'notify_vacancystatus_change' ) != 1 ;
2020-06-27 00:32:33 +01:00
}
/**
* Get the mail representation of the notification .
*
* @ param mixed $notifiable
* @ return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail ( $notifiable )
{
2022-02-11 01:55:01 +00:00
2020-06-27 00:32:33 +01:00
return ( new MailMessage )
2022-02-10 20:33:08 +00:00
-> greeting ( 'Hi ' . $notifiable -> name . ',' )
2020-06-27 00:32:33 +01:00
-> from ( config ( 'notification.sender.address' ), config ( 'notification.sender.name' ))
2022-02-11 01:55:01 +00:00
-> subject ( config ( 'app.name' ) . ' - Vacancy ' . $this -> status )
-> line ( 'The vacancy ' . $this -> vacancy -> vacancyName . ', with ' . $this -> vacancy -> vacancyCount . ' remaining slots, has just been ' . $this -> status . '.' )
-> line ( 'Please be aware that this position may be change at any time.' )
-> line ( 'You are receiving this email because you currently have staff/team member privileges. Depending on your access level, you may not be able to view the list of positions on the backoffice.' )
2020-06-27 00:32:33 +01:00
-> action ( 'View positions' , url ( route ( 'showPositions' )))
2022-02-10 15:45:22 +00:00
-> salutation ( 'The team at ' . config ( 'app.name' ));
2020-06-27 00:32:33 +01:00
}
/**
* Get the array representation of the notification .
*
* @ param mixed $notifiable
* @ return array
*/
public function toArray ( $notifiable )
{
return [
//
];
}
}