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

class Kasirnottagih extends CI_Controller
{
     public function datarekapkasirnotbayar()
    {
        if (isset($_POST['TANGGAL_AWAL']) && isset($_POST['TANGGAL_AKHIR']) && isset($_POST['KD_JENIS_PASIEN'])&& isset($_POST['KD_PEMBAYARAN'])) {
            // Mengambil input tanggal dari form
            $tanggalawal = $_POST['TANGGAL_AWAL'];
            $tanggalakhir = $_POST['TANGGAL_AKHIR'];
            $kdjenispasien = $_POST['KD_JENIS_PASIEN'];
            $kdpembayaran = $_POST['KD_PEMBAYARAN'];

            // Mengonversi format tanggal ke dd/mm/yyyy
            $tanggal_awal = date('d/m/Y', strtotime($tanggalawal));
            $tanggal_akhir = date('d/m/Y', strtotime($tanggalakhir));

            // Mengambil data dari API
            $curl = curl_init();
            curl_setopt_array($curl, array(
                CURLOPT_URL => '103.255.241.146/api/service_rs//kasir_belum_tertagih',
                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 => array(
                    'TANGGAL_AWAL' => $tanggal_awal,
                    'TANGGAL_AKHIR' => $tanggal_akhir,
                    'KD_JENIS_PASIEN' => $kdjenispasien,
                    'KD_PEMBAYARAN' => $kdpembayaran,
                    
                ),
            ));

            $response = curl_exec($curl);
            curl_close($curl);

            // Mengembalikan respons API dalam format JSON
            if ($response) {
                // Jika response bukan JSON, kirimkan error
                json_decode($response);
                if (json_last_error() !== JSON_ERROR_NONE) {
                    echo json_encode(['error' => 'Data tidak valid.']);
                } else {
                    echo $response; // Kirimkan kembali data yang benar
                }
            } else {
                echo json_encode(['error' => 'Tidak ada data yang ditemukan atau terjadi kesalahan.']);
            }
        }
    }


