librenms/app/Listeners/MarkNotificationsRead.php
Jellyfrog 2b3575a5e9
Laravel 10.x Shift (#14995)
* Apply code style

* Remove explicit call to register policies

* Shift core files

* Shift config files

* Default config files

In an effort to make upgrading the constantly changing config files
easier, Shift defaulted them and merged your true customizations -
where ENV variables may not be used.

* Bump Laravel dependencies

* Add type hints for Laravel 10

* Shift cleanup

* wip

* wip

* sync translation

* Sync back config

* Public Path Binding

* QueryException

* monolog

* db::raw

* monolog

* db::raw

* fix larastan collections

* fix phpstan bug looping forever

* larastan errors

* larastan: fix column type

* styleci

* initialize array

* fixes

* fixes

---------

Co-authored-by: Shift <shift@laravelshift.com>
2023-05-24 22:21:54 +02:00

49 lines
1.3 KiB
PHP

<?php
namespace App\Listeners;
use App\Events\UserCreated;
use App\Models\Notification;
use App\Models\NotificationAttrib;
use Illuminate\Support\Facades\DB;
class MarkNotificationsRead
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Handle the event.
*
* @param UserCreated $event
* @return void
*/
public function handle(UserCreated $event): void
{
$user = $event->user;
// mark pre-existing notifications as read
NotificationAttrib::query()->insert(Notification::whereNotExists(function ($query) use ($user) {
return $query->select(DB::raw(1))
->from('notifications_attribs')
->whereRaw('notifications.notifications_id = notifications_attribs.notifications_id')
->where('notifications_attribs.user_id', $user->user_id);
})->get()->map(function ($notif) use ($user) {
return [
'notifications_id' => $notif->notifications_id,
'user_id' => $user->user_id,
'key' => 'read',
'value' => 1,
];
})->toArray());
\Log::info('Marked all notifications as read for user ' . $user->username);
}
}