<?php use App\Models\NotificationReceiver; $new = NotificationReceiver::where('receiver', auth()->user()->email) ->where('status', 'unread') ->count(); ?> <div class="navbar-bg"></div> <nav class="navbar navbar-expand-lg main-navbar"> <form class="form-inline mr-auto"> <ul class="navbar-nav mr-3"> <li><a href="#" data-toggle="sidebar" class="nav-link nav-link-lg"><i class="fas fa-bars"></i></a></li> <li><a href="#" data-toggle="search" class="nav-link nav-link-lg d-sm-none"><i class="fas fa-search"></i></a></li> </ul> </form> <ul class="navbar-nav navbar-right"> @if (auth()->user()->role != 'Admin') <li class="dropdown dropdown-list-toggle"><a href="#" data-toggle="dropdown" class="nav-link notification-toggle nav-link-lg {{ $new > 0 ? 'beep' : '' }}" id="notifBtn"><i class="far fa-bell"></i></a> <div class="dropdown-menu dropdown-list dropdown-menu-right"> <div class="dropdown-header">Notifikasi <div class="float-right"> <a href="javascript: void(0);" id="markAllAsRead">Tandai semua telah dibaca</a> </div> </div> <div class="dropdown-list-content dropdown-list-icons" id="notifContent"> </div> <div class="dropdown-footer text-center"> <a href="{{ route('user-notification.index') }}">Lihat semua<i class="fas fa-chevron-right"></i></a> </div> </div> </li> @endif <li class="dropdown"><a href="#" data-toggle="dropdown" class="nav-link dropdown-toggle nav-link-lg nav-link-user"> <img alt="image" src="{{ Auth::user()->foto_profile == null ? asset('assets/img/avatar/avatar-1.png') : asset('storage/foto-profile/' . auth()->user()->foto_profile) }}" class="rounded-circle mr-1"> <div class="d-sm-none d-lg-inline-block">Hi, {{ Auth::user()->nama_depan }}</div> </a> <div class="dropdown-menu dropdown-menu-right"> <div class="dropdown-title">Logged in 5 min ago</div> <a href="{{ route('profile.index') }}" class="dropdown-item has-icon"> <i class="far fa-user"></i> Profile </a> <div class="dropdown-divider"></div> <a href="{{ route('logout') }}" class="dropdown-item has-icon text-danger"> <i class="fas fa-sign-out-alt"></i> Logout </a> </div> </li> </ul> </nav> @section('js-header') <script> $(document).ready(function() { var notifBtn = $('#notifBtn'); function updateNotif() { notifBtn.addClass("beep"); } function removeNotif() { notifBtn.removeClass("beep"); } $('#notifBtn').on('click', function() { const csrfToken = $('meta[name="csrf-token"]').attr('content'); var notifContent = $('#notifContent'); var activitiesHtml = ''; $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': csrfToken } }); $.ajax({ url: "{{ route('user-notification.latest-notification') }}", type: 'GET', success: function(response) { var notifications = response.notifications; if (notifications.length > 0) { notifications.forEach(element => { var url = "{{ route('user-notifiaction.detail-notification', ':id') }}" .replace(':id', element.id); var date = new Date(element.updated_at); var day = date.getDate(); var month = date.toLocaleString('id-ID', { month: 'short' }); var year = date.getFullYear(); var hours = date.getHours(); var minutes = date.getMinutes(); var formattedDate = day + ' ' + month + ' ' + year + " | " + hours + ":" + +(minutes < 10 ? '0' : '') + minutes; activitiesHtml += ` <a href="${url}" class="dropdown-item dropdown-item-unread"> <div class="dropdown-item-icon bg-primary text-white"> <i class="fas fa-code"></i> </div> <div class="dropdown-item-desc"> <h6>${element.title}</h6> ${element.teaser} <div class="time text-primary">${formattedDate}</div> </div> </a> `; }); } else { activitiesHtml += ` <a class="dropdown-item dropdown-item-unread"> <div class="dropdown-item-icon bg-primary text-white"> <i class="fas fa-code"></i> </div> <div class="dropdown-item-desc"> Tidak ada notifikasi baru <div class="time text-primary">--:--</div> </div> </a> `; } notifContent.html(activitiesHtml); }, error: function(error) { console.log(error); } }); }); $('#markAllAsRead').on('click', function() { const csrfToken = $('meta[name="csrf-token"]').attr('content'); $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': csrfToken } }); $.ajax({ url: "{{ route('user.notification.mark-all-as-read') }}", type: 'GET', success: function(response) { if (response.status) { removeNotif(); } else { console.log(response); } }, error: function(error) { console.log(error); } }); }); // Pusher.logToConsole = true; var pusher = new Pusher('3e5bdc20dddd7fbc655e', { cluster: 'ap1' }); var channel = pusher.subscribe('chanel-update-notifikasi'); channel.bind('event-update-notifikasi', function(data) { let receivers = data.receivers; let userEmail = "{{ auth()->user()->email }}"; if (Array.isArray(receivers)) { receivers.forEach(email => { if (email == userEmail) { updateNotif(); } }); } else { if (receivers == userEmail) { updateNotif(); } } console.log(data); }); }); </script> @endsection