HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //home/xedaptot/iphim.naniguide.com/common/Notifications/SubscribeUserToNotifications.php
<?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);
    }
}