    public function unduhrekapkasir_nottagih()
    {
        $nm_user = $this->session->userdata('nm_user');
        $kd_user = $this->session->userdata('kd_user');
        $tanggal_awal = $this->input->get('TANGGAL_AWAL');
        $tanggal_akhir = $this->input->get('TANGGAL_AKHIR');
        $kdjenispasien = $this->input->get('KD_JENIS_PASIEN');
        $kdpembayaran = $this->input->get('KD_PEMBAYARAN');

        // Ubah format tanggal jika diperlukan
        $tanggal_awali = date('d/m/Y', strtotime($tanggal_awal));
        $tanggal_akhiri = date('d/m/Y', strtotime($tanggal_akhir));

        // Memanggil API menggunakan cURL
        $curl = curl_init();
        curl_setopt_array($curl, array(
            CURLOPT_URL => '103.255.241.146/api/service_rs/kasir_belum_tertagih',
            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 => array(
                'TANGGAL_AWAL' => $tanggal_awali,
                'TANGGAL_AKHIR' => $tanggal_akhiri,
                'KD_JENIS_PASIEN' => $kdjenispasien,
                'KD_PEMBAYARAN' => $kdpembayaran,
            ),
        ));

        $response = curl_exec($curl);
        curl_close($curl);

        //log harian download
        $datai = [
            "NIP_PETUGAS" => $kd_user,
            "CATATAN" => "Akun " . $nm_user . " berhasil download Data Rekap Kasir belum tertagih."

        ];
        $curl = curl_init();
        curl_setopt_array($curl, [
            CURLOPT_URL => '103.255.241.146/api/service_rs/sinaran_download',
            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 => $datai,
        ]);

        $responsee = curl_exec($curl);
        curl_close($curl);


        if ($response) {
            $data = json_decode($response, true)['response'];

            // Load library PhpSpreadsheet
            //require_once APPPATH . 'third_party/PhpSpreadsheet/src/Bootstrap.php';

            // Load library PhpSpreadsheet
            require_once APPPATH . '../vendor/autoload.php';

            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Set header kolom
            $sheet->setCellValue('A1', 'Kode Registrasi');
            $sheet->setCellValue('B1', 'Urut Nomor');
            $sheet->setCellValue('C1', 'No Tagihan');
            $sheet->setCellValue('D1', 'Tgl Tagihan');
            $sheet->setCellValue('E1', 'Kode Pembayaran');
            $sheet->setCellValue('F1', 'Jumlah Tagihan');
            $sheet->setCellValue('G1', 'Jumlah Tagihan Pribadi');
            $sheet->setCellValue('H1', 'Jumlah Tagihan Penjamin');
            $sheet->setCellValue('I1', 'Prosen Diskon');
            $sheet->setCellValue('J1', 'Jumlah Diskon');
            $sheet->setCellValue('K1', 'Jumlah Diskon Pribadi');
            $sheet->setCellValue('L1', 'Jumlah Diskon Penjamin');
            $sheet->setCellValue('M1', 'Prosen PPN');
            $sheet->setCellValue('N1', 'Jumlah PPN');
            $sheet->setCellValue('O1', 'Jumlah PPN Pribadi');
            $sheet->setCellValue('P1', 'Jumlah PPN Penjamin');
            $sheet->setCellValue('Q1', 'Total Tagihan');
            $sheet->setCellValue('R1', 'Total Tagihan Pribadi');
            $sheet->setCellValue('S1', 'Kode Penjamin Pribadi');
            $sheet->setCellValue('T1', 'Total Tagihan Penjamin');
            $sheet->setCellValue('U1', 'Kode Penjamin Penjamin');
            $sheet->setCellValue('V1', 'Terbilang');
            $sheet->setCellValue('W1', 'Status');
            $sheet->setCellValue('X1', 'Is Cetak');
            $sheet->setCellValue('Y1', 'Is Lunas');
            $sheet->setCellValue('Z1', 'No Index Transaksi');
            $sheet->setCellValue('AA1', 'Is Post Akun');
            $sheet->setCellValue('AB1', 'Tgl Insert');
            $sheet->setCellValue('AC1', 'Tgl Update');
            $sheet->setCellValue('AD1', 'Keterangan');
            $sheet->setCellValue('AE1', 'Catatan');
            $sheet->setCellValue('AF1', 'Tgl Antri Panggil');
            $sheet->setCellValue('AG1', 'Antri Panggil');
            $sheet->setCellValue('AH1', 'NIP Pencatat');
            $sheet->setCellValue('AI1', 'Is Bayar');
            $sheet->setCellValue('AJ1', 'Kode Rekam Medis');
            $sheet->setCellValue('AK1', 'Kode Pendaftaran');
            $sheet->setCellValue('AL1', 'Kode Cara Masuk');
            $sheet->setCellValue('AM1', 'Tgl Registrasi');
            $sheet->setCellValue('AN1', 'Jam Registrasi');
            $sheet->setCellValue('AO1', 'Tgl Keluar');
            $sheet->setCellValue('AP1', 'Jam Keluar');
            $sheet->setCellValue('AQ1', 'Kode Jenis Pasien');
            $sheet->setCellValue('AR1', 'Kode Poliklinik');
            $sheet->setCellValue('AS1', 'NIP Dokter');
            $sheet->setCellValue('AT1', 'Kode Ruang');
            $sheet->setCellValue('AU1', 'Kode Status Periksa');
            $sheet->setCellValue('AV1', 'Total');
            $sheet->setCellValue('AW1', 'Total Pribadi');
            $sheet->setCellValue('AX1', 'Total Penjamin');
            $sheet->setCellValue('AY1', 'NIP Petugas');
            $sheet->setCellValue('AZ1', 'No Antri');
            $sheet->setCellValue('BA1', 'NIP Perawat');
            $sheet->setCellValue('BB1', 'NIP Dokter Tuju');
            $sheet->setCellValue('BC1', 'NIP Update');
            $sheet->setCellValue('BD1', 'Nama Pasien');
            $sheet->setCellValue('BE1', 'Identitas Pasien');
            $sheet->setCellValue('BF1', 'Jenis Kelamin');
            $sheet->setCellValue('BG1', 'Kode Gol Darah');
            $sheet->setCellValue('BH1', 'Tgl Lahir');
            $sheet->setCellValue('BI1', 'Nama Jenis Kelamin');
            $sheet->setCellValue('BJ1', 'Umur Tahun');
            $sheet->setCellValue('BK1', 'Umur Bulan');
            $sheet->setCellValue('BL1', 'Umur Hari');
            $sheet->setCellValue('BM1', 'Kode Agama');
            $sheet->setCellValue('BN1', 'Nama Agama');
            $sheet->setCellValue('BO1', 'Nama Status Kawin');
            $sheet->setCellValue('BP1', 'No KTP');
            $sheet->setCellValue('BQ1', 'Alamat');
            $sheet->setCellValue('BR1', 'Kode Desa');
            $sheet->setCellValue('BS1', 'Nama Pendaftaran');
            $sheet->setCellValue('BT1', 'Nama Cara Masuk');
            $sheet->setCellValue('BU1', 'Nama Pembayaran');
            $sheet->setCellValue('BV1', 'Nama Jenis Pasien');
            $sheet->setCellValue('BW1', 'Catatan Alergi');
            $sheet->setCellValue('BX1', 'Nama Poliklinik');
            $sheet->setCellValue('BY1', 'Kode Grup Ruang');
            $sheet->setCellValue('BZ1', 'Nama Dokter');
            $sheet->setCellValue('CA1', 'Nama Perujuk');
            $sheet->setCellValue('CB1', 'Nama Perawat');
            $sheet->setCellValue('CC1', 'Nama Status Periksa');

            // Isi data
            $row = 2;
            foreach ($data as $item) {
                $sheet->setCellValue('A' . $row, $item['kd_registrasi']);
                $sheet->setCellValue('B' . $row, $item['urut_nomor']);
                $sheet->setCellValue('C' . $row, $item['no_tagihan']);
                $sheet->setCellValue('D' . $row, $item['tgl_tagihan']);
                $sheet->setCellValue('E' . $row, $item['kd_pembayaran']);
                $sheet->setCellValue('F' . $row, $item['jumlah_tagihan']);
                $sheet->setCellValue('G' . $row, $item['jumlah_tagihan_pribadi']);
                $sheet->setCellValue('H' . $row, $item['jumlah_tagihan_penjamin']);
                $sheet->setCellValue('I' . $row, $item['prosen_disc']);
                $sheet->setCellValue('J' . $row, $item['jumlah_disc']);
                $sheet->setCellValue('K' . $row, $item['jumlah_disc_pribadi']);
                $sheet->setCellValue('L' . $row, $item['jumlah_disc_penjamin']);
                $sheet->setCellValue('M' . $row, $item['prosen_ppn']);
                $sheet->setCellValue('N' . $row, $item['jumlah_ppn']);
                $sheet->setCellValue('O' . $row, $item['jumlah_ppn_pribadi']);
                $sheet->setCellValue('P' . $row, $item['jumlah_ppn_penjamin']);
                $sheet->setCellValue('Q' . $row, $item['total_tagihan']);
                $sheet->setCellValue('R' . $row, $item['total_tagihan_pribadi']);
                $sheet->setCellValue('S' . $row, $item['kd_penjamin_pribadi']);
                $sheet->setCellValue('T' . $row, $item['total_tagihan_penjamin']);
                $sheet->setCellValue('U' . $row, $item['kd_penjamin_penjamin']);
                $sheet->setCellValue('V' . $row, $item['terbilang']);
                $sheet->setCellValue('W' . $row, $item['status']);
                $sheet->setCellValue('X' . $row, $item['is_cetak']);
                $sheet->setCellValue('Y' . $row, $item['is_lunas']);
                $sheet->setCellValue('Z' . $row, $item['no_index_transaksi']);

                $sheet->setCellValue('AA' . $row, $item['is_post_akun']);
                $sheet->setCellValue('AB' . $row, $item['tgl_insert']);
                $sheet->setCellValue('AC' . $row, $item['tgl_update']);
                $sheet->setCellValue('AD' . $row, $item['keterangan']);
                $sheet->setCellValue('AE' . $row, $item['catatan']);
                $sheet->setCellValue('AF' . $row, $item['tgl_antri_panggil']);
                $sheet->setCellValue('AG' . $row, $item['antri_panggil']);
                $sheet->setCellValue('AH' . $row, $item['nip_pencatat']);
                $sheet->setCellValue('AI' . $row, $item['is_bayar']);
                $sheet->setCellValue('AJ' . $row, $item['kd_rekam_medis']);
                $sheet->setCellValue('AK' . $row, $item['kd_pendaftaran']);
                $sheet->setCellValue('AL' . $row, $item['kd_cara_masuk']);
                $sheet->setCellValue('AM' . $row, $item['tgl_registrasi']);
                $sheet->setCellValue('AN' . $row, $item['jam_registrasi']);
                $sheet->setCellValue('AO' . $row, $item['tgl_keluar']);
                $sheet->setCellValue('AP' . $row, $item['jam_keluar']);
                $sheet->setCellValue('AQ' . $row, $item['kd_jenis_pasien']);
                $sheet->setCellValue('AR' . $row, $item['kd_poliklinik']);
                $sheet->setCellValue('AS' . $row, $item['nip_dokter']);
                $sheet->setCellValue('AT' . $row, $item['kd_ruang']);
                $sheet->setCellValue('AU' . $row, $item['kd_status_periksa']);
                $sheet->setCellValue('AV' . $row, $item['total']);
                $sheet->setCellValue('AW' . $row, $item['total_pribadi']);
                $sheet->setCellValue('AX' . $row, $item['total_penjamin']);
                $sheet->setCellValue('AY' . $row, $item['nip_petugas']);
                $sheet->setCellValue('AZ' . $row, $item['no_antri']);

                $sheet->setCellValue('BA' . $row, $item['nip_perawat']);
                $sheet->setCellValue('BB' . $row, $item['nip_dokter_tuju']);
                $sheet->setCellValue('BC' . $row, $item['nip_update']);
                $sheet->setCellValue('BD' . $row, $item['nm_pasien']);
                $sheet->setCellValue('BE' . $row, $item['identitas_pasien']);
                $sheet->setCellValue('BF' . $row, $item['jenis_kelamin']);
                $sheet->setCellValue('BG' . $row, $item['kd_gol_darah']);
                $sheet->setCellValue('BH' . $row, $item['tgl_lahir']);
                $sheet->setCellValue('BI' . $row, $item['nm_jenis_kelamin']);
                $sheet->setCellValue('BJ' . $row, $item['umur_tahun']);
                $sheet->setCellValue('BK' . $row, $item['umur_bulan']);
                $sheet->setCellValue('BL' . $row, $item['umur_hari']);
                $sheet->setCellValue('BM' . $row, $item['kd_agama']);
                $sheet->setCellValue('BN' . $row, $item['nm_agama']);
                $sheet->setCellValue('BO' . $row, $item['nm_status_kawin']);
                $sheet->setCellValue('BP' . $row, $item['no_ktp']);
                $sheet->setCellValue('BQ' . $row, $item['alamat']);
                $sheet->setCellValue('BR' . $row, $item['kd_desa']);
                $sheet->setCellValue('BS' . $row, $item['nm_pendaftaran']);
                $sheet->setCellValue('BT' . $row, $item['nm_cara_masuk']);
                $sheet->setCellValue('BU' . $row, $item['nm_pembayaran']);
                $sheet->setCellValue('BV' . $row, $item['nm_jenis_pasien']);
                $sheet->setCellValue('BW' . $row, $item['catatan_alergi']);
                $sheet->setCellValue('BX' . $row, $item['nm_poliklinik']);
                $sheet->setCellValue('BY' . $row, $item['kd_grup_ruang']);
                $sheet->setCellValue('BZ' . $row, $item['nm_dokter']);
                $sheet->setCellValue('CA' . $row, $item['nm_perujuk']);
                $sheet->setCellValue('CB' . $row, $item['nm_perawat']);
                $sheet->setCellValue('CC' . $row, $item['nm_status_periksa']);
                $row++;
            }

            // Mengatur header untuk unduhan
            header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
            header('Content-Disposition: attachment;filename="data_rekap_pasien_belum_Tagih.xlsx"');
            header('Cache-Control: max-age=0');
            header('Expires: 0');
            header('Pragma: public');

            // Output ke file
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save('php://output');
            exit();
        } else {
            echo json_encode(['error' => 'Tidak ada data yang ditemukan.']);
        }
    }

