308 lines
13 KiB
PHP
308 lines
13 KiB
PHP
</div> <!-- container -->
|
|
|
|
</div> <!-- content -->
|
|
|
|
<!-- Footer Start -->
|
|
<footer class="footer">
|
|
<div class="container-fluid">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<script>
|
|
document.write(new Date().getFullYear())
|
|
</script> © NHANCE
|
|
</div>
|
|
<!-- <div class="col-md-6">
|
|
<div class="text-md-right footer-links d-none d-sm-block">
|
|
<a href="javascript:void(0);">About Us</a>
|
|
<a href="javascript:void(0);">Help</a>
|
|
<a href="javascript:void(0);">Contact Us</a>
|
|
</div>
|
|
</div> -->
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
<!-- end Footer -->
|
|
|
|
</div>
|
|
|
|
<!-- ============================================================== -->
|
|
<!-- End Page content -->
|
|
<!-- ============================================================== -->
|
|
|
|
|
|
</div>
|
|
<!-- END wrapper -->
|
|
|
|
<!-- Right Sidebar -->
|
|
<div class="right-bar">
|
|
<div data-simplebar class="h-100">
|
|
|
|
<!-- Tab panes -->
|
|
<h6 class="font-weight-medium px-3 m-0 py-2 font-13 text-uppercase bg-light">
|
|
<i class="mdi mdi-message-text-outline font-22"></i><span class="" style="position: relative;bottom: 5px;left: 60px;">Notification</span>
|
|
</h6>
|
|
|
|
<div id="header-bar">
|
|
<div>
|
|
<ul class="list-unstyled" id="messages-list"></ul>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
</div> <!-- end slimscroll-menu-->
|
|
</div>
|
|
<!-- /Right-bar -->
|
|
|
|
<!-- Right bar overlay-->
|
|
<div class="rightbar-overlay"></div>
|
|
|
|
<!-- Vendor js -->
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/vendor.min.js"></script>
|
|
|
|
<!-- KNOB JS -->
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/jquery-knob/jquery.knob.min.js"></script>
|
|
<!-- Apex js-->
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/apexcharts/apexcharts.min.js"></script>
|
|
|
|
<!-- third party js -->
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net/js/jquery.dataTables.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-bs4/js/dataTables.bootstrap4.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive/js/dataTables.responsive.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-responsive-bs4/js/responsive.bootstrap4.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/dataTables.buttons.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons-bs4/js/buttons.bootstrap4.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.html5.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.flash.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-buttons/js/buttons.print.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-keytable/js/dataTables.keyTable.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/datatables.net-select/js/dataTables.select.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/pdfmake.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/pdfmake/build/vfs_fonts.js"></script>
|
|
<!-- third party js ends -->
|
|
|
|
<!-- Datatables init -->
|
|
<!-- <script src="<?= base_url() . "public"; ?>/assets/js/pages/datatables.init.js"></script> -->
|
|
|
|
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/pages/tickets.init.js"></script>
|
|
|
|
<!-- Plugins js-->
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/jquery-jvectormap-1.2.2.min.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/admin-resources/jquery.vectormap/maps/jquery-jvectormap-us-merc-en.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/libs/parsleyjs/parsley.min.js"></script>
|
|
|
|
<!-- Dashboard init-->
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/pages/dashboard-analytics.init.js"></script>
|
|
|
|
<!-- Validation init js-->
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/pages/form-validation.init.js"></script>
|
|
|
|
<!-- App js -->
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/app.min.js"></script>
|
|
|
|
|
|
<!-- Sweet Alert CDN -->
|
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap-multiselect@1.1.0/dist/js/bootstrap-multiselect.min.js"></script>
|
|
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-multiselect/0.9.13/css/bootstrap-multiselect.css" />
|
|
|
|
<script src="https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js"></script>
|
|
<link href="https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css" rel="stylesheet">
|
|
|
|
<!-- flatpicker datepicker -->
|
|
<link href="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.css" rel="stylesheet">
|
|
<script src="https://cdn.jsdelivr.net/npm/flatpickr@4.6.13/dist/flatpickr.min.js"></script>
|
|
|
|
<!-- bootstrap datepicker -->
|
|
<!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.10.0/js/bootstrap-datepicker.min.js"></script> -->
|
|
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/pages/jquery.xeditable.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/form-xeditable.init.js"></script>
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/bootstrap-editable.min.js"></script>
|
|
|
|
<!-- Jodit Js -->
|
|
<script src="<?= base_url() . "public"; ?>/assets/js/jodit.min.js"></script>
|
|
|
|
<!-- select2 -->
|
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
|
|
|
|
|
|
|
<script>
|
|
toastr.options = {
|
|
"timeOut": 5000,
|
|
"closeButton": true,
|
|
};
|
|
</script>
|
|
|
|
|
|
<script>
|
|
|
|
|
|
$(document).ready(function() {
|
|
|
|
|
|
function fetchMessages() {
|
|
$.ajax({
|
|
url: '<?= base_url('get-notification') ?>',
|
|
method: 'GET',
|
|
success: function(response) {
|
|
|
|
// $(document).ready(function() {
|
|
// $("#playMusic").get(0).play();
|
|
// });
|
|
|
|
|
|
console.log('responce', response)
|
|
|
|
let unreadCount = 0;
|
|
let messagesList = $('#messages-list');
|
|
messagesList.empty();
|
|
|
|
var html = "";
|
|
|
|
response.forEach(message => {
|
|
|
|
if (!message.is_read) {
|
|
unreadCount++;
|
|
}
|
|
|
|
var jasonDecodeData = JSON.parse(message.message_text)
|
|
|
|
|
|
var toast_body_css = 'background : #bfd7eb !important;';
|
|
var toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
|
|
var toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto';
|
|
var toast_status_word = 'Success';
|
|
|
|
if(jasonDecodeData.msg_status == 'failure'){
|
|
|
|
toast_body_css = 'background : #fdcfcf !important;';
|
|
toast_head_css = 'background-color : rgb(235 105 105 / 85%) !important; color :#000; border-bottom: 0;';
|
|
toast_icon = 'mdi mdi-information mr-auto'
|
|
toast_status_word = 'Failure';
|
|
|
|
}else if(jasonDecodeData.msg_status == 'success'){
|
|
|
|
toast_body_css = 'background : #bfd7eb !important;';
|
|
toast_head_css = 'background-color : rgb(2, 168, 181) !important; color :#000; border-bottom: 0;';
|
|
toast_icon = 'mdi mdi-checkbox-marked-circle mr-auto'
|
|
toast_status_word = 'Success';
|
|
}
|
|
|
|
var html = ` <li data-id="${message.id}" data-url="${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? jasonDecodeData.action_url : 'dashboard/view'}">
|
|
<div class="p-3">
|
|
<div class="toast fade show" role="alert" aria-live="assertive" aria-atomic="true" data-toggle="toast">
|
|
<div class="toast-header " style="${toast_head_css}" >
|
|
<strong class="${toast_icon}"> ${toast_status_word}</strong>
|
|
<button type="button" class="ml-2 mb-1 close rm_msg" data-dismiss="toast" aria-label="Close">
|
|
<span aria-hidden="true">×</span>
|
|
</button>
|
|
</div>
|
|
<div class="toast-body" style="${toast_body_css}">
|
|
<strong>${jasonDecodeData.msg_title ? jasonDecodeData.msg_title : ''}</strong> <br><br>
|
|
<small style="position: relative;bottom: 8px;">${jasonDecodeData.message_text}</small>
|
|
<div class="toast-footer">
|
|
<a href="#" class="redirect_page" data-toggle="tooltip" data-placement="bottom" title="Click Go to the Page"><small style="margin-right: 25px;position: relative;top: 2px;">${jasonDecodeData.action_url != undefined && jasonDecodeData.action_url != "" ? 'see more' : ''}</small></a>
|
|
<small style="position: relative;top: 2px;left: 5px;font-size: 10px;">${formatDate(message.created_at)}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</li>`
|
|
|
|
|
|
messagesList.append(html);
|
|
$(function() {
|
|
$('[data-toggle="tooltip"]').tooltip();
|
|
});
|
|
});
|
|
|
|
$('#notification_count').html(unreadCount);
|
|
}
|
|
});
|
|
}
|
|
|
|
function acknowledgeMessage(messageId) {
|
|
$.ajax({
|
|
url: '<?= base_url('acknowledge-notification/') ?>' + messageId,
|
|
method: 'GET',
|
|
success: function(response) {
|
|
fetchMessages();
|
|
}
|
|
});
|
|
}
|
|
|
|
$('#messages-list').on('click', 'li', function(event) {
|
|
|
|
console.log('messages-list click li')
|
|
|
|
if ($(event.target).closest('.rm_msg').length > 0) {
|
|
|
|
console.log('.rm_msg')
|
|
|
|
let messageId = $(this).data('id');
|
|
let url = $(this).data('url');
|
|
acknowledgeMessage(messageId);
|
|
|
|
$(this).delay(300).fadeOut('slow', function() {
|
|
$(this).remove();
|
|
});
|
|
|
|
} else if ($(event.target).closest('.redirect_page').length > 0){
|
|
|
|
console.log('redirect_page')
|
|
|
|
let messageId = $(this).data('id');
|
|
let url = $(this).data('url');
|
|
console.log('url : ', url)
|
|
acknowledgeMessage(messageId);
|
|
|
|
window.location.href = '<?= base_url() ?>' + url;
|
|
}
|
|
|
|
|
|
});
|
|
|
|
fetchMessages();
|
|
|
|
setInterval(fetchMessages, 10000); // Fetch messages every minute
|
|
});
|
|
|
|
</script>
|
|
|
|
|
|
<script>
|
|
function formatDate(dateString) {
|
|
// Parse the input date string
|
|
let date = new Date(dateString);
|
|
|
|
// Define months array
|
|
const months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
|
|
// Extract day, month, year, hours, and minutes
|
|
let day = date.getDate();
|
|
let month = months[date.getMonth()];
|
|
let year = date.getFullYear();
|
|
let hours = date.getHours();
|
|
let minutes = date.getMinutes();
|
|
|
|
// Convert hours to 12-hour format
|
|
let period = hours >= 12 ? 'pm' : 'am';
|
|
hours = hours % 12;
|
|
hours = hours ? hours : 12; // Handle midnight (0 hours)
|
|
|
|
// Format the time string
|
|
let timeString = ('0' + hours).slice(-2) + ':' + ('0' + minutes).slice(-2) + ' ' + period;
|
|
|
|
// Format the date string
|
|
let formattedDate = day + '-' + month + '-' + year + ' ' + timeString;
|
|
|
|
return formattedDate;
|
|
}
|
|
</script>
|
|
|
|
</body>
|
|
|
|
</html> |