<?php
class RumahSakit2Controller extends BaseController
{
    public const TT_COVID = 'TT Covid';
    public const TT_NON_COVID = 'TT Non Covid';

    public function getDataTempatTidur($koders) {
        $rs2Client = new RumahSakit2Client($this->config["rumahsakit2_config"]);
        $rs2Client->setLogger($this->logger);
        $result = [
            'rawat_inap_total' => 0,
            'rawat_inap_tersedia' => 0,
            'rawat_inap_covid_total' => 0,
            'rawat_inap_covid_tersedia' => 0,
            'ketersediaan' => []
        ];
        try {
            $clientResult = $rs2Client->getDataTempatTidur($koders);
            if(array_key_exists('Data tempat tidur', $clientResult)) {
                if(!array_key_exists('status', $clientResult['Data tempat tidur'])) {
                    $listTempatTidur = $clientResult['Data tempat tidur'];
                    $totalTerpakai = 0;
                    $totalTerpakaiCovid = 0;
                    foreach ($listTempatTidur as $itemTempatTidur) {
                        if ($itemTempatTidur['status_tt'] == self::TT_COVID) {
                            $result['rawat_inap_covid_total'] += $itemTempatTidur['jml_tt'];
                            $totalTerpakaiCovid += $itemTempatTidur['jml_terpakai'];
                        } elseif ($itemTempatTidur['status_tt'] == self::TT_NON_COVID) {
                            $result['rawat_inap_total'] += $itemTempatTidur['jml_tt'];
                            $totalTerpakai += $itemTempatTidur['jml_terpakai'];
                        }


                        $key = $itemTempatTidur['id_tt'];
                        if (!array_key_exists($key, $result['ketersediaan'])) {
                            $result['ketersediaan'][$key] = [
                                'total' => 0,
                                'terpakai' => 0,
                                'kelas_perawatan' => $itemTempatTidur['tt'],
                                'status_tt' => $itemTempatTidur['status_tt'],
                                'ruang_perawatan' => []
                            ];
                        }
                        $result['ketersediaan'][$key]['total'] += $itemTempatTidur['jml_tt'];
                        $result['ketersediaan'][$key]['terpakai'] += $itemTempatTidur['jml_terpakai'];
                        $keyRuang = empty($itemTempatTidur["namaruang"]) ? 'empty_name' : str_replace(" ", "_", str_replace('.', '', strtolower($itemTempatTidur["namaruang"])));
                        if (!array_key_exists($keyRuang, $result['ketersediaan'][$key]['ruang_perawatan'])) {
                            $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang] = [
                                'nama' => $itemTempatTidur['namaruang'],
                                'total' => $itemTempatTidur['jml_tt'],
                                'terpakai' => $itemTempatTidur['jml_terpakai'],
                                'tersedia' => $itemTempatTidur['jml_tt'] - $itemTempatTidur['jml_terpakai'],
                                'waktu_update' => $itemTempatTidur['tglupdate']
                            ];
                        } else {
                            $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang]['total'] += $itemTempatTidur['jml_tt'];
                            $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang]['terpakai'] += $itemTempatTidur['jml_terpakai'];
                            $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang]['tersedia'] += $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang]['total'] - $result['ketersediaan'][$key]['ruang_perawatan'][$keyRuang]['terpakai'];
                        }
                    }

                    $result['rawat_inap_tersedia'] = $result['rawat_inap_total'] - $totalTerpakai;
                    $result['rawat_inap_covid_tersedia'] = $result['rawat_inap_covid_total'] - $totalTerpakaiCovid;
                }
            }
            else{$result = $clientResult;}
            return $result;
        }
        catch (Exception $e) {
            throw new Exception($e);
        }
    }
}
