119 lines
3.1 KiB
PHP
Executable File
119 lines
3.1 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Common\Workspaces\Notifications;
|
|
|
|
use Common\Workspaces\Workspace;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Contracts\Queue\ShouldQueue;
|
|
use Illuminate\Notifications\Messages\MailMessage;
|
|
use Illuminate\Notifications\Notification;
|
|
|
|
class WorkspaceInvitation extends Notification implements ShouldQueue
|
|
{
|
|
use Queueable;
|
|
|
|
const NOTIF_ID = 'W01';
|
|
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $workspace;
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $inviterName;
|
|
/**
|
|
* @var string
|
|
*/
|
|
private $joinCode;
|
|
|
|
public function __construct(
|
|
Workspace $workspace,
|
|
string $inviterName,
|
|
string $joinCode
|
|
) {
|
|
$this->workspace = $workspace;
|
|
$this->inviterName = $inviterName;
|
|
$this->joinCode = $joinCode;
|
|
}
|
|
|
|
/**
|
|
* Get the notification's delivery channels.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return array
|
|
*/
|
|
public function via($notifiable)
|
|
{
|
|
return ['mail', 'database'];
|
|
}
|
|
|
|
/**
|
|
* Get the mail representation of the notification.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return MailMessage
|
|
*/
|
|
public function toMail($notifiable)
|
|
{
|
|
$data = [
|
|
'inviter' => ucfirst($this->inviterName),
|
|
'workspace' => ucfirst($this->workspace->name),
|
|
'siteName' => config('app.name'),
|
|
];
|
|
|
|
return (new MailMessage())
|
|
->subject(__(':inviter invited you to :siteName :workspace', $data))
|
|
->line(__('Join your :workspace teammates on :siteName', $data))
|
|
->action(
|
|
__('Join your team'),
|
|
url("workspace/join/{$this->joinCode}"),
|
|
)
|
|
->line(__('This invitation link will expire in 3 days.'))
|
|
->line(
|
|
__(
|
|
'If you do not wish to join this workspace, no further action is required.',
|
|
),
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Get the array representation of the notification.
|
|
*
|
|
* @param mixed $notifiable
|
|
* @return array
|
|
*/
|
|
public function toArray($notifiable)
|
|
{
|
|
$translateData = [
|
|
'inviter' => ucfirst($this->inviterName),
|
|
'workspace' => ucfirst($this->workspace->name),
|
|
];
|
|
|
|
return [
|
|
'inviteId' => $this->joinCode,
|
|
'lines' => [
|
|
[
|
|
'content' => __(
|
|
':inviter invited you to join `:workspace.`',
|
|
$translateData,
|
|
),
|
|
],
|
|
[
|
|
'content' => __(
|
|
'Accepting the invitation will give you access to links, domains, overlays and other resources in this workspace.',
|
|
),
|
|
],
|
|
],
|
|
'buttonActions' => [
|
|
['label' => 'Join', 'action' => 'join', 'color' => 'primary'],
|
|
[
|
|
'label' => 'Decline',
|
|
'action' => 'decline',
|
|
'color' => 'error',
|
|
],
|
|
],
|
|
];
|
|
}
|
|
}
|