<?php
// ketua/notifikasi.php
$pageTitle = 'Notifikasi';
require_once '../includes/config.php';
require_once '../includes/database.php';
require_once '../includes/functions.php';
require_once '../includes/auth.php';

// Mulai session jika belum dimulai
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

// Cek apakah user sudah login dan role-nya ketua
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role']) || $_SESSION['role'] != 'ketua') {
    // Redirect ke halaman login jika belum login atau bukan ketua
    setFlash('login_required', 'Anda harus login sebagai ketua yayasan untuk mengakses halaman ini', 'danger');
    header('Location: ' . SITE_URL . '/auth/login.php');
    exit;
}

// Koneksi database
$db = dbConnect();

// Proses marking sebagai sudah dibaca
if (isset($_GET['read']) && !empty($_GET['read'])) {
    $id = $_GET['read'];
    
    $db->query("UPDATE notifications SET is_read = 1 WHERE id = :id AND user_id = :user_id");
    $db->bind(':id', $id);
    $db->bind(':user_id', $_SESSION['user_id']);
    
    if ($db->execute()) {
        // Jika ada redirect, arahkan ke URL tersebut
        if (isset($_GET['redirect']) && !empty($_GET['redirect'])) {
            header('Location: ' . $_GET['redirect']);
            exit;
        }
        
        setFlash('notifikasi', 'Notifikasi telah ditandai sebagai dibaca', 'success');
    } else {
        setFlash('notifikasi', 'Gagal menandai notifikasi sebagai dibaca', 'danger');
    }
    
    // Redirect ke halaman notifikasi
    header('Location: ' . SITE_URL . '/ketua/notifikasi.php');
    exit;
}

// Proses marking semua notifikasi sebagai sudah dibaca
if (isset($_GET['read_all'])) {
    $db->query("UPDATE notifications SET is_read = 1 WHERE user_id = :user_id AND is_read = 0");
    $db->bind(':user_id', $_SESSION['user_id']);
    
    if ($db->execute()) {
        setFlash('notifikasi', 'Semua notifikasi telah ditandai sebagai dibaca', 'success');
    } else {
        setFlash('notifikasi', 'Gagal menandai semua notifikasi sebagai dibaca', 'danger');
    }
    
    // Redirect ke halaman notifikasi
    header('Location: ' . SITE_URL . '/ketua/notifikasi.php');
    exit;
}

// Pagination
$current_page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 15;
$offset = ($current_page - 1) * $limit;

// Filter
$filter = isset($_GET['filter']) ? $_GET['filter'] : 'all';

// Query untuk menghitung total notifikasi
$query_count = "SELECT COUNT(*) as total FROM notifications WHERE user_id = :user_id";

if ($filter === 'unread') {
    $query_count .= " AND is_read = 0";
} elseif ($filter === 'read') {
    $query_count .= " AND is_read = 1";
}

$db->query($query_count);
$db->bind(':user_id', $_SESSION['user_id']);
$total_rows = $db->single()->total;
$total_pages = ceil($total_rows / $limit);

// Query untuk mengambil data notifikasi
$query = "SELECT * FROM notifications WHERE user_id = :user_id";

if ($filter === 'unread') {
    $query .= " AND is_read = 0";
} elseif ($filter === 'read') {
    $query .= " AND is_read = 1";
}

$query .= " ORDER BY created_at DESC LIMIT :offset, :limit";

$db->query($query);
$db->bind(':user_id', $_SESSION['user_id']);
$db->bind(':offset', $offset, PDO::PARAM_INT);
$db->bind(':limit', $limit, PDO::PARAM_INT);
$notifikasi_list = $db->resultSet();

// Hitung notifikasi yang belum dibaca
$db->query("SELECT COUNT(*) as count FROM notifications WHERE user_id = :user_id AND is_read = 0");
$db->bind(':user_id', $_SESSION['user_id']);
$unread_count = $db->single()->count ?? 0;

// Include header
require_once '../includes/header.php';
?>

