From 7e5958e2d6f52a84c181b05fb5e211edd2d3924c Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Fri, 24 Apr 2026 16:39:11 +0700 Subject: [PATCH] Use resume conclusion tables --- .../mockup/resumeindividufacelift/Resume.php | 303 ++++++++++++------ 1 file changed, 197 insertions(+), 106 deletions(-) diff --git a/application/controllers/mockup/resumeindividufacelift/Resume.php b/application/controllers/mockup/resumeindividufacelift/Resume.php index ed714d90..e4bb55a8 100644 --- a/application/controllers/mockup/resumeindividufacelift/Resume.php +++ b/application/controllers/mockup/resumeindividufacelift/Resume.php @@ -663,25 +663,95 @@ class Resume extends MY_Controller $this->sys_ok($result); exit; } - function save() - { - if (!$this->isLogin) { - $this->sys_error("Invalid Token"); - exit; - } - $prm = $this->sys_input; - $act = $prm['data']['act']; - $data = $prm['data']; - $userid = $this->sys_user["M_UserID"]; - if ($act == 'VAL') { - if ( - $data['fitnessCategory'] == '' || - intval($data['fitnessCategory']) == 0 || - $data['fitnessCategory'] == null - ) { - $this->sys_error("Pilih kategori fitness atau generate terlebih dahulu"); - exit; - } + function save() + { + if (!$this->isLogin) { + $this->sys_error("Invalid Token"); + exit; + } + $prm = $this->sys_input; + $data = isset($prm['data']) && is_array($prm['data']) ? $prm['data'] : $prm; + $header = isset($data['header']) && is_array($data['header']) ? $data['header'] : []; + $act = $data['act'] ?? ($header['act'] ?? 'NEW'); + $userid = $this->sys_user["M_UserID"]; + $fitnessCategoryData = $data['fitnessCategory'] ?? ($header['fitnessCategory'] ?? null); + $fitnessCategoryID = 0; + if (is_array($fitnessCategoryData)) { + $fitnessCategoryID = intval($fitnessCategoryData['Mcu_FitnessCategoryID'] ?? ($fitnessCategoryData['id'] ?? 0)); + } + else { + $fitnessCategoryID = intval($fitnessCategoryData); + } + + $conclusionRows = []; + if (isset($header['conclusions']) && is_array($header['conclusions'])) { + foreach ($header['conclusions'] as $conclusionRow) { + if (!is_array($conclusionRow)) { + continue; + } + $details = isset($conclusionRow['details']) && is_array($conclusionRow['details']) ? $conclusionRow['details'] : []; + $conclusionRows[] = [ + 'id' => intval($conclusionRow['id'] ?? 0), + 'code' => strtoupper(trim($conclusionRow['code'] ?? '')), + 'kesimpulan' => trim($details['kesimpulan'] ?? ''), + 'rekomendasi' => trim($details['rekomendasi'] ?? ''), + 'saran' => trim($details['saran'] ?? ''), + ]; + } + } + + if (empty($conclusionRows)) { + $conclusionRows[] = [ + 'id' => 1, + 'code' => 'ID', + 'kesimpulan' => trim($header['kesimpulan'] ?? ''), + 'rekomendasi' => trim($header['rekomendasi'] ?? ''), + 'saran' => trim($header['saran'] ?? ''), + ]; + if ( + trim($header['conclusion'] ?? '') !== '' || + trim($header['recomendation'] ?? '') !== '' || + trim($header['advice'] ?? '') !== '' + ) { + $conclusionRows[] = [ + 'id' => 2, + 'code' => 'EN', + 'kesimpulan' => trim($header['conclusion'] ?? ''), + 'rekomendasi' => trim($header['recomendation'] ?? ''), + 'saran' => trim($header['advice'] ?? ''), + ]; + } + } + + $defaultConclusion = [ + 'kesimpulan' => '', + 'rekomendasi' => '', + 'saran' => '', + ]; + $idConclusion = $defaultConclusion; + $engConclusion = $defaultConclusion; + foreach ($conclusionRows as $conclusionRow) { + if ($idConclusion === $defaultConclusion && ($conclusionRow['code'] === 'ID' || intval($conclusionRow['id']) === 1)) { + $idConclusion = $conclusionRow; + } + if ($engConclusion === $defaultConclusion && ($conclusionRow['code'] === 'EN' || intval($conclusionRow['id']) === 2)) { + $engConclusion = $conclusionRow; + } + } + if ($idConclusion === $defaultConclusion && !empty($conclusionRows)) { + $idConclusion = $conclusionRows[0]; + } + if ($engConclusion === $defaultConclusion && count($conclusionRows) > 1) { + $engConclusion = $conclusionRows[1]; + } + + if ($act == 'VAL') { + if ( + $fitnessCategoryID == 0 + ) { + $this->sys_error("Pilih kategori fitness atau generate terlebih dahulu"); + exit; + } $sql = ""; $query = $this->db_onedev->query($sql, [$data['orderID']]); @@ -744,40 +814,25 @@ class Resume extends MY_Controller VALUES(?,?,?,?,?,?,?,?,?)"; $query = $this->db_onedev->query($sql, [ $data['orderID'], - $status, - $val, - $dt, - $userid, - $data['header']['kesimpulan'], - $data['header']['rekomendasi'], - $data['header']['saran'], - $data['fitnessCategory'], - ]); - if (!$query) { - $message = $this->db_onedev->error(); - $message['qry'] = $this->db_onedev->last_query(); - $this->sys_error($message); + $status, + $val, + $dt, + $userid, + $idConclusion['kesimpulan'], + $idConclusion['rekomendasi'], + $idConclusion['saran'], + $fitnessCategoryID, + ]); + if (!$query) { + $message = $this->db_onedev->error(); + $message['qry'] = $this->db_onedev->last_query(); + $this->sys_error($message); exit; } $resumeID = $this->db_onedev->insert_id(); - $sql = "INSERT INTO mcu_resume_eng( - Mcu_ResumeEngMcu_ResumeID, - Mcu_ResumeEngAdvice, - Mcu_ResumeEngConlusion, - Mcu_ResumeEngRecomendation, - Mcu_ResumeEngCreated, - Mcu_ResumeEngCreatedUserID) - VALUES(?,?,?,?,NOW(),?)"; - $query = $this->db_onedev->query($sql, [ - $resumeID, - $data['header']['advice'], - $data['header']['conclusion'], - $data['header']['recomendation'], - $userid - ]); - } - else { + } + else { if ($act != 'VAL' && $act != 'UNVAL') { $statusLog = "UPDATE"; } @@ -816,64 +871,32 @@ class Resume extends MY_Controller Mcu_ResumeMcu_FitnessCategoryID = ? WHERE Mcu_ResumeID = ?"; $query = $this->db_onedev->query($sql, [ - $status, - $val, - $dt, - $userid, - $data['header']['kesimpulan'], - $data['header']['rekomendasi'], - $data['header']['saran'], - $data['fitnessCategory'], - $resumeID, - ]); - if (!$query) { - $message = $this->db_onedev->error(); + $status, + $val, + $dt, + $userid, + $idConclusion['kesimpulan'], + $idConclusion['rekomendasi'], + $idConclusion['saran'], + $fitnessCategoryID, + $resumeID, + ]); + if (!$query) { + $message = $this->db_onedev->error(); $message['qry'] = $this->db_onedev->last_query(); $this->sys_error($message); exit; } - $sql = "SELECT * FROM mcu_resume_eng WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = 'Y'"; - $query = $this->db_onedev->query($sql, [ - $resumeID, - ]); - $cekEng = $query->result_array(); - if (empty($cekEng)) { - $sql = "INSERT INTO mcu_resume_eng( - Mcu_ResumeEngMcu_ResumeID, - Mcu_ResumeEngAdvice, - Mcu_ResumeEngConlusion, - Mcu_ResumeEngRecomendation, - Mcu_ResumeEngCreated, - Mcu_ResumeEngCreatedUserID) - VALUES(?,?,?,?,NOW(),?)"; - $query = $this->db_onedev->query($sql, [ - $resumeID, - $data['header']['advice'], - $data['header']['conclusion'], - $data['header']['recomendation'], - $userid - ]); - } - else { - $sql = "UPDATE mcu_resume_eng - SET Mcu_ResumeEngAdvice = ?, - Mcu_ResumeEngConlusion = ?, - Mcu_ResumeEngRecomendation = ? - WHERE Mcu_ResumeEngMcu_ResumeID = ? AND Mcu_ResumeEngIsActive = 'Y'"; - $query = $this->db_onedev->query($sql, [ - $data['header']['advice'], - $data['header']['conclusion'], - $data['header']['recomendation'], - $resumeID, - ]); - } - } - for ($i = 0; $i < count($data['detail']); $i++) { - $detail = $data['detail'][$i]; - $result = $detail['result']; - if ($result == null) { - $result = ''; - } + } + $this->syncResumeConclusions($resumeID, $conclusionRows, $userid); + + $detailRows = isset($data['detail']) && is_array($data['detail']) ? $data['detail'] : []; + for ($i = 0; $i < count($detailRows); $i++) { + $detail = $detailRows[$i]; + $result = $detail['result']; + if ($result == null) { + $result = ''; + } if ($detail['category'] == 'LAB') { $sql = "SELECT Mcu_ResumeDetailsID @@ -1047,9 +1070,77 @@ class Resume extends MY_Controller $this->sys_error($message); exit; } - $this->sys_ok('ok'); - } - function getlab($id, $isApi) + $this->sys_ok('ok'); + } + + private function syncResumeConclusions($resumeID, $conclusionRows, $userid) + { + foreach ($conclusionRows as $conclusionRow) { + $langID = intval($conclusionRow['id'] ?? 0); + if ($langID <= 0) { + continue; + } + + $sql = "SELECT Mcu_ResumeConclusionID + FROM mcu_resume_conclusion + WHERE Mcu_ResumeConclusionMcu_ResumeID = ? + AND Mcu_ResumeConclusionM_LangID = ? + AND Mcu_ResumeConclusionIsActive = 'Y' + LIMIT 1"; + $query = $this->db_onedev->query($sql, [$resumeID, $langID]); + if (!$query) { + $message = $this->db_onedev->error(); + $message['qry'] = $this->db_onedev->last_query(); + $this->sys_error($message); + exit; + } + + $existingConclusion = $query->row_array(); + if (empty($existingConclusion)) { + $sql = "INSERT INTO mcu_resume_conclusion( + Mcu_ResumeConclusionMcu_ResumeID, + Mcu_ResumeConclusionM_LangID, + Mcu_ResumeConclusionKesimpulan, + Mcu_ResumeConclusionRekomendasi, + Mcu_ResumeConclusionSaran, + Mcu_ResumeConclusionCreated, + Mcu_ResumeConclusionCreatedUserID) + VALUES(?,?,?,?,?,NOW(),?)"; + $query = $this->db_onedev->query($sql, [ + $resumeID, + $langID, + $conclusionRow['kesimpulan'], + $conclusionRow['rekomendasi'], + $conclusionRow['saran'], + $userid, + ]); + } + else { + $sql = "UPDATE mcu_resume_conclusion + SET Mcu_ResumeConclusionKesimpulan = ?, + Mcu_ResumeConclusionRekomendasi = ?, + Mcu_ResumeConclusionSaran = ?, + Mcu_ResumeConclusionLastUpdated = NOW(), + Mcu_ResumeConclusionLastUpdatedUserID = ? + WHERE Mcu_ResumeConclusionID = ?"; + $query = $this->db_onedev->query($sql, [ + $conclusionRow['kesimpulan'], + $conclusionRow['rekomendasi'], + $conclusionRow['saran'], + $userid, + $existingConclusion['Mcu_ResumeConclusionID'], + ]); + } + + if (!$query) { + $message = $this->db_onedev->error(); + $message['qry'] = $this->db_onedev->last_query(); + $this->sys_error($message); + exit; + } + } + } + function getlab($id, $isApi) { $prm = $this->sys_input;