Sync mcu project from mgm mcu

This commit is contained in:
sas.fajri
2026-05-05 14:43:57 +07:00
parent fa4c559f27
commit d03dec2dda
3 changed files with 89 additions and 0 deletions

View File

@@ -591,6 +591,25 @@ class Preregisterv3 extends MY_Controller
} }
} }
$qry_sync_project = $this->db->query(
"CALL cpone.sp_upsert_mcu_project_by_mgm_mcuid(?)",
array(intval($prm['xid']))
);
if (!$qry_sync_project) {
$last_qry = $this->db->last_query();
$this->db->trans_rollback();
$this->sys_error("call sp_upsert_mcu_project_by_mgm_mcuid : " . $last_qry);
exit;
}
if (isset($this->db->conn_id) && $this->db->conn_id instanceof mysqli) {
while ($this->db->conn_id->more_results() && $this->db->conn_id->next_result()) {
$dummyResult = $this->db->conn_id->store_result();
if ($dummyResult instanceof mysqli_result) {
$dummyResult->free();
}
}
}
if ($this->db->trans_status() === FALSE) { if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback(); $this->db->trans_rollback();
$this->sys_error("Transaction Failed"); $this->sys_error("Transaction Failed");

View File

@@ -0,0 +1,51 @@
DROP PROCEDURE IF EXISTS cpone.sp_upsert_mcu_project_by_mgm_mcuid;
DELIMITER $$
CREATE PROCEDURE cpone.sp_upsert_mcu_project_by_mgm_mcuid(IN p_mgm_mcuid INT)
BEGIN
INSERT INTO cpone_dashboard.mcu_project (
Mcu_ProjectMcuID,
Mcu_ProjectCorporateID,
Mcu_ProjectCorporateName,
Mcu_ProjectNumber,
Mcu_ProjectLabel,
Mcu_ProjectBranchID,
Mcu_ProjectStartDate,
Mcu_ProjectEndDate,
Mcu_ProjectIsActive,
Mcu_ProjectTotalParticipant,
Mcu_ProjectSyncedAt
)
SELECT
mm.Mgm_McuID,
mm.Mgm_McuCorporateID,
c.CorporateName AS Mcu_ProjectCorporateName,
mm.Mgm_McuNumber,
mm.Mgm_McuLabel,
mm.Mgm_McuM_BranchID,
NULLIF(mm.Mgm_McuStartDate, '0000-00-00') AS Mcu_ProjectStartDate,
NULLIF(mm.Mgm_McuEndDate, '0000-00-00') AS Mcu_ProjectEndDate,
mm.Mgm_McuIsActive,
(
SELECT COUNT(*)
FROM cpone.mcu_preregister_patients pp
WHERE pp.Mcu_PreregisterPatientsMgm_McuID = mm.Mgm_McuID
) AS Mcu_ProjectTotalParticipant,
NOW() AS Mcu_ProjectSyncedAt
FROM cpone.mgm_mcu mm
LEFT JOIN cpone.corporate c
ON c.CorporateID = mm.Mgm_McuCorporateID
WHERE mm.Mgm_McuID = p_mgm_mcuid
ON DUPLICATE KEY UPDATE
Mcu_ProjectCorporateID = VALUES(Mcu_ProjectCorporateID),
Mcu_ProjectCorporateName = VALUES(Mcu_ProjectCorporateName),
Mcu_ProjectNumber = VALUES(Mcu_ProjectNumber),
Mcu_ProjectLabel = VALUES(Mcu_ProjectLabel),
Mcu_ProjectBranchID = VALUES(Mcu_ProjectBranchID),
Mcu_ProjectStartDate = VALUES(Mcu_ProjectStartDate),
Mcu_ProjectEndDate = VALUES(Mcu_ProjectEndDate),
Mcu_ProjectIsActive = VALUES(Mcu_ProjectIsActive),
Mcu_ProjectTotalParticipant = VALUES(Mcu_ProjectTotalParticipant),
Mcu_ProjectSyncedAt = NOW();
END$$
DELIMITER ;

View File

@@ -0,0 +1,19 @@
DROP TRIGGER IF EXISTS cpone.trg_mgm_mcu_ai_sync_mcu_project;
DELIMITER $$
CREATE TRIGGER cpone.trg_mgm_mcu_ai_sync_mcu_project
AFTER INSERT ON cpone.mgm_mcu
FOR EACH ROW
BEGIN
CALL cpone.sp_upsert_mcu_project_by_mgm_mcuid(NEW.Mgm_McuID);
END$$
DELIMITER ;
DROP TRIGGER IF EXISTS cpone.trg_mgm_mcu_au_sync_mcu_project;
DELIMITER $$
CREATE TRIGGER cpone.trg_mgm_mcu_au_sync_mcu_project
AFTER UPDATE ON cpone.mgm_mcu
FOR EACH ROW
BEGIN
CALL cpone.sp_upsert_mcu_project_by_mgm_mcuid(NEW.Mgm_McuID);
END$$
DELIMITER ;