34 خطوط
1.1 KiB
PHP
34 خطوط
1.1 KiB
PHP
<?php
|
|
|
|
namespace App\Notifications;
|
|
|
|
use App\Models\Notification;
|
|
use App\Models\Task;
|
|
use App\Models\User;
|
|
|
|
final class TaskAssignedNotification
|
|
{
|
|
public static function send(Task $task, User $actor, bool $reassigned = false): void
|
|
{
|
|
if (! $task->assigned_to || $task->assigned_to === $actor->id) {
|
|
return;
|
|
}
|
|
|
|
Notification::firstOrCreate(
|
|
['idempotency_key' => "task:{$task->id}:assignment:{$task->version}:{$task->assigned_to}"],
|
|
[
|
|
'user_id' => $task->assigned_to,
|
|
'title' => $reassigned ? 'کار جدید به شما واگذار شد' : 'کار جدید برای شما ثبت شد',
|
|
'message' => $task->subject,
|
|
'type' => $reassigned ? 'task_reassigned' : 'task_assigned',
|
|
'data' => [
|
|
'task_id' => $task->id,
|
|
'url' => "/tasks?task={$task->id}",
|
|
'actor' => ['id' => $actor->id, 'name' => $actor->name],
|
|
],
|
|
'is_read' => false,
|
|
]
|
|
);
|
|
}
|
|
}
|