File "SubscribeUserToNotifications.php"
Full Path: /var/www/drive/foundation/src/Notifications/SubscribeUserToNotifications.php
File size: 1.2 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace Common\Notifications;
use App\Models\User;
use File;
use Ramsey\Uuid\Uuid;
class SubscribeUserToNotifications
{
public function execute(User $user, ?array $notificationIds)
{
$config = File::getRequire(
resource_path('defaults/notification-settings.php'),
);
if (is_null($notificationIds)) {
$notificationIds = collect($config['subscriptions'])
->map(function ($group) {
return collect($group['subscriptions'])->pluck('notif_id');
})
->flatten(1)
->toArray();
}
$rows = array_map(function ($notifId) use ($config, $user) {
return [
'id' => Uuid::uuid4(),
'notif_id' => $notifId,
'channels' => json_encode(
collect($config['available_channels'])->mapWithKeys(
fn($channel) => [$channel => true],
),
),
'user_id' => $user->id,
];
}, $notificationIds);
$user->notificationSubscriptions()->delete();
$user->notificationSubscriptions()->insert($rows);
}
}