<?php
class Dashboard_model extends CI_Model {

  /* ======== CARD KPI ======== */
  public function total_pasien() {
    // sesuaikan field status_aktif jika berbeda
    return (int) $this->db->where('status_aktif', 1)->from('tb_pasien')->count_all_results();
  }
  public function total_pendaftaran() {
    return (int) $this->db->from('tb_registrasi')->count_all_results();
  }
  public function total_pendaftaran_poli() {
    // jika semua registrasi selalu ada id_poli, ini = total_pendaftaran
    return (int) $this->db->where('id_poli IS NOT NULL', null, false)->from('tb_registrasi')->count_all_results();
  }

  /* ======== DATA GRAFIK ======== */

  // pendaftaran 7 hari terakhir (by tanggal_registrasi)
  public function registrasi_last_7_days() {
    $start = date('Y-m-d', strtotime('-6 days')); // hari ini + 6 ke belakang
    $end   = date('Y-m-d');
    return $this->db->select('tanggal_registrasi AS tgl, COUNT(*) AS jml', false)
      ->from('tb_registrasi')
      ->where('tanggal_registrasi >=', $start)
      ->where('tanggal_registrasi <=', $end)
      ->group_by('tanggal_registrasi')
      ->order_by('tanggal_registrasi','ASC')
      ->get()->result_array();
  }

  // pasien per bulan 12 bulan terakhir (berdasarkan kolom created_at, SESUAIKAN jika kolommu beda: tgl_daftar/tanggal_input)
  public function pasien_last_12_months() {
    $start = date('Y-m-01', strtotime('-11 months')); // awal bulan 12 bulan lalu
    return $this->db->select("DATE_FORMAT(created_at, '%Y-%m') AS ym, COUNT(*) AS jml", false)
      ->from('tb_pasien')
      ->where('created_at >=', $start) // ganti ke kolom tanggal pendaftaran pasien kamu bila berbeda
      ->group_by("DATE_FORMAT(created_at, '%Y-%m')")
      ->order_by("ym","ASC")
      ->get()->result_array();
  }
}
