<?php
// admin/donasi/detail.php
$pageTitle = 'Detail Donasi';
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 admin
if (!isset($_SESSION['user_id']) || !isset($_SESSION['role']) || $_SESSION['role'] != 'admin') {
    // Redirect ke halaman login jika belum login atau bukan admin
    setFlash('login_required', 'Anda harus login sebagai admin untuk mengakses halaman ini', 'danger');
    header('Location: ' . SITE_URL . '/auth/login.php');
    exit;
}

// Cek apakah ada ID donasi
if (!isset($_GET['id']) || empty($_GET['id'])) {
    setFlash('donasi', 'ID donasi tidak valid', 'danger');
    header('Location: ' . SITE_URL . '/admin/donasi/index.php');
    exit;
}

$id = $_GET['id'];
$db = dbConnect();

// Ambil detail donasi
$db->query("SELECT d.*, k.judul as kampanye_judul, k.deskripsi as kampanye_deskripsi, 
           u.nama_lengkap as donatur_nama, u.email as donatur_email, u.no_telp as donatur_telp,
           a.nama_lengkap as admin_nama
           FROM donasi d
           JOIN kampanye k ON d.kampanye_id = k.id
           JOIN users u ON d.user_id = u.id
           LEFT JOIN users a ON d.admin_verifikasi = a.id
           WHERE d.id = :id");
$db->bind(':id', $id);
$donasi = $db->single();

if (!$donasi) {
    setFlash('donasi', 'Donasi tidak ditemukan', 'danger');
    header('Location: ' . SITE_URL . '/admin/donasi/index.php');
    exit;
}

// Proses verifikasi/penolakan donasi
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action'])) {
    $action = $_POST['action'];
    $keterangan = isset($_POST['keterangan']) ? sanitize($_POST['keterangan']) : '';
    
    if ($action === 'verify') {
        // Verify donasi
        $db->query("UPDATE donasi SET status = 'diverifikasi', admin_verifikasi = :admin_id WHERE id = :id");
        $db->bind(':admin_id', $_SESSION['user_id']);
        $db->bind(':id', $id);
        
        if ($db->execute()) {
            // Log aktivitas
            logActivity('Verifikasi donasi', 'donasi', $id, "Admin memverifikasi donasi ID: $id dari {$donasi->donatur_nama} sebesar " . rupiah($donasi->jumlah));
            
            // Notifikasi untuk donatur
            $db->query("INSERT INTO notifications (user_id, title, message, link) VALUES (:user_id, :title, :message, :link)");
            $db->bind(':user_id', $donasi->user_id);
            $db->bind(':title', 'Donasi Diverifikasi');
            $db->bind(':message', 'Donasi Anda untuk kampanye "' . $donasi->kampanye_judul . '" telah diverifikasi. Terima kasih atas kontribusi Anda.');
            $db->bind(':link', SITE_URL . '/user/donasi/index.php');
            $db->execute();
            
            // Notifikasi untuk bendahara
            $db->query("SELECT id FROM users WHERE role = 'bendahara'");
            $bendahara_list = $db->resultSet();
            
            foreach ($bendahara_list as $bendahara) {
                $db->query("INSERT INTO notifications (user_id, title, message, link) VALUES (:user_id, :title, :message, :link)");
                $db->bind(':user_id', $bendahara->id);
                $db->bind(':title', 'Donasi Baru Diverifikasi');
                $db->bind(':message', 'Admin telah memverifikasi donasi untuk kampanye "' . $donasi->kampanye_judul . '" sebesar ' . rupiah($donasi->jumlah));
                $db->bind(':link', SITE_URL . '/bendahara/donasi/detail.php?id=' . $id);
                $db->execute();
            }
            
            setFlash('donasi', 'Donasi berhasil diverifikasi', 'success');
            header('Location: ' . SITE_URL . '/admin/donasi/index.php');
            exit;
        } else {
            setFlash('donasi', 'Gagal memverifikasi donasi', 'danger');
        }
    } elseif ($action === 'reject') {
        // Reject donasi
        $db->query("UPDATE donasi SET status = 'ditolak', admin_verifikasi = :admin_id WHERE id = :id");
        $db->bind(':admin_id', $_SESSION['user_id']);
        $db->bind(':id', $id);
        
        if ($db->execute()) {
            // Log aktivitas
            logActivity('Menolak donasi', 'donasi', $id, "Admin menolak donasi ID: $id dari {$donasi->donatur_nama}. Alasan: $keterangan");
            
            // Notifikasi untuk donatur
            $db->query("INSERT INTO notifications (user_id, title, message, link) VALUES (:user_id, :title, :message, :link)");
            $db->bind(':user_id', $donasi->user_id);
            $db->bind(':title', 'Donasi Ditolak');
            $db->bind(':message', 'Donasi Anda untuk kampanye "' . $donasi->kampanye_judul . '" ditolak. Alasan: ' . $keterangan);
            $db->bind(':link', SITE_URL . '/user/donasi/index.php');
            $db->execute();
            
            setFlash('donasi', 'Donasi ditolak', 'success');
            header('Location: ' . SITE_URL . '/admin/donasi/index.php');
            exit;
        } else {
            setFlash('donasi', 'Gagal menolak donasi', 'danger');
        }
    }
}

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

