<?php
include 'koneksi.php';

if (isset($_POST['btn_bayar'])) {
    $id_anggota = $_POST['bayar_id_anggota'];
    $tanggal_iuran = $_POST['bayar_tanggal'];
    $nominal = 5000;

    // Cegah duplikat pembayaran
    $cek_ada = mysqli_query($conn, "SELECT * FROM iuran WHERE id_anggota = '$id_anggota' AND DATE_FORMAT(tanggal_iuran, '%Y-%m') = '" . date('Y-m', strtotime($tanggal_iuran)) . "'");
    if (mysqli_num_rows($cek_ada) == 0) {
        mysqli_query($conn, "INSERT INTO iuran (id_anggota, tanggal_iuran, nominal, date_created) VALUES ('$id_anggota', '$tanggal_iuran', '$nominal', CURDATE())");
    }
}



// Ambil semua anggota
$anggota = [];
$result_anggota = mysqli_query($conn, "SELECT id_anggota, nama_anggota FROM anggota");
while ($row = mysqli_fetch_assoc($result_anggota)) {
    $anggota[$row['id_anggota']] = $row['nama_anggota'];
}

// Tangani filter anggota
$filter_anggota_id = isset($_POST['filter_anggota']) ? $_POST['filter_anggota'] : "";

// Ambil bulan dari Juni 2024 sampai sekarang
$start = new DateTime('2024-05-01');
$end = new DateTime();
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, $end->modify('first day of next month'));

$bulan_aktif = [];
foreach ($period as $date) {
    $ym = $date->format('Y-m');
    $bulan_aktif[] = $ym;
}

// Siapkan data anggota yang belum bayar minimal 1 bulan
$anggota_belum_lunas = [];

