48 lines
1.7 KiB
PHP
48 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Services\Notifications;
|
|
|
|
use App\Models\Notification;
|
|
|
|
class NotificationManagementService
|
|
{
|
|
public function update(int $notificationId, array $payload): array
|
|
{
|
|
$notification = Notification::query()->find($notificationId);
|
|
if (!$notification) {
|
|
return ['ok' => false, 'message' => 'Notification not found.'];
|
|
}
|
|
|
|
$notification->update([
|
|
'title' => $payload['title'] ?? $notification->title,
|
|
'message' => $payload['message'] ?? $notification->message,
|
|
'target_group' => $payload['target_group'] ?? $notification->target_group,
|
|
'delivery_channels' => $payload['channels'] ?? $notification->delivery_channels,
|
|
'priority' => $payload['priority'] ?? $notification->priority,
|
|
'status' => $payload['status'] ?? $notification->status,
|
|
'action_url' => $payload['action_url'] ?? $notification->action_url,
|
|
'attachment_path' => $payload['attachment_path'] ?? $notification->attachment_path,
|
|
'scheduled_at' => $payload['scheduled_at'] ?? $notification->scheduled_at,
|
|
'expires_at' => $payload['expires_at'] ?? $notification->expires_at,
|
|
'updated_at' => utc_now(),
|
|
]);
|
|
|
|
return ['ok' => true, 'notification' => $notification];
|
|
}
|
|
|
|
public function delete(int $notificationId): bool
|
|
{
|
|
$notification = Notification::query()->find($notificationId);
|
|
if (!$notification) {
|
|
return false;
|
|
}
|
|
|
|
return (bool) $notification->delete();
|
|
}
|
|
|
|
public function restore(int $notificationId): bool
|
|
{
|
|
return Notification::restoreNotification($notificationId);
|
|
}
|
|
}
|