fix(announcement): hide menu from sidebar

-feat query for mark when announcements unread
-change var for calendar in overview
This commit is contained in:
Yoga Pangestu 2025-10-13 11:09:35 +07:00
parent aad2e3bbde
commit 64c53b0314
6 changed files with 136 additions and 110 deletions

View File

@ -120,7 +120,7 @@ public function index(Request $request)
$user = User::with(['announcements'])->find(Auth::id());
// Data pengumuman
$data['announcements'] = $user->announcements()
$data['overview_announcements'] = $user->announcements()
->where(function ($query) {
$query->where('announcements_users.category', '=', 'general');
})

View File

@ -23,7 +23,13 @@ public function handle(Request $request, Closure $next): Response
$query->orderBy('id', 'desc');
}])->find(Auth::user()->id);
View::share('announcements', $user->announcements);
$announcements = $user->announcements;
$hasUnread = $announcements->some(fn ($a) => $a->pivot->status == 0);
View::share([
'announcements' => $announcements,
'hasUnread' => $hasUnread,
]);
}
return $next($request);

View File

@ -118,7 +118,7 @@
$('.popover').popover('hide');
},
events: [
@foreach($announcements as $announcement)
@foreach($overview_announcements as $announcement)
{
id: 'default-event-id-' + Math.floor(Math.random() * 9999999),
title: "Pengumuman",

View File

@ -74,8 +74,6 @@
@include('partials.app.sweetalert')
{{-- {{dd(request()->all())}} --}}
@if (isset($page))
@if ($page === 'create_issue_management')
<script src="{{asset('assets/dashboard/js/issue-managements/create.js')}}"></script>
@ -96,7 +94,7 @@
@if(is_role(['1']))
@include('partials.app.calendars.admin')
@elseif (is_role(['3']))
@include('partials.app.calendars.media')
@include('partials.app.calendars.media',['overview_announcements' => $overview_announcements])
@endif
@endif

View File

@ -1,74 +1,87 @@
<!-- wrap @s -->
<div class="nk-wrap ">
<!-- main header @s -->
<div class="nk-header nk-header-fixed is-light">
<div class="container-fluid">
<div class="nk-header-wrap">
<div class="nk-menu-trigger d-xl-none ms-n1">
<a href="#" class="nk-nav-toggle nk-quick-nav-icon" data-target="sidebarMenu"><em class="icon ni ni-menu"></em></a>
</div>
<div class="nk-header-brand d-xl-none">
<a href="javascript: void(0);" class="logo-link">
<img class="logo-light logo-img" src="{{$app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/'. $app->app_logo)}}" srcset="{{$app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/'. $app->app_logo)}} 2x" alt="logo">
<img class="logo-dark logo-img" src="{{$app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/'. $app->app_logo)}}" srcset="{{$app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/'. $app->app_logo)}} 2x" alt="logo-dark">
</a>
</div><!-- .nk-header-brand -->
<div class="nk-header-tools">
<ul class="nk-quick-nav">
@if (is_role(['3']))
{{-- {{dd($announcements)}} --}}
{{-- @foreach ($announcements as $item)
<!-- wrap @s -->
<div class="nk-wrap ">
<!-- main header @s -->
<div class="nk-header nk-header-fixed is-light">
<div class="container-fluid">
<div class="nk-header-wrap">
<div class="nk-menu-trigger d-xl-none ms-n1">
<a href="#" class="nk-nav-toggle nk-quick-nav-icon" data-target="sidebarMenu"><em
class="icon ni ni-menu"></em></a>
</div>
<div class="nk-header-brand d-xl-none">
<a href="javascript: void(0);" class="logo-link">
<img class="logo-light logo-img"
src="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }}"
srcset="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }} 2x"
alt="logo">
<img class="logo-dark logo-img"
src="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }}"
srcset="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }} 2x"
alt="logo-dark">
</a>
</div><!-- .nk-header-brand -->
<div class="nk-header-tools">
<ul class="nk-quick-nav">
@if (is_role(['3']))
{{-- {{dd($announcements)}} --}}
{{-- @foreach ($announcements as $item)
{{$item->pivot}}
@endforeach --}}
<li class="dropdown chats-dropdown hide-mb-xs">
<a href="#" class="dropdown-toggle nk-quick-nav-icon" data-bs-toggle="dropdown">
<div class="icon-status icon-status-na"><em class="icon ni ni-bell"></em>
</div>
</a>
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-end">
<div class="dropdown-head">
<span class="sub-title nk-dropdown-title">Pengumuman</span>
{{-- <a href="#">Setting</a> --}}
</div>
<div class="dropdown-body">
<ul class="chat-list">
@foreach ($announcements as $item)
{{-- {{dd($item->pivot)}} --}}
<li class="chat-item">
<a class="chat-link" href="{{route('dashboard.announcements.read', ['id' => encrypt_id($item->id)])}}" title="{{$item->headline}}">
<div class="chat-media user-avatar bg-transparent">
<img src="{{asset('assets/dashboard/images/marketing.png')}}" alt="">
<li class="dropdown chats-dropdown hide-mb-xs">
<a href="#" class="dropdown-toggle nk-quick-nav-icon" data-bs-toggle="dropdown">
<div class="icon-status {{ $hasUnread ? 'icon-status-info' : 'icon-status-na' }}"><em class="icon ni ni-bell"></em>
</div>
</a>
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-end">
<div class="dropdown-head">
<span class="sub-title nk-dropdown-title">Pengumuman</span>
{{-- <a href="#">Setting</a> --}}
</div>
<div class="dropdown-body">
<ul class="chat-list">
@foreach ($announcements as $item)
{{-- {{dd($item->pivot)}} --}}
<li class="chat-item">
<a class="chat-link"
href="{{ route('dashboard.announcements.read', ['id' => encrypt_id($item->id)]) }}">
<div class="chat-media user-avatar bg-transparent">
<img src="{{ asset('assets/dashboard/images/marketing.png') }}"
alt="">
</div>
<div class="chat-info">
<div class="chat-from">
<div class="name">Administrator</div>
<span
class="time">{{ idn_date($item->created_at, 'd M Y') }}</span>
</div>
<div class="chat-info">
<div class="chat-from">
<div class="name">Administrator</div>
<span class="time">{{idn_date($item->created_at, 'd M Y')}}</span>
<div class="chat-context">
<div class="text">{!! $item->headline !!}
</div>
<div class="chat-context">
<div class="text">{{$item->headline}}</div>
@if ($item->pivot->status == '0')
@if ($item->pivot->status == '0')
<div class="status delivered">
<em class="icon ni ni-check-circle"></em>
</div>
@else
@else
<div class="status delivered">
<em class="icon ni ni-check-circle-fill text-primary"></em>
<em
class="icon ni ni-check-circle-fill text-primary"></em>
</div>
@endif
</div>
@endif
</div>
</a>
</li><!-- .chat-item -->
@endforeach
</ul><!-- .chat-list -->
</div><!-- .nk-dropdown-body -->
<div class="dropdown-foot center">
<a href="{{route('dashboard.announcements.index')}}">Lihat Semua</a>
</div>
</div>
</li>
@endif
{{-- <li class="dropdown notification-dropdown">
</div>
</a>
</li><!-- .chat-item -->
@endforeach
</ul><!-- .chat-list -->
</div><!-- .nk-dropdown-body -->
<div class="dropdown-foot center">
<a href="{{ route('dashboard.announcements.index') }}">Lihat
Semua</a>
</div>
</div>
</li>
@endif
{{-- <li class="dropdown notification-dropdown">
<a href="#" class="dropdown-toggle nk-quick-nav-icon" data-bs-toggle="dropdown">
<div class="icon-status icon-status-info"><em class="icon ni ni-bell"></em></div>
</a>
@ -109,47 +122,56 @@
</div>
</div>
</li> --}}
<li class="dropdown user-dropdown">
<a href="#" class="dropdown-toggle me-n1" data-bs-toggle="dropdown">
<div class="user-toggle">
<div class="user-avatar sm">
<em class="icon ni ni-user-alt"></em>
</div>
<div class="user-info d-none d-xl-block">
<div class="user-status text-info">{{get_role_name()}}</div>
<div class="user-name dropdown-indicator">{{Auth::user()->name}}</div>
</div>
</div>
</a>
<div class="dropdown-menu dropdown-menu-md dropdown-menu-end">
<div class="dropdown-inner user-card-wrap bg-lighter d-none d-md-block">
<div class="user-card">
<div class="user-avatar">
<em class="icon ni ni-user-alt"></em>
</div>
<div class="user-info">
<span class="lead-text">{{Auth::user()->name}}</span>
<span class="sub-text">{{Auth::user()->email}}</span>
</div>
</div>
</div>
<div class="dropdown-inner">
<ul class="link-list">
<li><a href="{{route('dashboard.users.profile', ['type' => 'account'])}}"><em class="icon ni ni-user-alt"></em><span>Profile</span></a></li>
<li><a href="{{route('dashboard.users.setting')}}"><em class="icon ni ni-setting-alt"></em><span>Pengaturan Akun</span></a></li>
<li><a class="dark-switch" href="#"><em class="icon ni ni-moon"></em><span>Mode Gelap</span></a></li>
</ul>
</div>
<div class="dropdown-inner">
<ul class="link-list">
<li><a href="{{route('auth.logout')}}"><em class="icon ni ni-signout"></em><span>Keluar</span></a></li>
</ul>
</div>
<li class="dropdown user-dropdown">
<a href="#" class="dropdown-toggle me-n1" data-bs-toggle="dropdown">
<div class="user-toggle">
<div class="user-avatar sm">
<em class="icon ni ni-user-alt"></em>
</div>
<div class="user-info d-none d-xl-block">
<div class="user-status text-info">{{ get_role_name() }}</div>
<div class="user-name dropdown-indicator">{{ Auth::user()->name }}
</div>
</li>
</ul>
</div>
</div>
</a>
<div class="dropdown-menu dropdown-menu-md dropdown-menu-end">
<div class="dropdown-inner user-card-wrap bg-lighter d-none d-md-block">
<div class="user-card">
<div class="user-avatar">
<em class="icon ni ni-user-alt"></em>
</div>
<div class="user-info">
<span class="lead-text">{{ Auth::user()->name }}</span>
<span class="sub-text">{{ Auth::user()->email }}</span>
</div>
</div>
</div>
<div class="dropdown-inner">
<ul class="link-list">
<li><a href="{{ route('dashboard.users.profile', ['type' => 'account']) }}"><em
class="icon ni ni-user-alt"></em><span>Profile</span></a>
</li>
<li><a href="{{ route('dashboard.users.setting') }}"><em
class="icon ni ni-setting-alt"></em><span>Pengaturan
Akun</span></a></li>
<li><a class="dark-switch" href="#"><em
class="icon ni ni-moon"></em><span>Mode Gelap</span></a>
</li>
</ul>
</div>
<div class="dropdown-inner">
<ul class="link-list">
<li><a href="{{ route('auth.logout') }}"><em
class="icon ni ni-signout"></em><span>Keluar</span></a>
</li>
</ul>
</div>
</div>
</div><!-- .nk-header-wrap -->
</div><!-- .container-fliud -->
</li>
</ul>
</div>
<!-- main header @e -->
</div><!-- .nk-header-wrap -->
</div><!-- .container-fliud -->
</div>
<!-- main header @e -->

View File

@ -38,7 +38,7 @@
<span class="nk-menu-badge bg-success text-white" style="color: white !important;">{{get_cooperation_notif()}}</span>
</a>
</li><!-- .nk-menu-item -->
<li class="nk-menu-heading">
{{-- <li class="nk-menu-heading">
<h6 class="overline-title text-primary-alt">Informasi</h6>
</li><!-- .nk-menu-item -->
<li class="nk-menu-item">
@ -47,7 +47,7 @@
<span class="nk-menu-text">Pengumuman</span>
<span class="nk-menu-badge bg-success text-white" style="color: white !important;">{{get_unread_announcements()}}</span>
</a>
</li><!-- .nk-menu-item -->
</li><!-- .nk-menu-item --> --}}
@endif
@if (is_role(['1']))
<li class="nk-menu-heading">