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

class Dashboardand extends CI_Controller
{
    public function index()
    {
        // --- 1. DATA STATIS (SSR) ---
        // Data ini diambil saat halaman pertama kali dimuat agar tidak kosong

        // Rawat Inap
        $data['ranap_sum']      = $this->get_api_data('http://103.255.241.146/api/d_reg_online/tampil_pasien_inap_sum', []);
        $data['inap_lama_baru'] = $this->get_api_data('http://103.255.241.146/api/service_rs/inap_lama_baru', []);
        $data['ranap_data']     = $this->get_api_data('http://103.255.241.146/api/d_reg_online/tampil_pasien_inap', ['TANGGAL_AWAL' => date('d/m/Y')]);

        $data['rekap_daftar_online'] = $this->get_api_data('http://103.255.241.146/api/service_rs/daftar_online', [
            'TANGGAL_AWAL' => date('d/m/Y'), // Sesuaikan parameter jika API butuh filter tanggal
            'TANGGAL_AKHIR' => date('d/m/Y')
        ]);

        $data['rajal_lama_baru'] = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_poli_lama_baru', [
            'TANGGAL_AWAL' => date('d/m/Y'), // Sesuaikan parameter jika API butuh filter tanggal
            'TANGGAL_AKHIR' => date('d/m/Y')
        ]);

        $data['penjamin_poli'] = $this->get_api_data('http://103.255.241.146/api/service_rs/penjamin_poliklinik', [
            'TANGGAL_AWAL' => date('d/m/Y'), 
            'TANGGAL_AKHIR' => date('d/m/Y')
        ], true); // <--- TAMBAHKAN 'true' DI SINI

        // Penjamin
        $data['penjamin_data']  = $this->get_api_data('http://103.255.241.146/api/service_rs/inap_penjamin', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);

        // IGD
        $data['igd_sum']        = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_igd_sum', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);
        $data['igd_data']       = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_igd', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);
        $data['igd_datapasienlamabaru']       = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_igd_lama_baru', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);

        // IKBS & ICU
        $data['ikbs_total']     = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_ikbs_total', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);

        $data['icu_total']      = $this->get_api_data('http://103.255.241.146/api/service_rs/tampil_total_icu', [
            'TANGGAL_AWAL' => date('d/m/Y'),
            'TANGGAL_AKHIR' => date('d/m/Y'),
            'TANGGAL_PERIKSA' => date('d/m/Y')
        ]);

        // Load View
        $this->load->view('dashboardpasienall/dashboard_modern', $data);
    }

    // --- 2. API ROUTES UNTUK RAWAT JALAN (JSON) ---
    // Fungsi ini diakses oleh JavaScript Fetch di View

    // Route: dashboardlayanan/rawatjalanrekap
    public function totalmonitoringrajal()
    {
        $url = 'http://103.255.241.146/api/d_reg_online/tampil_pasien_smf_sum';
        $postData = ['TANGGAL_AWAL' => date('d/m/Y')];

        // Parameter ke-3 'true' karena API ini butuh http_build_query
        $data = $this->get_api_data($url, $postData, true);

        header('Content-Type: application/json');
        echo json_encode($data);
    }

    // Route: dashboardlayanan/rawatjalan
    public function monitoringrajal()
    {
        $url = 'http://103.255.241.146/api/d_reg_online/tampil_pasien_smf';
        $postData = ['TANGGAL_AWAL' => date('d/m/Y')];

        // Parameter ke-3 'false' (default) karena API ini menerima array biasa
        $data = $this->get_api_data($url, $postData, false);

        header('Content-Type: application/json');
        echo json_encode($data);
    }

    // --- 3. FUNGSI BANTUAN (PRIVATE) ---
    // Untuk menghindari penulisan ulang kode cURL berkali-kali
    private function get_api_data($url, $postData = [], $useBuildQuery = false)
    {
        $curl = curl_init();

        $options = array(
            CURLOPT_URL => $url,
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 5, // Timeout 5 detik agar loading tidak hang
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
        );

        if (!empty($postData)) {
            if ($useBuildQuery) {
                // Jika API butuh format x-www-form-urlencoded
                $options[CURLOPT_POSTFIELDS] = http_build_query($postData);
            } else {
                // Jika API menerima multipart/form-data (array)
                $options[CURLOPT_POSTFIELDS] = $postData;
            }
        }

        curl_setopt_array($curl, $options);
        $response = curl_exec($curl);
        $err = curl_error($curl);
        curl_close($curl);

        if ($err) {
            // Kembalikan array kosong jika gagal koneksi
            return [];
        }

        $json = json_decode($response);

        // Ambil isi 'response' dari JSON API
        if ($json && isset($json->response)) {
            return $json->response;
        }

        return [];
    }
}
