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

@ -1,74 +1,87 @@
<!-- wrap @s --> <!-- wrap @s -->
<div class="nk-wrap "> <div class="nk-wrap ">
<!-- main header @s --> <!-- main header @s -->
<div class="nk-header nk-header-fixed is-light"> <div class="nk-header nk-header-fixed is-light">
<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
</div> class="icon ni ni-menu"></em></a>
<div class="nk-header-brand d-xl-none"> </div>
<a href="javascript: void(0);" class="logo-link"> <div class="nk-header-brand d-xl-none">
<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"> <a href="javascript: void(0);" class="logo-link">
<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"> <img class="logo-light logo-img"
</a> src="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }}"
</div><!-- .nk-header-brand --> srcset="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }} 2x"
<div class="nk-header-tools"> alt="logo">
<ul class="nk-quick-nav"> <img class="logo-dark logo-img"
@if (is_role(['3'])) src="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }}"
{{-- {{dd($announcements)}} --}} srcset="{{ $app->app_logo == 'simedkom-logo-full.png' ? asset('assets/defaults/simedkom-logo-full.png') : asset('storage/uploads/settings/' . $app->app_logo) }} 2x"
{{-- @foreach ($announcements as $item) 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}} {{$item->pivot}}
@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">
<div class="dropdown-head"> <div class="dropdown-head">
<span class="sub-title nk-dropdown-title">Pengumuman</span> <span class="sub-title nk-dropdown-title">Pengumuman</span>
{{-- <a href="#">Setting</a> --}} {{-- <a href="#">Setting</a> --}}
</div> </div>
<div class="dropdown-body"> <div class="dropdown-body">
<ul class="chat-list"> <ul class="chat-list">
@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"
<div class="chat-media user-avatar bg-transparent"> href="{{ route('dashboard.announcements.read', ['id' => encrypt_id($item->id)]) }}">
<img src="{{asset('assets/dashboard/images/marketing.png')}}" alt=""> <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>
<div class="chat-info"> <div class="chat-context">
<div class="chat-from"> <div class="text">{!! $item->headline !!}
<div class="name">Administrator</div>
<span class="time">{{idn_date($item->created_at, 'd M Y')}}</span>
</div> </div>
<div class="chat-context"> @if ($item->pivot->status == '0')
<div class="text">{{$item->headline}}</div>
@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> </div>
</a> </div>
</li><!-- .chat-item --> </a>
@endforeach </li><!-- .chat-item -->
</ul><!-- .chat-list --> @endforeach
</div><!-- .nk-dropdown-body --> </ul><!-- .chat-list -->
<div class="dropdown-foot center"> </div><!-- .nk-dropdown-body -->
<a href="{{route('dashboard.announcements.index')}}">Lihat Semua</a> <div class="dropdown-foot center">
</div> <a href="{{ route('dashboard.announcements.index') }}">Lihat
</div> Semua</a>
</li> </div>
@endif </div>
{{-- <li class="dropdown notification-dropdown"> </li>
@endif
{{-- <li class="dropdown notification-dropdown">
<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-info"><em class="icon ni ni-bell"></em></div> <div class="icon-status icon-status-info"><em class="icon ni ni-bell"></em></div>
</a> </a>
@ -109,47 +122,56 @@
</div> </div>
</div> </div>
</li> --}} </li> --}}
<li class="dropdown user-dropdown"> <li class="dropdown user-dropdown">
<a href="#" class="dropdown-toggle me-n1" data-bs-toggle="dropdown"> <a href="#" class="dropdown-toggle me-n1" data-bs-toggle="dropdown">
<div class="user-toggle"> <div class="user-toggle">
<div class="user-avatar sm"> <div class="user-avatar sm">
<em class="icon ni ni-user-alt"></em> <em class="icon ni ni-user-alt"></em>
</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>
</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>
</li> </div>
</ul> </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>
</div><!-- .nk-header-wrap --> </li>
</div><!-- .container-fliud --> </ul>
</div> </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> <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">