<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * Cron Controller — Untuk menjalankan tugas otomatis (Scheduled Tasks)
 * 
 * Cara menjalankan via CLI (Terminal):
 *   php index.php cron birthday_wishes [SECRET_KEY]
 * 
 * Cara menjalankan via Browser (Gunakan Secret Key):
 *   http://domain.com/cron/birthday_wishes/PASTI_AMAN_123
 */
class Cron extends CI_Controller {

    // Ganti ini dengan key rahasia Anda sendiri untuk keamanan via Browser
    private $secret_key = 'PASTI_AMAN_123';

    public function __construct() {
        parent::__construct();
        // Load library & model yang dibutuhkan
        $this->load->library('waha_lib');
        $this->load->model('Pengaturan_model');
    }

    private function _check_auth($key = '') {
        // Jika dipanggil via CLI, izinkan tanpa key
        if (is_cli()) return true;
        // Jika via Browser, cek key
        return ($key === $this->secret_key);
    }

    // ================================================================
    // Tugas: Kirim ucapan selamat ulang tahun ke warga hari ini
    // ================================================================
    public function birthday_wishes($key = '') {
        if (!$this->_check_auth($key)) {
            show_404();
            return;
        }

        echo "--- Memulai Cron: Ucapan Ulang Tahun (" . date('Y-m-d H:i:s') . ") ---\n";

        if (!$this->waha_lib->is_enabled()) {
            echo "SKIPPED: WAHA API tidak aktif.\n";
            return;
        }

        $p = $this->Pengaturan_model->get();
        $nama_rt = ($p->nama_rt ?? 'RT') . ' ' . ($p->nama_rw ?? '');

        // Cari warga yang ulang tahun hari ini
        $list = $this->db->select('w.id, w.nama_lengkap, u.no_hp, w.tanggal_lahir')
            ->from('warga w')
            ->join('users u', 'u.id = w.user_id', 'left')
            ->where('DAY(w.tanggal_lahir)', date('j'))
            ->where('MONTH(w.tanggal_lahir)', date('n'))
            ->where('w.status_meninggal', 0)
            ->where('u.no_hp IS NOT NULL')
            ->where('u.no_hp !=', '')
            ->get()->result();

        if (empty($list)) {
            echo "DONE: Tidak ada warga yang berulang tahun hari ini.\n";
            return;
        }

        $count = 0;
        foreach ($list as $w) {
            $umur = date('Y') - date('Y', strtotime($w->tanggal_lahir));

            $pesan = "🎂 *Selamat Ulang Tahun!* 🎂\n\n"
                   . "Assalamu'alaikum Bpk/Ibu *{$w->nama_lengkap}*,\n\n"
                   . "Seluruh warga dan pengurus *{$nama_rt}* mengucapkan:\n\n"
                   . "🎉 *SELAMAT ULANG TAHUN* 🎉\n"
                   . "Semoga di usia ke-{$umur} ini selalu diberikan kesehatan, keberkahan, dan kebahagiaan. Aamiin.\n\n"
                   . "_Salam hangat dari Pengurus {$nama_rt}_ 🏠";

            $result = $this->waha_lib->send($w->no_hp, $pesan);
            if ($result['success']) {
                echo "SUCCESS: Mengirim ucapan ke {$w->nama_lengkap} ({$w->no_hp})\n";
                $count++;
            } else {
                echo "FAILED: Gagal mengirim ke {$w->nama_lengkap}. Error: {$result['message']}\n";
            }

            // Jeda 2 detik antar pesan agar tidak dianggap spam
            sleep(2);
        }

        echo "--- Cron Selesai. Total terkirim: {$count} pesan. ---\n";
    }

}
