diff --git a/app/Http/Controllers/Common/Notifications.php b/app/Http/Controllers/Common/Notifications.php index e19dd8c83..5e8c0356d 100644 --- a/app/Http/Controllers/Common/Notifications.php +++ b/app/Http/Controllers/Common/Notifications.php @@ -34,7 +34,19 @@ class Notifications extends Controller $notification->markAsRead(); } - $message = trans('messages.success.duplicated', ['type' => trans_choice('general.items', 1)]); + // Hide New Apps Notifications + $module_notifications = $this->getNotifications('new-apps' ); + + foreach ($module_notifications as $module_notification) { + setting()->set('notifications.'. user()->id . '.' . $module_notification->alias . '.name', $module_notification->name); + setting()->set('notifications.'. user()->id . '.' . $module_notification->alias . '.message', $module_notification->alias); + setting()->set('notifications.'. user()->id . '.' . $module_notification->alias . '.date', Date::now()); + setting()->set('notifications.'. user()->id . '.' . $module_notification->alias . '.status', '0'); + } + + setting()->save(); + + $message = trans('messages.success.duplicated', ['type' => trans_choice('general.notificatinos', 1)]); flash($message)->success(); diff --git a/app/Http/Livewire/Common/Notifications/NewApps.php b/app/Http/Livewire/Common/Notifications/NewApps.php index f3b4b0015..21e4a03e6 100644 --- a/app/Http/Livewire/Common/Notifications/NewApps.php +++ b/app/Http/Livewire/Common/Notifications/NewApps.php @@ -2,6 +2,7 @@ namespace App\Http\Livewire\Common\Notifications; +use Date; use App\Traits\Modules; use Livewire\Component; @@ -9,10 +10,91 @@ class NewApps extends Component { use Modules; + public function markRead($alias) + { + $notifications = $this->getNotifications('new-apps' ); + + foreach ($notifications as $notification) { + if ($notification->alias != $alias) { + continue; + } + + $readed = $notification; + } + + setting()->set('notifications.'. user()->id . '.' . $alias . '.name', $readed->name); + setting()->set('notifications.'. user()->id . '.' . $alias . '.message', $readed->alias); + setting()->set('notifications.'. user()->id . '.' . $alias . '.date', Date::now()); + setting()->set('notifications.'. user()->id . '.' . $alias . '.status', '0'); + + setting()->save(); + + $this->dispatchBrowserEvent('mark-read', [ + 'type' => 'new-apps', + 'message' => trans('notifications.messages.mark_read', ['type' => $notification->name]), + ]); + } + + public function markReadAll() + { + $notifications = $this->getNotifications('new-apps' ); + + foreach ($notifications as $notification) { + setting()->set('notifications.'. user()->id . '.' . $notification->alias . '.name', $notification->name); + setting()->set('notifications.'. user()->id . '.' . $notification->alias . '.message', $notification->alias); + setting()->set('notifications.'. user()->id . '.' . $notification->alias . '.date', Date::now()); + setting()->set('notifications.'. user()->id . '.' . $notification->alias . '.status', '0'); + + } + + setting()->save(); + + $this->dispatchBrowserEvent('mark-read-all', [ + 'type' => 'new-apps', + 'message' => trans('notifications.messages.mark_read_all', ['type' => trans_choice('notifications.new_apps', 2)]), + ]); + } + public function render() { $notifications = $this->getNotifications('new-apps'); + $this->clearReadNotifications($notifications); + return view('livewire.common.notifications.new-apps', compact('notifications')); } + + protected function clearReadNotifications(&$notifications) + { + $hide_notifications = setting('notifications.' . user()->id); + + if (!$hide_notifications) { + return; + } + + if (!$notifications) { + return; + } + + $aliases = []; + + // MarkRead app notification + foreach ($notifications as $index => $notification) { + $aliases[] = $notification->alias; + + if (setting('notifications.' . user()->id . '.' . $notification->alias)) { + unset($notifications[$index]); + } + } + + // Clear setting table missing notification + foreach ($hide_notifications as $alias => $hide_notification) { + if (in_array($alias, $aliases)) { + continue; + } + + setting()->forget('notifications.' . user()->id . '.' . $alias); + setting()->save(); + } + } } diff --git a/resources/views/livewire/common/notifications/new-apps.blade.php b/resources/views/livewire/common/notifications/new-apps.blade.php index 6fe7f040f..d2b8b33ce 100644 --- a/resources/views/livewire/common/notifications/new-apps.blade.php +++ b/resources/views/livewire/common/notifications/new-apps.blade.php @@ -1,29 +1,76 @@ -@if ($notifications) -
+ | {!! $notification->message !!} | + ++ + |