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()); $user = User::with(['announcements'])->find(Auth::id());
// Data pengumuman // Data pengumuman
$data['announcements'] = $user->announcements() $data['overview_announcements'] = $user->announcements()
->where(function ($query) { ->where(function ($query) {
$query->where('announcements_users.category', '=', 'general'); $query->where('announcements_users.category', '=', 'general');
}) })

View File

@ -23,7 +23,13 @@ public function handle(Request $request, Closure $next): Response
$query->orderBy('id', 'desc'); $query->orderBy('id', 'desc');
}])->find(Auth::user()->id); }])->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); return $next($request);

View File

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

View File

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

View File

@ -5,12 +5,19 @@
<div class="container-fluid"> <div class="container-fluid">
<div class="nk-header-wrap"> <div class="nk-header-wrap">
<div class="nk-menu-trigger d-xl-none ms-n1"> <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> <a href="#" class="nk-nav-toggle nk-quick-nav-icon" data-target="sidebarMenu"><em
class="icon ni ni-menu"></em></a>
</div> </div>
<div class="nk-header-brand d-xl-none"> <div class="nk-header-brand d-xl-none">
<a href="javascript: void(0);" class="logo-link"> <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-light logo-img"
<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"> 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> </a>
</div><!-- .nk-header-brand --> </div><!-- .nk-header-brand -->
<div class="nk-header-tools"> <div class="nk-header-tools">
@ -22,7 +29,7 @@
@endforeach --}} @endforeach --}}
<li class="dropdown chats-dropdown hide-mb-xs"> <li class="dropdown chats-dropdown hide-mb-xs">
<a href="#" class="dropdown-toggle nk-quick-nav-icon" data-bs-toggle="dropdown"> <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 class="icon-status {{ $hasUnread ? 'icon-status-info' : 'icon-status-na' }}"><em class="icon ni ni-bell"></em>
</div> </div>
</a> </a>
<div class="dropdown-menu dropdown-menu-xl dropdown-menu-end"> <div class="dropdown-menu dropdown-menu-xl dropdown-menu-end">
@ -35,24 +42,29 @@
@foreach ($announcements as $item) @foreach ($announcements as $item)
{{-- {{dd($item->pivot)}} --}} {{-- {{dd($item->pivot)}} --}}
<li class="chat-item"> <li class="chat-item">
<a class="chat-link" href="{{route('dashboard.announcements.read', ['id' => encrypt_id($item->id)])}}" title="{{$item->headline}}"> <a class="chat-link"
href="{{ route('dashboard.announcements.read', ['id' => encrypt_id($item->id)]) }}">
<div class="chat-media user-avatar bg-transparent"> <div class="chat-media user-avatar bg-transparent">
<img src="{{asset('assets/dashboard/images/marketing.png')}}" alt=""> <img src="{{ asset('assets/dashboard/images/marketing.png') }}"
alt="">
</div> </div>
<div class="chat-info"> <div class="chat-info">
<div class="chat-from"> <div class="chat-from">
<div class="name">Administrator</div> <div class="name">Administrator</div>
<span class="time">{{idn_date($item->created_at, 'd M Y')}}</span> <span
class="time">{{ idn_date($item->created_at, 'd M Y') }}</span>
</div> </div>
<div class="chat-context"> <div class="chat-context">
<div class="text">{{$item->headline}}</div> <div class="text">{!! $item->headline !!}
</div>
@if ($item->pivot->status == '0') @if ($item->pivot->status == '0')
<div class="status delivered"> <div class="status delivered">
<em class="icon ni ni-check-circle"></em> <em class="icon ni ni-check-circle"></em>
</div> </div>
@else @else
<div class="status delivered"> <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> </div>
@endif @endif
</div> </div>
@ -63,7 +75,8 @@
</ul><!-- .chat-list --> </ul><!-- .chat-list -->
</div><!-- .nk-dropdown-body --> </div><!-- .nk-dropdown-body -->
<div class="dropdown-foot center"> <div class="dropdown-foot center">
<a href="{{route('dashboard.announcements.index')}}">Lihat Semua</a> <a href="{{ route('dashboard.announcements.index') }}">Lihat
Semua</a>
</div> </div>
</div> </div>
</li> </li>
@ -117,7 +130,8 @@
</div> </div>
<div class="user-info d-none d-xl-block"> <div class="user-info d-none d-xl-block">
<div class="user-status text-info">{{ get_role_name() }}</div> <div class="user-status text-info">{{ get_role_name() }}</div>
<div class="user-name dropdown-indicator">{{Auth::user()->name}}</div> <div class="user-name dropdown-indicator">{{ Auth::user()->name }}
</div>
</div> </div>
</div> </div>
</a> </a>
@ -135,14 +149,22 @@
</div> </div>
<div class="dropdown-inner"> <div class="dropdown-inner">
<ul class="link-list"> <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.profile', ['type' => 'account']) }}"><em
<li><a href="{{route('dashboard.users.setting')}}"><em class="icon ni ni-setting-alt"></em><span>Pengaturan Akun</span></a></li> class="icon ni ni-user-alt"></em><span>Profile</span></a>
<li><a class="dark-switch" href="#"><em class="icon ni ni-moon"></em><span>Mode Gelap</span></a></li> </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> </ul>
</div> </div>
<div class="dropdown-inner"> <div class="dropdown-inner">
<ul class="link-list"> <ul class="link-list">
<li><a href="{{route('auth.logout')}}"><em class="icon ni ni-signout"></em><span>Keluar</span></a></li> <li><a href="{{ route('auth.logout') }}"><em
class="icon ni ni-signout"></em><span>Keluar</span></a>
</li>
</ul> </ul>
</div> </div>
</div> </div>

View File

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