65 lines
1.7 KiB
PHP
65 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Notifications;
|
|
|
|
use App\Mail\VolunteerUnassignToTaskMail;
|
|
use App\Models\Event;
|
|
use App\Models\Task;
|
|
use Illuminate\Bus\Queueable;
|
|
use Illuminate\Notifications\Notification;
|
|
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
|
|
use Illuminate\Notifications\Messages\BroadcastMessage;
|
|
use Illuminate\Support\Facades\Mail;
|
|
|
|
class VolunteerUnassignedFromTask extends Notification implements ShouldBroadcast
|
|
{
|
|
use Queueable;
|
|
|
|
public function __construct(
|
|
public Task $task,
|
|
public Event $event,
|
|
) {}
|
|
|
|
public function via($notifiable): array
|
|
{
|
|
$channels = [];
|
|
|
|
if ($notifiable->web_notifications) {
|
|
$channels[] = 'database';
|
|
$channels[] = 'broadcast';
|
|
}
|
|
|
|
if ($notifiable->email_notifications) {
|
|
$channels[] = 'mail';
|
|
}
|
|
|
|
return $channels;
|
|
}
|
|
|
|
public function toDatabase($notifiable): array
|
|
{
|
|
return [
|
|
'message' => "Vous avez été désassigné de la tâche {$this->task->name} de l'événement {$this->event->name}.",
|
|
'task_id' => $this->task->id,
|
|
'event_id' => $this->event->id,
|
|
];
|
|
}
|
|
|
|
public function toBroadcast($notifiable): BroadcastMessage
|
|
{
|
|
return new BroadcastMessage($this->toDatabase($notifiable));
|
|
}
|
|
|
|
public function toMail($notifiable): void
|
|
{
|
|
Mail::to($notifiable->email)->send(new VolunteerUnassignToTaskMail([
|
|
'name' => $notifiable->name,
|
|
'lastname' => $notifiable->lastname,
|
|
'taskName' => $this->task->name,
|
|
'start' => $this->task->start,
|
|
'end' => $this->task->end,
|
|
'eventName' => $this->event->name,
|
|
]));
|
|
}
|
|
}
|