Files
edata/apps/php/api/renstra.php
T
2026-06-07 14:39:54 +07:00

284 lines
14 KiB
PHP

<?php
/*******************************************************************
Module : /apps/php/api/rpjmd.php
Desc. : PHP - Fungsi RPJMD
Created By : Siau Pheng ([email protected]).
Created Date : December 18th, 2025.
(c) 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.sippd.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
use siaupheng\fonia3\Web\Param;
$id_rpjmd = $_SESSION['__WEB_APP']['RENC_RPJMDID'];
$thn_submap = map_tahun_submap($id_rpjmd);
function simpan_renstra_tujuan($db = null, $adata = []) {//oke
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Tujuan RENSTRA !'];
foreach ($adata as $_key1 => $atujuan) {
$apull = [ 'RPJMDID' => $id_rpjmd,
'OPDID' => 0,
'A_RDSASAR' => "0",
'A_BU' => "'X.XX'",
'No_Tujuan' => $atujuan['No_Tujuan'],
'Txt_Tujuan' => $atujuan['Txt_Tujuan'],
'SIPD_UNIK' => $atujuan['SIPD_UNIK']
];
// bidang urusan
$_tbu = [];
foreach ($atujuan['A_BU'] as $_key_bu => $arec_bu) {
$_tbu[] = $arec_bu;
}
$apull['A_BU'] = "'". implode("','", $_tbu) ."'";
// sasaran rpjmd
if (count($atujuan['A_RDSASAR']) > 0) {
$_tsa = [];
foreach ($atujuan['A_RDSASAR'] as $_key_sa => $arec_sa) {
$db->Query("SELECT RD_SASARID FROM rpjmd_sasaran WHERE SIPD_SASAR='".$arec_sa."' LIMIT 1");
if ($db->Next()) $_tsa[] = $db->Row("RD_SASARID", 0);
}
$apull['A_RDSASAR'] = implode(",", $_tsa);
}
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$atujuan['K_OPD']."' LIMIT 1");
if ($db->Next()) $apull['OPDID'] = $db->Row("OPDID", 0);
$id_opd = $apull['OPDID'];
$ra_tujid = fastInsert("renstra_tujuan", $apull);
// indikator
foreach ($atujuan['indikator'] as $_key2 => $arec) {
$apull = [ 'OPDID' => $id_opd,
'RA_TUJID' => $ra_tujid,
'RPJMDID' => $id_rpjmd,
'No_Indi' => $arec['No_Indi'],
'Txt_Indi' => $arec['Txt_Indi'],
'Indi_Satuan' => $arec['Indi_Satuan'],
'Indi_Status' => $arec['Indi_Status'],
'Indi_Awal' => $arec['Indi_Awal'],
'Indi_T1' => $arec['Indi_T1'],
'Indi_T2' => $arec['Indi_T2'],
'Indi_T3' => $arec['Indi_T3'],
'Indi_T4' => $arec['Indi_T4'],
'Indi_T5' => $arec['Indi_T5'],
'Indi_Akhir' => $arec['Indi_Akhir'],
'Tipe_Data' => $arec['Tipe_Data'],
'SIPD_UNIK' => $arec['SIPD_UNIK']
];
fastInsert("renstra_tujuan_indi", $apull);
}
}
return $aret;
}
function simpan_renstra_sasaran($db = null, $adata = []) {//oke
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Sasaran RENSTRA !'];
foreach ($adata as $_key1 => $asasar) {
$apull = [ 'RPJMDID' => $id_rpjmd,
'RA_TUJID' => 0,
'OPDID' => 0,
'No_Sasaran' => $asasar['No_Sasaran'],
'Txt_Sasaran' => $asasar['Txt_Sasaran'],
'SIPD_UNIK' => $asasar['SIPD_UNIK']
];
// tujuan renstra
$db->Query("SELECT RA_TUJID FROM renstra_tujuan WHERE SIPD_UNIK='".$asasar['SIPD_TUJ']."' LIMIT 1");
if ($db->Next()) $apull['RA_TUJID'] = $db->Row("RA_TUJID", 0);
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$asasar['K_OPD']."' LIMIT 1");
if ($db->Next()) $apull['OPDID'] = $db->Row("OPDID", 0);
$id_opd = $apull['OPDID'];
$ra_sasarid = fastInsert("renstra_sasaran", $apull);
// indikator
foreach ($asasar['indikator'] as $_key2 => $arec) {
$apull = [ 'OPDID' => $id_opd,
'RA_SASARID' => $ra_sasarid,
'RPJMDID' => $id_rpjmd,
'No_Indi' => $arec['No_Indi'],
'Txt_Indi' => $arec['Txt_Indi'],
'Indi_Satuan' => $arec['Indi_Satuan'],
'Indi_Status' => $arec['Indi_Status'],
'Indi_Awal' => $arec['Indi_Awal'],
'Indi_T1' => $arec['Indi_T1'],
'Indi_T2' => $arec['Indi_T2'],
'Indi_T3' => $arec['Indi_T3'],
'Indi_T4' => $arec['Indi_T4'],
'Indi_T5' => $arec['Indi_T5'],
'Indi_Akhir' => $arec['Indi_Akhir'],
'Tipe_Data' => $arec['Tipe_Data'],
'SIPD_UNIK' => $arec['SIPD_UNIK']
];
fastInsert("renstra_sasaran_indi", $apull);
}
}
return $aret;
}
function simpan_renstra_program($db = null, $adata = []) {
global $id_rpjmd, $thn_submap;
$aret = ['status' => "success", 'message' => 'Berhasil simpan data Program / Kegiatan / Sub Kegiatan RENSTRA !'];
foreach ($adata as $_key1 => $aoutcome) {
$acome = [ 'RD_OUTCOMEID' => 0,
'RD_PROGID' => 0,
'OPDID' => 0,
'ProgID' => 0,
'A_RASASAR' => 0
];
// outcome rpjmd
$db->Query("SELECT RD_OUTCOMEID,RD_PROGID,A_RASASAR FROM rpjmd_outcome WHERE RPJMDID='".$id_rpjmd."' AND SIPD_UNIK='".$aoutcome['SIPD_UNIK']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// program rpjmd
$db->Query("SELECT BUID,ProgID,K_Bidu,K_Prog FROM rpjmd_prog WHERE RPJMDID='".$id_rpjmd."' AND RD_PROGID='".$acome['RD_PROGID']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// opd
$db->Query("SELECT OPDID FROM para90_opd WHERE K_OPD='".$aoutcome['K_OPD']."' LIMIT 1");
if ($db->Next()) $acome = array_merge($acome, $db->AllRow());
// sasaran renstra
if (count($aoutcome['A_RASASAR']) > 0) {
$_tsa = explode(",", $acome['A_RASASAR']);
foreach ($aoutcome['A_RASASAR'] as $_key_sa => $arec_sa) {
$db->Query("SELECT RA_SASARID FROM renstra_sasaran WHERE SIPD_UNIK='".$arec_sa."' LIMIT 1");
if ($db->Next()) {
if (!in_array($db->Row("RA_SASARID", 0), $_tsa)) $_tsa[] = $db->Row("RA_SASARID", 0);
}
}
$_tsa = array_diff($_tsa, [0]);
$acome['A_RASASAR'] = (count($_tsa)==0) ? "0" : implode(",", $_tsa);
}
fastUpdate("rpjmd_outcome", ['A_RASASAR'=>$acome['A_RASASAR']], ['RD_OUTCOMEID'=>$acome['RD_OUTCOMEID']]);
$apull = [ 'RPJMDID' => $id_rpjmd,
'OPDID' => $acome['OPDID'],
'RD_PROGID' => $acome['RD_PROGID'],
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'A_RASASAR' => $acome['A_RASASAR'],
'ProgID' => $acome['ProgID'],
'K_Prog' => $acome['K_Prog']
];
$ra_progid = fastInsert("renstra_prog", $apull);
// indikator outcome (ke tabel renstra_prog_indi)
foreach ($aoutcome['indikator'] as $_key2 => $aindi) {
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_PROGID' => $ra_progid,
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'No_Indi' => $aindi['No_Indi'],
'Txt_Indi' => $aindi['Txt_Indi'],
'Indi_Satuan' => $aindi['Indi_Satuan'],
'Indi_Status' => $aindi['Indi_Status'],
'Indi_Awal' => $aindi['Indi_Awal'],
'Indi_T1' => $aindi['Indi_T1'],
'Indi_T2' => $aindi['Indi_T2'],
'Indi_T3' => $aindi['Indi_T3'],
'Indi_T4' => $aindi['Indi_T4'],
'Indi_T5' => $aindi['Indi_T5'],
'Indi_Akhir' => $aindi['Indi_Akhir'],
'Tipe_Data' => $aindi['Tipe_Data'],
'SIPD_UNIK' => $aindi['SIPD_UNIK']
];
fastInsert("renstra_prog_indi", $apull);
}
// kegiatan
foreach ($aoutcome['kegiatan'] as $_key3 => $akeg) {
// master kegiatan
$id_keg = 0;
$db->Query("SELECT KegID FROM para90_submap WHERE Tahun='".$thn_submap."' AND ProgID='".$acome['ProgID']."' AND K_Keg LIKE '%".substr($akeg['K_Keg'],4)."' GROUP BY KegID LIMIT 1");
if ($db->Next()) $id_keg = $db->Row("KegID", 0);
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_PROGID' => $ra_progid,
'RD_OUTCOMEID' => $acome['RD_OUTCOMEID'],
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'K_Keg' => $akeg['K_Keg']
];
$ra_kegid = fastInsert("renstra_keg", $apull);
// output kegiatan
foreach ($akeg['output'] as $_key4 => $aoutput) {
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_KEGID' => $ra_kegid,
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'No_Output' => $aoutput['No_Output'],
'Txt_Output' => $aoutput['Txt_Output'],
'SIPD_UNIK' => $aoutput['SIPD_UNIK']
];
$ra_outid = fastInsert("renstra_output", $apull);
if (count($aoutput['subkeg']) == 0) $aret['message'] .= $akeg['K_Keg']." - ";
// sub kegiatan
foreach ($aoutput['subkeg'] as $_key5 => $asub) {
// master sub kegiatan
$id_sub = 0;
$db->Query("SELECT SubID FROM para90_submap WHERE Tahun='".$thn_submap."' AND KegID='".$id_keg."' AND K_Sub LIKE '%".substr($asub['K_Sub'],4)."' LIMIT 1");
if ($db->Next()) $id_sub = $db->Row("SubID", 0);
$apull = [ 'OPDID' => $acome['OPDID'],
'RA_OUTPUTID' => $ra_outid,
'RA_KEGID' => $ra_kegid,
'RPJMDID' => $id_rpjmd,
'ProgID' => $acome['ProgID'],
'KegID' => $id_keg,
'SubID' => $id_sub,
'K_Sub' => $asub['K_Sub'],
'Pagu_T1' => $asub['Pagu_T1'],
'Pagu_T2' => $asub['Pagu_T2'],
'Pagu_T3' => $asub['Pagu_T3'],
'Pagu_T4' => $asub['Pagu_T4'],
'Pagu_T5' => $asub['Pagu_T5'],
'No_Indi' => $asub['No_Indi'],
'Txt_Indi' => $asub['Txt_Indi'],
'Indi_Satuan' => $asub['Indi_Satuan'],
'Indi_Status' => $asub['Indi_Status'],
'Indi_Awal' => $asub['Indi_Awal'],
'Indi_T1' => $asub['Indi_T1'],
'Indi_T2' => $asub['Indi_T2'],
'Indi_T3' => $asub['Indi_T3'],
'Indi_T4' => $asub['Indi_T4'],
'Indi_T5' => $asub['Indi_T5'],
'Indi_Akhir' => $asub['Indi_Akhir'],
'Kinerja' => $asub['Kinerja'],
'MIndiID' => $asub['ID_Indi'],
//'Tipe_Data' => $asub['Tipe_Data'],
//'SIPD_UNIK' => $asub['SIPD_UNIK']
];
fastInsert("renstra_sub", $apull);
}
}
}
}
// update sub -> output
$db->Query("UPDATE renstra_output A, (SELECT OPDID,RA_OUTPUTID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_sub WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_OUTPUTID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_OUTPUTID=B.RA_OUTPUTID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update sub -> keg
$db->Query("UPDATE renstra_keg A, (SELECT OPDID,RA_KEGID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_sub WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_KEGID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_KEGID=B.RA_KEGID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update keg -> prog
$db->Query("UPDATE renstra_prog A, (SELECT OPDID,RA_PROGID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_keg WHERE RPJMDID='".$id_rpjmd."' GROUP BY OPDID,RA_PROGID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RA_PROGID=B.RA_PROGID AND A.OPDID=B.OPDID AND A.RPJMDID='".$id_rpjmd."'");
// update prog -> outcome rpjmd
$db->Query("UPDATE rpjmd_outcome A, (SELECT RD_OUTCOMEID,SUM(Pagu_T1) T1,SUM(Pagu_T2) T2,SUM(Pagu_T3) T3,SUM(Pagu_T4) T4,SUM(Pagu_T5) T5 FROM renstra_prog WHERE RPJMDID='".$id_rpjmd."' GROUP BY RD_OUTCOMEID) B SET A.Pagu_T1=B.T1,A.Pagu_T2=B.T2,A.Pagu_T3=B.T3,A.Pagu_T4=B.T4,A.Pagu_T5=B.T5 WHERE A.RD_OUTCOMEID=B.RD_OUTCOMEID AND A.RPJMDID='".$id_rpjmd."'");
return $aret;
}
?>