<div class="container-fluid">
    <div class="row">
        <!-- Sidebar -->
        <?php require_once '../includes/sidebar-ketua.php'; ?>
        
        <!-- Content Area -->
        <main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
            <div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
                <h1 class="h2">Notifikasi</h1>
                <div class="btn-toolbar mb-2 mb-md-0">
                    <?php if ($unread_count > 0): ?>
                        <a href="<?= SITE_URL ?>/ketua/notifikasi.php?read_all=1" class="btn btn-sm btn-outline-secondary">
                            <i class="fas fa-check-double me-1"></i> Tandai Semua Dibaca
                        </a>
                    <?php endif; ?>
                </div>
            </div>

            <?php flash(); ?>

            <!-- Filter Notifikasi -->
            <div class="card mb-4">
                <div class="card-body">
                    <div class="row g-2">
                        <div class="col-auto">
                            <a href="<?= SITE_URL ?>/ketua/notifikasi.php" class="btn <?= $filter === 'all' ? 'btn-primary' : 'btn-outline-primary' ?>">
                                Semua <span class="badge bg-secondary"><?= $total_rows ?></span>
                            </a>
                        </div>
                        <div class="col-auto">
                            <a href="<?= SITE_URL ?>/ketua/notifikasi.php?filter=unread" class="btn <?= $filter === 'unread' ? 'btn-primary' : 'btn-outline-primary' ?>">
                                Belum Dibaca <span class="badge bg-secondary"><?= $unread_count ?></span>
                            </a>
                        </div>
                        <div class="col-auto">
                            <a href="<?= SITE_URL ?>/ketua/notifikasi.php?filter=read" class="btn <?= $filter === 'read' ? 'btn-primary' : 'btn-outline-primary' ?>">
                                Sudah Dibaca <span class="badge bg-secondary"><?= $total_rows - $unread_count ?></span>
                            </a>
                        </div>
                    </div>
                </div>
            </div>

            <!-- Daftar Notifikasi -->
            <div class="card">
                <div class="card-body">
                    <?php if (empty($notifikasi_list)): ?>
                        <div class="text-center py-5">
                            <i class="fas fa-bell-slash fa-4x text-muted mb-3"></i>
                            <h4>Tidak Ada Notifikasi</h4>
                            <p class="text-muted">Anda belum memiliki notifikasi<?= $filter === 'unread' ? ' yang belum dibaca' : ($filter === 'read' ? ' yang sudah dibaca' : '') ?>.</p>
                        </div>
                    <?php else: ?>
                        <div class="list-group">
                            <?php foreach ($notifikasi_list as $notifikasi): ?>
                                <div class="list-group-item list-group-item-action <?= $notifikasi->is_read ? '' : 'list-group-item-light' ?> py-3">
                                    <div class="d-flex w-100 justify-content-between">
                                        <h6 class="mb-1">
                                            <?php if (!$notifikasi->is_read): ?>
                                                <span class="badge bg-danger me-1">Baru</span>
                                            <?php endif; ?>
                                            <?= $notifikasi->title ?>
                                        </h6>
                                        <small><?= date('d M Y H:i', strtotime($notifikasi->created_at)) ?></small>
                                    </div>
                                    <p class="mb-1"><?= $notifikasi->message ?></p>
                                    <div class="d-flex justify-content-between align-items-center mt-2">
                                        <small class="text-muted">
                                            <?php if ($notifikasi->is_read): ?>
                                                <i class="fas fa-check me-1"></i> Dibaca
                                            <?php else: ?>
                                                <i class="fas fa-envelope me-1"></i> Belum dibaca
                                            <?php endif; ?>
                                        </small>
                                        <div>
                                            <?php if (!$notifikasi->is_read): ?>
                                                <a href="<?= SITE_URL ?>/ketua/notifikasi.php?read=<?= $notifikasi->id ?>" class="btn btn-sm btn-outline-secondary me-1">
                                                    <i class="fas fa-check"></i> Tandai Dibaca
                                                </a>
                                            <?php endif; ?>
                                            
                                            <?php if ($notifikasi->link): ?>
                                                <a href="<?= SITE_URL ?>/ketua/notifikasi.php?read=<?= $notifikasi->id ?>&redirect=<?= urlencode($notifikasi->link) ?>" class="btn btn-sm btn-primary">
                                                    <i class="fas fa-external-link-alt me-1"></i> Lihat Detail
                                                </a>
                                            <?php endif; ?>
                                        </div>
                                    </div>
                                </div>
                            <?php endforeach; ?>
                        </div>
                        
                        <!-- Pagination -->
                        <?php if ($total_pages > 1): ?>
                            <nav aria-label="Page navigation" class="mt-4">
                                <ul class="pagination justify-content-center">
                                    <li class="page-item <?= ($current_page <= 1) ? 'disabled' : '' ?>">
                                        <a class="page-link" href="<?= SITE_URL ?>/ketua/notifikasi.php?page=<?= $current_page - 1 ?>&filter=<?= $filter ?>">Previous</a>
                                    </li>
                                    
                                    <?php for ($i = 1; $i <= $total_pages; $i++): ?>
                                        <li class="page-item <?= ($current_page == $i) ? 'active' : '' ?>">
                                            <a class="page-link" href="<?= SITE_URL ?>/ketua/notifikasi.php?page=<?= $i ?>&filter=<?= $filter ?>"><?= $i ?></a>
                                        </li>
                                    <?php endfor; ?>
                                    
                                    <li class="page-item <?= ($current_page >= $total_pages) ? 'disabled' : '' ?>">
                                        <a class="page-link" href="<?= SITE_URL ?>/ketua/notifikasi.php?page=<?= $current_page + 1 ?>&filter=<?= $filter ?>">Next</a>
                                    </li>
                                </ul>
                            </nav>
                        <?php endif; ?>
                    <?php endif; ?>
                </div>
            </div>
        </main>
    </div>
</div>

<?php require_once '../includes/footer.php'; ?>