<?php
defined('BASEPATH') OR exit('No direct script access allowed'); 
// Pastikan 'defined' dieja dengan benar dan memiliki argumen 'BASEPATH'

class Updatedatasep extends CI_Controller { 
     public function __construct()
    {
        parent::__construct();
        // Load library atau helper yang mungkin Anda butuhkan, contoh:
        // $this->load->library('session');
        // $this->load->helper('url');
    }

    /**
     * Mengambil data referensi dokter dari API eksternal.
     * Diharapkan dipanggil via AJAX POST dari view.
     */
    public function refdoktersep()
    {
        // Panggil API referensi dokter (asumsi POST dengan body kosong)
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/ref_dokter', // URL API Eksternal
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 30, // Tambahkan timeout
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            CURLOPT_CUSTOMREQUEST => 'POST',
            CURLOPT_POSTFIELDS => array(), // Kirim body kosong jika diperlukan API
            CURLOPT_HTTPHEADER => array(
                'Content-Type: application/json' // Sesuaikan jika API butuh header lain
            ),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl); // Tangkap error cURL

        curl_close($curl);

        // Set header output ke JSON
        header('Content-Type: application/json');

        if ($err) {
            // Jika ada error cURL, kirim respons error
            echo json_encode(['error' => 'cURL Error: ' . $err]);
        } elseif ($response === false) {
             // Jika curl_exec gagal tanpa error spesifik
             echo json_encode(['error' => 'Gagal menghubungi API referensi dokter.']);
        } else {
            // Coba decode untuk memastikan JSON valid sebelum dikirim
            json_decode($response);
            if (json_last_error() === JSON_ERROR_NONE) {
                // Jika JSON valid, kirimkan respons asli dari API
                echo $response;
            } else {
                // Jika respons dari API bukan JSON valid
                log_message('error', 'Respons API refdoktersep bukan JSON valid: ' . $response);
                echo json_encode(['error' => 'Respons tidak valid dari API referensi dokter.']);
            }
        }
    }

    /**
     * Menerima data dari form view dan mengirimkannya ke API tambah_sep.
     * Diharapkan dipanggil via AJAX POST dari view.
     */
     public function updateSEP()
    {
        // Set header output ke JSON
        header('Content-Type: application/json');

        // Pastikan method request adalah POST
        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
            
            // Ambil data session
            $nm_user = $this->session->userdata('nm_user');
            $kd_user = $this->session->userdata('kd_user');

            // Ambil data dari permintaan POST
            $kd_registrasi = isset($_POST['KD_REGISTRASI']) ? trim($_POST['KD_REGISTRASI']) : '';
            $no_sep = isset($_POST['NO_SEP']) ? trim($_POST['NO_SEP']) : '';
            $tgl_sep = isset($_POST['TGL_SEP']) ? trim($_POST['TGL_SEP']) : '';
            $kd_poli = isset($_POST['KD_POLI']) ? trim($_POST['KD_POLI']) : '';
            $nm_poli = isset($_POST['NM_POLI']) ? trim($_POST['NM_POLI']) : '';
            $dpjp = isset($_POST['DPJP']) ? trim($_POST['DPJP']) : '';
            $nm_dpjp = isset($_POST['NM_DPJP']) ? trim($_POST['NM_DPJP']) : '';

            // Periksa apakah data penting tidak kosong
            if (!empty($kd_registrasi) && !empty($no_sep) && !empty($tgl_sep) && !empty($dpjp)) {
                
                // --- PERBAIKAN: Format ulang tanggal ---
                // Ubah format dari yyyy-MM-dd (dari form) ke d/m/Y (sesuai kebutuhan API)
                $tgl_sep_api = date('d/m/Y', strtotime($tgl_sep));

                // Siapkan data untuk cURL
                $data_post_api = array(
                    'KD_REGISTRASI' => $kd_registrasi,
                    'NO_SEP'        => $no_sep,
                    'TGL_SEP'       => $tgl_sep_api, // Gunakan tanggal yang sudah diformat
                    'KD_POLI'       => $kd_poli,
                    'NM_POLI'       => $nm_poli,
                    'DPJP'          => $dpjp,
                    'NM_DPJP'       => $nm_dpjp
                );

                // Inisialisasi cURL
                $curl = curl_init();
                curl_setopt_array($curl, array(
                    CURLOPT_URL => 'http://103.255.241.146/api/service_rs/tambah_sep', // Tambahkan http://
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_ENCODING => '',
                    CURLOPT_MAXREDIRS => 10,
                    CURLOPT_TIMEOUT => 30,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                    CURLOPT_CUSTOMREQUEST => 'POST',
                    CURLOPT_POSTFIELDS => http_build_query($data_post_api), // Gunakan http_build_query
                    CURLOPT_HTTPHEADER => array(
                        'Content-Type: application/x-www-form-urlencoded' // Sesuaikan header
                    ),
                ));

                $response = curl_exec($curl);
                $httpCode = curl_getinfo($curl, CURLINFO_HTTP_CODE);

                if (curl_errno($curl)) {
                    $error_msg = curl_error($curl);
                    curl_close($curl);
                    echo json_encode(array('status' => false, 'message' => 'cURL Error: ' . $error_msg));
                    exit();
                }

                curl_close($curl);

                // Log harian (mengikuti contoh batal_sep)
                // Pastikan endpoint 'sinaran_update_sep' ada atau sesuaikan
                $datai = [
                    "KD_REGISTRASI" => $kd_registrasi,
                    "NO_SEP" => $no_sep,
                    "NIP_PETUGAS" => $kd_user,
                    "CATATAN" => "Akun " . $nm_user . " Telah Mengupdate SEP dengan NO SEP: " . $no_sep
                ];
                $curl_log = curl_init();
                curl_setopt_array($curl_log, [
                    CURLOPT_URL => 'http://103.255.241.146/api/service_rs/sinaran_update_sep', // Sesuaikan endpoint log
                    CURLOPT_RETURNTRANSFER => true,
                    CURLOPT_ENCODING => '',
                    CURLOPT_MAXREDIRS => 10,
                    CURLOPT_TIMEOUT => 0,
                    CURLOPT_FOLLOWLOCATION => true,
                    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                    CURLOPT_CUSTOMREQUEST => 'POST',
                    CURLOPT_POSTFIELDS => http_build_query($datai), // Gunakan http_build_query
                    CURLOPT_HTTPHEADER => array(
                        'Content-Type: application/x-www-form-urlencoded'
                    ),
                ]);
                $responsee_log = curl_exec($curl_log); // Eksekusi log
                curl_close($curl_log);
                // Akhir dari Log Harian

                // Periksa kode respons dari API
                if ($httpCode == 200) {
                    $response_data = json_decode($response, true);

                    // Sesuaikan pengecekan respons dengan format API 'tambah_sep'
                    if (isset($response_data['metadata']['code']) && $response_data['metadata']['code'] == 200) {
                        echo json_encode(array('status' => true, 'message' => $response_data['metadata']['message'] ?? 'Berhasil mengupdate SEP.'));
                    } else {
                        $error_message = $response_data['metadata']['message'] ?? 'Gagal mengupdate SEP.';
                        echo json_encode(array('status' => false, 'message' => $error_message, 'data' => $response_data));
                    }
                } else {
                    echo json_encode(array('status' => false, 'message' => 'Error: Respons API tidak benar (' . $httpCode . ')', 'response' => $response));
                }
            } else {
                // Jika data POST tidak lengkap
                echo json_encode(array('status' => false, 'message' => 'Data input tidak lengkap. Pastikan Kode Registrasi, No SEP, Tgl SEP, dan DPJP terisi.'));
            }
        } else {
            // Jika request method bukan POST
            echo json_encode(array('status' => false, 'message' => 'Invalid request method.'));
        }
    }
}