<div class="container-fluid">
    <div class="row">
        <!-- Sidebar Admin -->
        <?php require_once '../../includes/sidebar-admin.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">Detail Donasi</h1>
                <div class="btn-toolbar mb-2 mb-md-0">
                    <a href="<?= SITE_URL ?>/admin/donasi/index.php" class="btn btn-sm btn-outline-secondary">
                        <i class="fas fa-arrow-left me-1"></i> Kembali
                    </a>
                </div>
            </div>

            <?php flash(); ?>

            <div class="row">
                <!-- Informasi Donasi -->
                <div class="col-md-8">
                    <div class="card mb-4">
                        <div class="card-header bg-light">
                            <h5 class="mb-0">Informasi Donasi</h5>
                        </div>
                        <div class="card-body">
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">ID Donasi</div>
                                <div class="col-md-8">#<?= $donasi->id ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Kampanye</div>
                                <div class="col-md-8"><?= $donasi->kampanye_judul ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Nama Donatur</div>
                                <div class="col-md-8">
                                    <?php if ($donasi->is_anonim): ?>
                                        <span class="badge bg-secondary">Anonim</span>
                                        <span class="text-muted">(<?= $donasi->donatur_nama ?>)</span>
                                    <?php else: ?>
                                        <?= $donasi->donatur_nama ?>
                                    <?php endif; ?>
                                </div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Email Donatur</div>
                                <div class="col-md-8"><?= $donasi->donatur_email ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Telepon Donatur</div>
                                <div class="col-md-8"><?= $donasi->donatur_telp ?? '-' ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Jumlah Donasi</div>
                                <div class="col-md-8 fw-bold text-success"><?= rupiah($donasi->jumlah) ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Metode Pembayaran</div>
                                <div class="col-md-8"><?= ucfirst($donasi->metode_pembayaran) ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Keterangan Donatur</div>
                                <div class="col-md-8"><?= $donasi->keterangan ?? '-' ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Donasi Otomatis</div>
                                <div class="col-md-8">
                                    <?= $donasi->is_otomatis ? 'Ya' : 'Tidak' ?>
                                    <?php if ($donasi->is_otomatis): ?>
                                        <span class="text-muted">
                                            (<?= $donasi->frekuensi_otomatis ?>, mulai: <?= date('d/m/Y', strtotime($donasi->tanggal_otomatis)) ?>)
                                        </span>
                                    <?php endif; ?>
                                </div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Tanggal Donasi</div>
                                <div class="col-md-8"><?= date('d F Y H:i', strtotime($donasi->created_at)) ?></div>
                            </div>
                            <div class="row mb-3">
                                <div class="col-md-4 fw-bold">Status</div>
                                <div class="col-md-8">
                                    <?php if ($donasi->status == 'menunggu'): ?>
                                        <span class="badge bg-warning text-dark">Menunggu Verifikasi</span>
                                    <?php elseif ($donasi->status == 'diverifikasi'): ?>
                                        <span class="badge bg-success">Diverifikasi</span>
                                        <span class="text-muted">
                                            (oleh: <?= $donasi->admin_nama ?? 'Unknown' ?>)
                                        </span>
                                    <?php else: ?>
                                        <span class="badge bg-danger">Ditolak</span>
                                        <span class="text-muted">
                                            (oleh: <?= $donasi->admin_nama ?? 'Unknown' ?>)
                                        </span>
                                    <?php endif; ?>
                                </div>
                            </div>
                        </div>
                    </div>
                    
                    <!-- Bukti Transfer -->
                    <div class="card mb-4">
                        <div class="card-header bg-light">
                            <h5 class="mb-0">Bukti Transfer</h5>
                        </div>
                        <div class="card-body text-center">
                            <?php if (!empty($donasi->bukti_transfer)): ?>
                                <img src="<?= SITE_URL ?>/assets/uploads/bukti_transfer/<?= $donasi->bukti_transfer ?>" alt="Bukti Transfer" class="img-fluid" style="max-height: 400px;">
                            <?php else: ?>
                                <div class="alert alert-warning">
                                    <i class="fas fa-exclamation-triangle me-2"></i> Tidak ada bukti transfer yang diunggah.
                                </div>
                            <?php endif; ?>
                        </div>
                    </div>
                </div>
                
                <!-- Sidebar Verifikasi -->
                <div class="col-md-4">
                    <div class="card mb-4 sticky-top" style="top: 80px;">
                        <div class="card-header bg-light">
                            <h5 class="mb-0">Verifikasi Donasi</h5>
                        </div>
                        <div class="card-body">
                            <?php if ($donasi->status == 'menunggu'): ?>
                                <div class="alert alert-warning">
                                    <i class="fas fa-exclamation-triangle me-2"></i> Donasi ini menunggu verifikasi.
                                </div>
                                <form action="" method="post" id="verificationForm">
                                    <div class="mb-3">
                                        <label for="keterangan" class="form-label">Keterangan (opsional)</label>
                                        <textarea class="form-control" id="keterangan" name="keterangan" rows="3" placeholder="Tambahkan keterangan jika diperlukan"></textarea>
                                    </div>
                                    
                                    <div class="d-grid gap-2">
                                        <button type="submit" name="action" value="verify" class="btn btn-success">
                                            <i class="fas fa-check me-1"></i> Verifikasi Donasi
                                        </button>
                                        <button type="button" class="btn btn-danger" data-bs-toggle="modal" data-bs-target="#rejectModal">
                                            <i class="fas fa-times me-1"></i> Tolak Donasi
                                        </button>
                                    </div>
                                </form>
                                
                                <!-- Modal Konfirmasi Penolakan -->
                                <div class="modal fade" id="rejectModal" tabindex="-1" aria-labelledby="rejectModalLabel" aria-hidden="true">
                                    <div class="modal-dialog">
                                        <div class="modal-content">
                                            <div class="modal-header bg-danger text-white">
                                                <h5 class="modal-title" id="rejectModalLabel">Konfirmasi Penolakan</h5>
                                                <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
                                            </div>
                                            <div class="modal-body">
                                                <p>Apakah Anda yakin ingin menolak donasi ini?</p>
                                                <div class="mb-3">
                                                    <label for="reject_reason" class="form-label">Alasan Penolakan <span class="text-danger">*</span></label>
                                                    <textarea class="form-control" id="reject_reason" rows="3" required></textarea>
                                                </div>
                                            </div>
                                            <div class="modal-footer">
                                                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
                                                <button type="button" class="btn btn-danger" id="confirmReject">Tolak Donasi</button>
                                            </div>
                                        </div>
                                    </div>
                                </div>
                            <?php elseif ($donasi->status == 'diverifikasi'): ?>
                                <div class="alert alert-success">
                                    <i class="fas fa-check-circle me-2"></i> Donasi ini telah diverifikasi oleh <?= $donasi->admin_nama ?? 'Unknown' ?>.
                                </div>
                            <?php else: ?>
                                <div class="alert alert-danger">
                                    <i class="fas fa-times-circle me-2"></i> Donasi ini telah ditolak oleh <?= $donasi->admin_nama ?? 'Unknown' ?>.
                                </div>
                            <?php endif; ?>
                            
                            <!-- Log Aktivitas -->
                            <div class="mt-4">
                                <h6>Log Aktivitas</h6>
                                <hr>
                                <?php
                                // Ambil log aktivitas donasi
                                $db->query("SELECT l.*, u.nama_lengkap, u.role
                                           FROM logs l
                                           JOIN users u ON l.user_id = u.id
                                           WHERE l.entity_type = 'donasi' AND l.entity_id = :donasi_id
                                           ORDER BY l.created_at DESC");
                                $db->bind(':donasi_id', $id);
                                $logs = $db->resultSet();
                                
                                if (empty($logs)):
                                ?>
                                    <p class="text-muted small">Belum ada aktivitas untuk donasi ini.</p>
                                <?php else: ?>
                                    <div class="list-group list-group-flush small">
                                        <?php foreach($logs as $log): ?>
                                            <div class="list-group-item px-0">
                                                <div class="d-flex justify-content-between">
                                                    <span class="fw-bold"><?= $log->activity ?></span>
                                                    <span class="text-muted"><?= date('d/m/Y H:i', strtotime($log->created_at)) ?></span>
                                                </div>
                                                <p class="mb-1"><?= $log->description ?></p>
                                                <small class="text-muted">oleh: <?= $log->nama_lengkap ?> (<?= getRoleName($log->role) ?>)</small>
                                            </div>
                                        <?php endforeach; ?>
                                    </div>
                                <?php endif; ?>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </main>
    </div>
</div>

<script>
// Script untuk konfirmasi penolakan
document.addEventListener('DOMContentLoaded', function() {
    const confirmRejectBtn = document.getElementById('confirmReject');
    if (confirmRejectBtn) {
        confirmRejectBtn.addEventListener('click', function() {
            const form = document.getElementById('verificationForm');
            const reasonTextarea = document.getElementById('reject_reason');
            const keteranganTextarea = document.getElementById('keterangan');
            
            // Validasi
            if (!reasonTextarea.value.trim()) {
                alert('Alasan penolakan harus diisi!');
                return;
            }
            
            // Set alasan penolakan ke form utama
            keteranganTextarea.value = reasonTextarea.value;
            
            // Tambah hidden input untuk action
            const actionInput = document.createElement('input');
            actionInput.type = 'hidden';
            actionInput.name = 'action';
            actionInput.value = 'reject';
            form.appendChild(actionInput);
            
            // Submit form
            form.submit();
        });
    }
});
</script>

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