|
Server : LiteSpeed System : Linux terra.hostitbro.com 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64 User : outerorb ( 1091) PHP Version : 8.1.34 Disable Function : mail Directory : /home2/outerorb/emp.outerorbittech.in/admin/ | |
|
Path: /home2/outerorb/emp.outerorbittech.in/admin/notifications.php
Size: 11.3 KB
Permissions: 0666
<?php
require_once __DIR__ . '/../includes/helpers.php';
// Ensure user is logged in as admin
require_admin();
$admin = current_admin();
if (!$admin) {
redirect('login.php');
}
// Get unread notifications count for badge
$unreadNotificationsCount = get_unread_notification_count($admin['id']);
// Get all notifications
$notifications = [];
try {
$db = db();
$stmt = $db->prepare("
SELECT * FROM notifications
WHERE admin_id = ?
ORDER BY created_at DESC
LIMIT 100
");
$stmt->execute([$admin['id']]);
$notifications = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch (Exception $e) {
error_log('Error fetching notifications: ' . $e->getMessage());
}
// Mark all as read
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'mark_all_read') {
try {
$db = db();
$stmt = $db->prepare("
UPDATE notifications
SET read_at = NOW()
WHERE admin_id = ? AND read_at IS NULL
");
$stmt->execute([$admin['id']]);
redirect('notifications.php');
} catch (Exception $e) {
error_log('Error marking notifications as read: ' . $e->getMessage());
}
}
$roleLabel = (($admin['role'] ?? '') === 'super') ? 'Super Admin' : 'Admin';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Notifications - HR Dashboard</title>
<link rel="stylesheet" href="../assets/css/style.css">
</head>
<body class="dashboard-layout">
<div class="app-wrapper">
<!-- ========== SIDEBAR ========== -->
<aside class="sidebar-wrapper" id="sidebar">
<div class="sidebar-header">
<div class="sidebar-logo">HR</div>
<div class="sidebar-company">
<div class="sidebar-company-name">Employee<br/>Records</div>
<div class="sidebar-company-role"><?php echo htmlspecialchars($roleLabel, ENT_QUOTES, 'UTF-8'); ?></div>
</div>
</div>
<nav class="sidebar-menu">
<!-- Employees Section -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-users"></i> EMPLOYEES</div>
<div class="sidebar-item">
<a href="dashboard.php" class="sidebar-link">Dashboard</a>
</div>
<div class="sidebar-item">
<a href="approvals.php" class="sidebar-link">Approvals</a>
</div>
<div class="sidebar-item">
<a href="departments.php" class="sidebar-link">Departments</a>
</div>
<div class="sidebar-item">
<a href="designations.php" class="sidebar-link">Designations</a>
</div>
<div class="sidebar-item">
<a href="trash.php" class="sidebar-link">Trash</a>
</div>
</div>
<!-- Attendance & Leave -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-clipboard-list"></i> ATTENDANCE & LEAVE</div>
<div class="sidebar-item">
<a href="attendance.php" class="sidebar-link">Attendance</a>
</div>
<div class="sidebar-item">
<a href="leaves.php" class="sidebar-link">Leaves</a>
</div>
<div class="sidebar-item">
<a href="holidays.php" class="sidebar-link">Holidays</a>
</div>
<div class="sidebar-item">
<a href="document_requests.php" class="sidebar-link">Requests</a>
</div>
</div>
<!-- Payroll -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-wallet"></i> PAYROLL</div>
<div class="sidebar-item">
<a href="salary.php" class="sidebar-link">Salary</a>
</div>
<div class="sidebar-item">
<a href="payroll.php" class="sidebar-link">Run Payroll</a>
</div>
</div>
<!-- HR Modules -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-cog"></i> HR MODULES</div>
<div class="sidebar-item">
<a href="appraisals.php" class="sidebar-link">Appraisals</a>
</div>
<div class="sidebar-item">
<a href="assets.php" class="sidebar-link">Assets</a>
</div>
<div class="sidebar-item">
<a href="recruitment.php" class="sidebar-link">Recruitment</a>
</div>
<div class="sidebar-item">
<a href="announcements.php" class="sidebar-link">Notices</a>
</div>
</div>
<!-- Reports -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-chart-bar"></i> REPORTS</div>
<div class="sidebar-item">
<a href="reports.php" class="sidebar-link">Analytics</a>
</div>
</div>
<?php if (is_super_admin()): ?>
<!-- Admin Settings -->
<div class="sidebar-section">
<div class="sidebar-section-title"><i class="fas fa-sliders-h"></i> SETTINGS</div>
<div class="sidebar-item">
<a href="admins.php" class="sidebar-link">Manage Admins</a>
</div>
</div>
<?php endif; ?>
</nav>
</aside>
<!-- MAIN CONTENT -->
<div class="main-content">
<!-- Top Bar -->
<div class="top-bar">
<div class="top-bar-left">
<button class="sidebar-toggle" id="sidebarToggle" aria-label="Toggle sidebar"><i class="fas fa-bars"></i></button>
<div>
<h1 class="page-title">Notifications</h1>
</div>
</div>
<div class="top-bar-right">
<button class="notification-bell" title="Notifications"><i class="fas fa-bell"></i>
<?php if ($unreadNotificationsCount > 0): ?>
<span class="notification-badge"><?php echo $unreadNotificationsCount; ?></span>
<?php endif; ?>
</button>
<div class="user-menu">
<div class="user-avatar"><?php echo strtoupper(substr($admin['username'] ?? 'A', 0, 1)); ?></div>
<div class="user-name"><?php echo htmlspecialchars($admin['username'] ?? 'Admin', ENT_QUOTES, 'UTF-8'); ?></div>
</div>
<a href="logout.php" style="color: #cbd5e1; text-decoration: none; padding: 8px 12px; border-radius: 6px; transition: background 0.15s; font-size: 13px; font-weight: 600;" title="Logout">Logout</a>
</div>
</div>
<!-- Page Content -->
<div class="dashboard-container">
<!-- Notifications Card -->
<div class="chart-card" style="max-width: 900px;">
<div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 20px;">
<div class="chart-header" style="margin: 0;">All Notifications</div>
<?php if (count($notifications) > 0): ?>
<form method="post" style="margin: 0;">
<input type="hidden" name="action" value="mark_all_read">
<button type="submit" style="background: #2563eb; color: white; border: none; padding: 8px 14px; border-radius: 6px; cursor: pointer; font-weight: 600; font-size: 13px; transition: background 0.2s;">Mark all as read</button>
</form>
<?php endif; ?>
</div>
<?php if (empty($notifications)): ?>
<div style="text-align: center; padding: 60px 20px; color: #6b7280;">
<i class="fas fa-inbox" style="font-size: 48px; color: #4b5563; margin-bottom: 16px; display: block;"></i>
<p style="font-size: 16px; margin: 0;">No notifications</p>
</div>
<?php else: ?>
<div style="display: flex; flex-direction: column; gap: 0;">
<?php foreach ($notifications as $notif): ?>
<div style="padding: 16px; border-bottom: 1px solid rgba(255,255,255,0.05); display: flex; gap: 12px; background: <?php echo $notif['read_at'] ? 'transparent' : 'rgba(37, 99, 235, 0.08)'; ?>; transition: background 0.2s;">
<div style="font-size: 24px; flex-shrink: 0; color: #2563eb;">
<i class="fas fa-bell"></i>
</div>
<div style="flex: 1; display: flex; flex-direction: column; gap: 4px;">
<div style="display: flex; justify-content: space-between; align-items: start; gap: 8px;">
<h3 style="margin: 0; color: #f3f4f6; font-size: 14px; font-weight: 600;">
<?php echo htmlspecialchars($notif['title'], ENT_QUOTES, 'UTF-8'); ?>
</h3>
<span style="display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 6px; border-radius: 3px; background: rgba(255,255,255,0.1); color: #9ca3af; white-space: nowrap;">
<?php echo ucfirst(str_replace('_', ' ', $notif['type'])); ?>
</span>
</div>
<p style="margin: 0; font-size: 13px; color: #d1d5db; line-height: 1.4;">
<?php echo htmlspecialchars($notif['message'], ENT_QUOTES, 'UTF-8'); ?>
</p>
<div style="display: flex; justify-content: space-between; align-items: center; margin-top: 8px;">
<span style="font-size: 11px; color: #6b7280;">
<?php echo date('M d, Y H:i', strtotime($notif['created_at'])); ?>
</span>
<?php if (!$notif['read_at']): ?>
<span style="display: inline-block; width: 8px; height: 8px; background: #2563eb; border-radius: 50%;"></span>
<?php endif; ?>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
<?php endif; ?>
</div>
</div>
</div>
</div>
<script src="../assets/js/app.js"></script>
</body>
</html>