     public function ref_pembayarankasir()
    {
        $curl = curl_init();

        curl_setopt_array($curl, array(
            CURLOPT_URL => 'http://103.255.241.146/api/service_rs/ref_pembayaran_all',
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_ENCODING => '',
            CURLOPT_MAXREDIRS => 10,
            CURLOPT_TIMEOUT => 0, // Waktu tunggu permintaan selama 30 detik
            CURLOPT_FOLLOWLOCATION => true,
            CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
            // Metode diatur ke POST sesuai kebutuhan API backend
            CURLOPT_CUSTOMREQUEST => 'POST',
            // Mengirim body kosong secara eksplisit menggunakan sintaks array() yang kompatibel
            CURLOPT_POSTFIELDS => array(),
        ));

        $response = curl_exec($curl);
        $err = curl_error($curl); // Menangkap error dari cURL jika ada

        curl_close($curl);

        // Selalu atur header Content-Type agar browser tahu ini adalah JSON
        header('Content-Type: application/json');

        if ($err) {
            // Jika terjadi error pada cURL (misal: tidak bisa terhubung ke API)
            echo json_encode(['error' => 'Gagal terhubung ke server API eksternal: ' . $err]);
        } elseif ($response) {
            // Cek apakah respons adalah JSON yang valid sebelum dikirim
            json_decode($response);
            if (json_last_error() !== JSON_ERROR_NONE) {
                echo json_encode(['error' => 'Respons dari API eksternal bukan JSON yang valid.']);
            } else {
                // Kirimkan kembali data JSON yang benar dari API
                echo $response;
            }
        } else {
            // Jika tidak ada respons sama sekali dari API
            echo json_encode(['error' => 'Tidak ada respons dari server API eksternal.']);
        }
    }
}