foreach ($anggota as $id => $nama) {
    $belum_bayar = false;
    foreach ($bulan_aktif as $ym) {
        $cek_bayar = mysqli_query($conn, "
            SELECT COUNT(*) as total FROM iuran 
            WHERE id_anggota = '$id' AND DATE_FORMAT(tanggal_iuran, '%Y-%m') = '$ym'
        ");
        $cek = mysqli_fetch_assoc($cek_bayar);
        if ($cek['total'] == 0) {
            // Tapi hanya jika bulan tersebut memang ada pembayaran dari anggota lain
            $cek_aktivitas = mysqli_query($conn, "
                SELECT COUNT(*) as aktif FROM iuran 
                WHERE DATE_FORMAT(tanggal_iuran, '%Y-%m') = '$ym'
            ");
            $aktif = mysqli_fetch_assoc($cek_aktivitas);
            if ($aktif['aktif'] > 0) {
                $belum_bayar = true;
                break;
            }
        }
    }
    if ($belum_bayar) {
        $anggota_belum_lunas[$id] = $nama;
    }
}

// Data tabel hasil
$data_tabel = [];

if ($filter_anggota_id != "" && isset($anggota[$filter_anggota_id])) {
    foreach ($bulan_aktif as $ym) {
        // Cek apakah bulan ini aktif (ada yang bayar)
        $cek_aktif = mysqli_query($conn, "
            SELECT COUNT(*) as aktif FROM iuran 
            WHERE DATE_FORMAT(tanggal_iuran, '%Y-%m') = '$ym'
        ");
        $aktif = mysqli_fetch_assoc($cek_aktif);
        if ($aktif['aktif'] == 0) continue;

        // Cek apakah anggota ini bayar bulan ini
        $cek_bayar = mysqli_query($conn, "
            SELECT COUNT(*) as total FROM iuran 
            WHERE id_anggota = '$filter_anggota_id' 
            AND DATE_FORMAT(tanggal_iuran, '%Y-%m') = '$ym'
        ");
        $cek = mysqli_fetch_assoc($cek_bayar);
        if ($cek['total'] == 0) {
            $data_tabel[] = [
                'nama' => $anggota[$filter_anggota_id],
                'bulan' => date('F Y', strtotime($ym . '-01')),
                'keterangan' => 'Belum Bayar'
            ];
        }
    }
}


// Menangani input pencarian
$search_query = "";
if (isset($_POST['search'])) {
    $search_query = mysqli_real_escape_string($conn, $_POST['search']);
}

// Query untuk mengambil data iuran dengan filter pencarian
$query = "SELECT i.id_iuran, i.id_anggota, i.tanggal_iuran, i.nominal, a.nama_anggota 
            FROM iuran i
            JOIN anggota a ON i.id_anggota = a.id_anggota
            WHERE a.nama_anggota LIKE '%$search_query%' OR i.id_iuran LIKE '%$search_query%' 
            ORDER BY i.tanggal_iuran DESC";
$result = mysqli_query($conn, $query);




// Ambil semua anggota
$anggota_semua = [];
$result_all = mysqli_query($conn, "SELECT id_anggota, nama_anggota FROM anggota ORDER BY nama_anggota ASC");
while ($row = mysqli_fetch_assoc($result_all)) {
    $anggota_semua[$row['id_anggota']] = $row['nama_anggota'];
}

// Ambil bulan aktif dari iuran (hanya bulan yang ada transaksi)
$bulan_aktif_query = mysqli_query($conn, "
    SELECT DISTINCT DATE_FORMAT(tanggal_iuran, '%Y-%m') AS ym 
    FROM iuran ORDER BY ym ASC
");

$bulan_aktif_detail = [];
while ($row = mysqli_fetch_assoc($bulan_aktif_query)) {
    $bulan_aktif_detail[] = $row['ym'];
}

// Hitung anggota yang belum bayar bulan tertentu
$data_unpaid_detail = [];

foreach ($anggota_semua as $id => $nama) {
    $belum_bayar_bulan = [];
    foreach ($bulan_aktif_detail as $ym) {
        $cek = mysqli_query($conn, "
            SELECT COUNT(*) as total FROM iuran 
            WHERE id_anggota = '$id' AND DATE_FORMAT(tanggal_iuran, '%Y-%m') = '$ym'
        ");
        $row = mysqli_fetch_assoc($cek);
        if ($row['total'] == 0) {
            $belum_bayar_bulan[] = $ym;
        }
    }

    if (count($belum_bayar_bulan) > 0) {
        $data_unpaid_detail[] = [
            'nama' => $nama,
            'bulan' => $belum_bayar_bulan,
            'total' => count($belum_bayar_bulan) * 5000
        ];
    }
}

?>

<main class="main-content position-relative border-radius-lg ">
    <div class="container-fluid py-4">
        <div class="header-section mb-4">
            <h5 class="page-title text-white mb-3">Data Yang Belum Membayar Iuran</h5>
        </div>
        <div class="content-wrapper">
            <div class="page-header">

            </div>

            <h5 class="text-white mb-3">Pilih Anggota Untuk Melihat yang Belum Membayar Iuran Sesuai Anggota</h5>

            <!-- Form Pilih Anggota -->
            <form method="POST" class="mb-4">
                <label for="filter_anggota" class="form-label">Pilih Anggota yang Belum Lunas:</label>
                <div class="input-group w-50">
                    <select name="filter_anggota" id="filter_anggota" class="form-select" required>
                        <option value="">-- Pilih Anggota --</option>
                        <?php foreach ($anggota_belum_lunas as $id => $nama): ?>
                            <option value="<?= $id ?>" <?= ($filter_anggota_id == $id) ? 'selected' : '' ?>>
                                <?= htmlspecialchars($nama) ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                    <button type="submit" class="btn btn-primary">Tampilkan</button>
                </div>
            </form>

            <?php if ($filter_anggota_id != "" && isset($anggota[$filter_anggota_id])): ?>
                <div class="card shadow-sm rounded-4 mt-4">
                    <div class="card-body">
                        <h4 class="card-title">Data Iuran Belum Dibayar</h4>
                        <div class="table-responsive">
                            <table class="table table-hover table-bordered">
                                <thead>
                                    <tr>
                                        <th>No</th>
                                        <th>Nama Anggota</th>
                                        <th>Bulan & Tahun</th>
                                        <th>Keterangan</th>
                                        <th>Jumlah Iuran (Rp)</th>
                                        <th class="aksi">Aksi</th> <!-- Tambahkan kolom aksi -->
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php
                                    if (count($data_tabel) > 0):
                                        $no = 1;
                                        $total_iuran = 0;
                                        foreach ($data_tabel as $row):
                                            $total_iuran += 5000;
                                            $bulan_tahun = $row['bulan'];
                                            $ym = date('Y-m', strtotime($bulan_tahun)); // Format untuk insert
                                    ?>
                                            <tr>
                                                <td><?= $no++; ?></td>
                                                <td><?= htmlspecialchars($row['nama']); ?></td>
                                                <td><?= $bulan_tahun ?></td>
                                                <td><?= $row['keterangan']; ?></td>
                                                <td>Rp <?= number_format(5000, 0, ',', '.'); ?></td>
                                                <td>
                                                    <form method="POST" style="display:inline;">
                                                        <input type="hidden" name="bayar_id_anggota" value="<?= $filter_anggota_id ?>">
                                                        <input type="hidden" name="bayar_tanggal" value="<?= $ym ?>-01">
                                                        <input type="hidden" name="filter_anggota" value="<?= htmlspecialchars($filter_anggota_id) ?>">
                                                        <button type="submit" name="btn_bayar" class="btn btn-success btn-sm">Bayar</button>
                                                    </form>
                                                </td>
                                            </tr>
                                        <?php endforeach; ?>
                                        <tr>
                                            <td colspan="4" class="text-end fw-bold">Total</td>
                                            <td class="fw-bold text-danger">Rp <?= number_format($total_iuran, 0, ',', '.'); ?></td>
                                            <td></td>
                                        </tr>
                                    <?php else: ?>
                                        <tr>
                                            <td colspan="6" class="text-center text-muted">Tidak ada data belum bayar untuk anggota ini.</td>
                                        </tr>
                                    <?php endif; ?>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            <?php endif; ?>


            <h2 class="mt-5">Detail Anggota Belum Bayar per Bulan</h2>
            <div class="card shadow-sm rounded-4">
                <div class="card-body">
                    <div class="table-responsive">
                        <table id="DataTable" class="table table-hover table-bordered">
                            <thead>
                                <tr>
                                    <th>No</th>
                                    <th>Nama Anggota</th>
                                    <th>Bulan yang Belum Dibayar</th>
                                    <th>Total Tagihan (Rp)</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php
                                if (count($data_unpaid_detail) > 0):
                                    $no = 1;
                                    foreach ($data_unpaid_detail as $item):
                                ?>
                                        <tr>
                                            <td><?= $no++; ?></td>
                                            <td><?= htmlspecialchars($item['nama']); ?></td>
                                            <td>
                                                <?php
                                                $bulan_str = array_map(function ($b) {
                                                    return date('F Y', strtotime($b . '-01'));
                                                }, $item['bulan']);
                                                echo implode(', ', $bulan_str);
                                                ?>
                                            </td>
                                            <td>Rp <?= number_format($item['total'], 0, ',', '.'); ?></td>
                                        </tr>
                                    <?php
                                    endforeach;
                                else: ?>
                                    <tr>
                                        <td colspan="4" class="text-center text-muted">Semua anggota sudah membayar iuran lengkap.</td>
                                    </tr>
                                <?php endif; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>


        </div>
    </div>
    </div>
</main>