From 4cb8db31ddf21419730d39a41f2375d9b7bd9dad Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Tue, 19 May 2026 20:53:59 +0700 Subject: [PATCH] Save TANGGAL_MCU to preregister date --- .../setupmcuoffline-ibl/Preregister.php | 104 ++++++++++++++---- 1 file changed, 81 insertions(+), 23 deletions(-) diff --git a/application/controllers/mockup/setupmcuoffline-ibl/Preregister.php b/application/controllers/mockup/setupmcuoffline-ibl/Preregister.php index 73dcf487..b5b05b4a 100644 --- a/application/controllers/mockup/setupmcuoffline-ibl/Preregister.php +++ b/application/controllers/mockup/setupmcuoffline-ibl/Preregister.php @@ -59,8 +59,8 @@ class Preregister extends MY_Controller } } - function cekKTP($nik, $tanggal, $bulan, $tahun) - { + function cekKTP($nik, $tanggal, $bulan, $tahun) + { if (strlen($nik) != 16) { return false; } @@ -88,8 +88,30 @@ class Preregister extends MY_Controller return false; } //setelah berhasil melewati rintangan, berarti nomornya valid (tidak 100% valid) - return true; - } + return true; + } + + function normalize_schedule_date($rawDate) + { + $rawDate = trim((string) $rawDate); + if ($rawDate === '') { + return ''; + } + + $formats = array('d-m-Y', 'Y-m-d', 'd/m/Y', 'Y/m/d'); + foreach ($formats as $format) { + $dt = DateTime::createFromFormat($format, $rawDate); + if ($dt && $dt->format($format) === $rawDate) { + return $dt->format('Y-m-d'); + } + } + + $timestamp = strtotime($rawDate); + if ($timestamp === false) { + return ''; + } + return date('Y-m-d', $timestamp); + } function savecsv() { @@ -127,7 +149,7 @@ class Preregister extends MY_Controller $exist_patients_arr = []; $exist_pat = []; - foreach ($datas as $k => $v) { + foreach ($datas as $k => $v) { $timestamp = strtotime($v['TANGGAL_LAHIR']); $pdob = date('Y-m-d', $timestamp); $v['NAMA'] = trim(str_replace("'", "\\'", $v['NAMA'])); @@ -280,10 +302,11 @@ class Preregister extends MY_Controller $this->sys_error("select mcu_preregister_patients : " . $last_qry); exit; } - $exist_r = $qry_pre->result_array(); - - if (count($exist_r) == 0) { - $query = " INSERT INTO mcu_preregister_patients ( + $exist_r = $qry_pre->result_array(); + $preregister_patient_id = 0; + + if (count($exist_r) == 0) { + $query = " INSERT INTO mcu_preregister_patients ( Mcu_PreregisterPatientsMgm_McuID, Mcu_PreregisterPatientsCompanyNumber, Mcu_PreregisterPatientsNIP, @@ -337,10 +360,11 @@ class Preregister extends MY_Controller $this->sys_error("insert mcu_preregister_patients : " . $last_qry); exit; } - if ($rows) { - $last_id_x = $this->db->insert_id(); - - if ($patient_id == 0) { + if ($rows) { + $last_id_x = $this->db->insert_id(); + $preregister_patient_id = intval($last_id_x); + + if ($patient_id == 0) { $sql = "SELECT * FROM m_patient WHERE @@ -519,16 +543,50 @@ class Preregister extends MY_Controller $sql = "UPDATE mcu_preregister_patients SET Mcu_PreregisterPatientsM_PatientID = {$patient_id} WHERE Mcu_PreregisterPatientsID = {$last_id_x}"; - $query = $this->db->query($sql); - if (!$query) { - $last_qry = $this->db->last_query(); - $this->db->trans_rollback(); - $this->sys_error("update mcu_preregister_patients : " . $last_qry); - exit; - } - } - } - } + $query = $this->db->query($sql); + if (!$query) { + $last_qry = $this->db->last_query(); + $this->db->trans_rollback(); + $this->sys_error("update mcu_preregister_patients : " . $last_qry); + exit; + } + } + } else { + $preregister_patient_id = intval($exist_r[0]['Mcu_PreregisterPatientsID']); + } + + // Simpan jadwal MCU per preregister patient jika parameter TANGGAL_MCU dikirim + $scheduleDate = isset($v['TANGGAL_MCU']) ? $this->normalize_schedule_date($v['TANGGAL_MCU']) : ''; + if ($preregister_patient_id > 0 && $scheduleDate !== '') { + $sqlSchedule = "INSERT INTO mcu_preregister_date ( + Mcu_PreregisterDateMcu_PreregisterPatientsID, + Mcu_PreregisterDateCheckinSchedule, + Mcu_PreregisterDateIsActive, + Mcu_PreregisterDateCreated, + Mcu_PreregisterDateCreatedUserID, + Mcu_PreregisterDateLastUpdated, + Mcu_PreregisterDateLastUpdatedUserID + ) VALUES ( + ?, ?, 'Y', NOW(), ?, NOW(), ? + ) + ON DUPLICATE KEY UPDATE + Mcu_PreregisterDateIsActive = 'Y', + Mcu_PreregisterDateLastUpdated = NOW(), + Mcu_PreregisterDateLastUpdatedUserID = VALUES(Mcu_PreregisterDateLastUpdatedUserID)"; + $qrySchedule = $this->db->query($sqlSchedule, array( + $preregister_patient_id, + $scheduleDate, + $userid, + $userid + )); + if (!$qrySchedule) { + $last_qry = $this->db->last_query(); + $this->db->trans_rollback(); + $this->sys_error("insert mcu_preregister_date : " . $last_qry); + exit; + } + } + } if ($this->db->trans_status() === FALSE) { $this->db->trans_rollback();