<?php

namespace App\Models;

use App\Core\Model;
use PDO;

class AgendaModel extends Model
{
    protected string $table = 'agenda';

    public function getMendatang(int $limit = 4): array
    {
        $stmt = $this->db->prepare(
            "SELECT * FROM {$this->table}
             WHERE tanggal_mulai >= CURDATE()
             ORDER BY tanggal_mulai ASC
             LIMIT :limit"
        );
        $stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
        $stmt->execute();

        return $stmt->fetchAll();
    }

    /**
     * Semua agenda untuk halaman publik /agenda, terurut: akan datang dulu (terdekat),
     * baru yang sudah lewat (terbaru dulu).
     */
    public function getAllPublic(): array
    {
        $stmt = $this->db->query(
            "SELECT *, (tanggal_mulai >= NOW()) AS akan_datang
             FROM {$this->table}
             ORDER BY akan_datang DESC, tanggal_mulai ASC"
        );

        return $stmt->fetchAll();
    }

    /**
     * Semua agenda untuk panel admin, terbaru dibuat/dijadwalkan dulu.
     */
    public function getAllAdmin(): array
    {
        $stmt = $this->db->query("SELECT * FROM {$this->table} ORDER BY tanggal_mulai DESC");

        return $stmt->fetchAll();
    }

    public function getTanggalBulan(int $bulan, int $tahun): array
    {
        $stmt = $this->db->prepare(
            "SELECT DAY(tanggal_mulai) AS tgl FROM {$this->table}
             WHERE MONTH(tanggal_mulai) = :bulan AND YEAR(tanggal_mulai) = :tahun"
        );
        $stmt->execute(['bulan' => $bulan, 'tahun' => $tahun]);

        return array_column($stmt->fetchAll(), 'tgl');
    }
}
