Files
2026-05-22 08:49:20 +07:00

247 lines
12 KiB
PHP

<?php
/*******************************************************************
Module : /apps/php/index.php
Desc. : PHP - Halaman Utama Desktop
Created By : Siau Pheng ([email protected]).
Created Date : May 24th, 2010.
Last Modified : May 15th, 2024.
(c) 2010 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../vendor/autoload.php");
require_once(__DIR__."/func.emonev.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\Web\Param;
use siaupheng\fonia3\Web\Form;
use siaupheng\fonia3\Web\Register;
function random_color($trans = "0.6") {
$col_r = mt_rand( 0, 255 );
$col_g = mt_rand( 0, 255 );
$col_b = mt_rand( 0, 255 );
return "rgba(".$col_r.",".$col_g.",".$col_b.",".$trans.")";
}
$db = $db ?? new MySQL();
$ajson = [];
$data = Param::Get("data");
$tahun = $_SESSION['__WEB_APP']['REAL_THN'] ?? 0;
$bulan = $_SESSION['__WEB_APP']['REAL_BLN'];
$aapp = $_SESSION['__WEB_APP'];
if ( $data == "chart1" || $data == "chart2" ) {
$bulan = $_SESSION['__WEB_APP']['REAL_BLN'];
if ($bulan == 1) {
$qK = "(RealK_B1)";
$qF = "(RealF_B1,0)";
}
if ($bulan == 2) {
$qK = "(RealK_B1+RealK_B2)";
$qF = "(RealF_B1,RealF_B2)";
}
if ($bulan == 3) {
$qK = "(RealK_B1+RealK_B2+RealK_B3)";
$qF = "(RealF_B1,RealF_B2,RealF_B3)";
}
if ($bulan == 4) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4)";
}
if ($bulan == 5) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5)";
}
if ($bulan == 6) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6)";
}
if ($bulan == 7) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7)";
}
if ($bulan == 8) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8)";
}
if ($bulan == 9) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9)";
}
if ($bulan == 10) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10)";
}
if ($bulan == 11) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10+RealK_B11)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10,RealF_B11)";
}
if ($bulan == 12) {
$qK = "(RealK_B1+RealK_B2+RealK_B3+RealK_B4+RealK_B5+RealK_B6+RealK_B7+RealK_B8+RealK_B9+RealK_B10+RealK_B11+RealK_B12)";
$qF = "(RealF_B1,RealF_B2,RealF_B3,RealF_B4,RealF_B5,RealF_B6,RealF_B7,RealF_B8,RealF_B9,RealF_B10,RealF_B11,RealF_B12)";
}
}
if ( $data == "periode-show" ) {
$ajson = ['aktif'=>1, 'html'=>""];
if ($tahun == 0 || Param::Get("reset", 0) == 1) {
$form = new Form($db);
$lthn = $form->option("_", "OPTION_THN", $tahun, true, false, tahun_ang("Tahun "));
$lbln = $form->option("_", "OPTION_BLN", $bulan, true, false, bulan_array());
$ajson['aktif'] = 0;
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="OPTION_BLN">Bulan Data</label>
<div class="col">'.$lbln.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="OPTION_THN">Tahun Data</label>
<div class="col">'.$lthn.'</div>
</div>';
}
} else if ( $data == "periode-simpan" ) {
// penyimpanan periode tahun dan bulan login !
$alogin = $_SESSION['__WEB_APP'];
$alogin['REAL_THN'] = Param::Get("OPTION_THN", $alogin['REAL_THN']);
$alogin['REAL_BLN'] = Param::Get("OPTION_BLN", $alogin['REAL_BLN']);
$db->Query("SELECT * FROM vi_para_rpjmd WHERE '".$alogin['REAL_THN']."' BETWEEN Tahun_Min AND Tahun_Max ORDER BY RPJMDID DESC LIMIT 1");
if ($db->Next()) $alogin['REAL_RPJMDID'] = $db->Row("RPJMDID", 0);
$log_tw = 0;
if ($alogin['REAL_BLN'] <= 3) { $log_tw = 1; }
else if ($alogin['REAL_BLN'] <= 6) { $log_tw = 2; }
else if ($alogin['REAL_BLN'] <= 9) { $log_tw = 3; }
else if ($alogin['REAL_BLN'] <= 12) { $log_tw = 4; }
$alogin['REAL_TW'] = $log_tw;
// mapping tahun nomenklatur submap
$alogin['SUBMAP_TAHUN'] = map_tahun_submap($alogin['REAL_THN']);
$alogin['AKUN_TAHUN'] = map_tahun_akun($alogin['REAL_THN']);
// penyesuaian kembali konfigurasi periode --> REAL_RPJMDID
$db->Query("SELECT Tahun1,Tahun2,Tahun3,Tahun4,Tahun5,Tahun_Min,Tahun_Max,Ket Real_Periode FROM vi_para_rpjmd WHERE RPJMDID='".$alogin['REAL_RPJMDID']."' LIMIT 1");
if ($db->Next()) $alogin = array_merge($alogin, $db->AllRow());
if ($alogin['Tahun1']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T1_";
if ($alogin['Tahun2']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T2_";
if ($alogin['Tahun3']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T3_";
if ($alogin['Tahun4']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T4_";
if ($alogin['Tahun5']==$alogin['REAL_THN']) $alogin['REAL_FIELD'] = "T5_";
$_SESSION['__WEB_APP'] = $alogin;
$ajson['sukses'] = 1;
} else if ( $data == "periode-info") {
$ajson = ['html'=>'<a class="nav-link" onclick="IndexJS.periode_show(1);"><i class="bi-calendar"></i></a>'];
if ($tahun > 0) {
$txtinfo = bulan_array()[$bulan] .' '.$tahun;
$ajson['html'] = '<a class="nav-link text-info fw-bolder" title="'.$txtinfo.'" onclick="IndexJS.periode_show(1);"><i class="me-2 bi-calendar-check"></i>'.$txtinfo.'</a>';
}
} else if ( $data == "chart1" ) {
$ajson['tipe'] = "chart";
$db->Query("SELECT * FROM (SELECT M.S_OPD,(SUM(K.R_Keu)/SUM(K.Renc_Keu))*100 REAL_KEU,SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU) REAL_FISIK,(((SUM(K.R_Keu)/SUM(K.Renc_Keu))*100)+SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU))/2 REAL_KINERJA FROM (SELECT *,".$qK." R_Keu,GREATEST".$qF." R_Fisik FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."') K LEFT JOIN (SELECT OPDID,SUM(Renc_Keu) OPD_PAGU FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."' GROUP BY OPDID) TT ON (TT.OPDID=K.OPDID) LEFT JOIN para90_opd M ON (M.OPDID=K.OPDID) WHERE M.Aktif=1 GROUP BY K.OPDID) A ORDER BY A.REAL_KINERJA DESC LIMIT 10");
$adata['datasets'] = array();
$adata['labels'] = array();
$atmp1 = array(0); $atmp2 = array(0); $atmp3 = array(0);
$adata['labels'][] = "Belum Ada Realisasi";
if ($db->RecordCount()>0) {
$atmp1 = array(); $atmp2 = array(); $atmp3 = array();
$adata['labels'] = array();
}
while ($db->Next()){
$atmp1[] = round($db->Row("REAL_KEU"), 2);
$atmp2[] = round($db->Row("REAL_FISIK"), 2);
$atmp3[] = round($db->Row("REAL_KINERJA"), 2);
$adata['labels'][] = $db->Row("S_OPD");
}
$adata['datasets'][] = array('data'=>$atmp1, 'label'=>"Keuangan", 'backgroundColor'=>random_color(), 'order'=>1, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
$adata['datasets'][] = array('data'=>$atmp2, 'label'=>"Fisik", 'backgroundColor'=>random_color(), 'order'=>2, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
$adata['datasets'][] = array('data'=>$atmp3, 'label'=>"Kinerja", 'borderColor'=>random_color(), 'order'=>3, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#313131"), 'type'=>"line", 'fill'=>false);
$ajson['chart'] = array('type' => "bar",
'data' => $adata,
'options' => array(
'plugins' => [
'title' => ['display' => true, 'text' => '10 Perangkat Daerah dengan Kinerja Tertinggi'],
'legend' => ['position' => "bottom"],
],
'responsive' => true,
'aspectRatio' => 1.5,
//'scales' => ['yAxes' => ['display' => true, 'beginAtZero' => true, 'title'=> "Realisasi (%)"]],
'layout' => array('padding' => array('top' => 10))
)
);
} else if ( $data == "chart2" ) {
$ajson['tipe'] = "chart";
$db->Query("SELECT * FROM (SELECT M.S_OPD,(SUM(K.R_Keu)/SUM(K.Renc_Keu))*100 REAL_KEU,SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU) REAL_FISIK,(((SUM(K.R_Keu)/SUM(K.Renc_Keu))*100)+SUM(K.R_Fisik*K.Renc_Keu/TT.OPD_PAGU))/2 REAL_KINERJA FROM (SELECT *,".$qK." R_Keu,GREATEST".$qF." R_Fisik FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."') K LEFT JOIN (SELECT OPDID,SUM(Renc_Keu) OPD_PAGU FROM dpa90_akun WHERE Tahun='".$_SESSION['__WEB_APP']['REAL_THN']."' GROUP BY OPDID) TT ON (TT.OPDID=K.OPDID) LEFT JOIN para90_opd M ON (M.OPDID=K.OPDID) WHERE M.Aktif=1 GROUP BY K.OPDID) A ORDER BY A.REAL_KINERJA ASC LIMIT 10");
$adata['datasets'] = array();
$adata['labels'] = array();
$atmp1 = array(0); $atmp2 = array(0); $atmp3 = array(0);
$adata['labels'][] = "Belum Ada Realisasi";
if ($db->RecordCount()>0) {
$atmp1 = array(); $atmp2 = array(); $atmp3 = array();
$adata['labels'] = array();
}
while ($db->Next()){
$atmp1[] = round($db->Row("REAL_KEU"), 2);
$atmp2[] = round($db->Row("REAL_FISIK"), 2);
$atmp3[] = round($db->Row("REAL_KINERJA"), 2);
$adata['labels'][] = $db->Row("S_OPD");
}
$adata['datasets'][] = array('data'=>$atmp1, 'label'=>"Keuangan", 'backgroundColor'=>random_color(), 'order'=>1, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
$adata['datasets'][] = array('data'=>$atmp2, 'label'=>"Fisik", 'backgroundColor'=>random_color(), 'order'=>2, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"));
$adata['datasets'][] = array('data'=>$atmp3, 'label'=>"Kinerja", 'borderColor'=>random_color(), 'order'=>3, 'datalabels'=>array('align'=>"end", 'anchor'=>"end", 'color'=>"#313131"), 'type'=>"line", 'fill'=>false);
$ajson['chart'] = array('type' => "bar",
'data' => $adata,
'options' => array(
'plugins' => [
'title' => ['display' => true, 'text' => '10 Perangkat Daerah dengan Kinerja Terendah'],
'legend' => ['position' => "bottom"],
],
'responsive' => true,
'aspectRatio' => 1.5,
//'scales' => ['yAxes' => ['display' => true, 'beginAtZero' => true, 'title'=>['text' => "Realisasi (%)"]]],
'layout' => array('padding' => array('top' => 10))
)
);
} else if ( $data == "default" ) {
$aapp = $_SESSION['__WEB_APP'];
$ajson['content'] = '
<div class="fade-in">
<div class="row">
<div class="col-sm-12 col-md-6">
<div class="card">
<div class="card-body pb-0 text-center" id="divHome1">
<img src="'.$aapp['WEB_PATH'].'assets/images/logo150.png" title="'.$aapp['REG_NAME'].'">
<p class="mt-2">'.$aapp['REG_ADDRESS'].'<br>
'.$aapp['REG_CITY'].' '.$aapp['REG_POSTCODE'].'</p>
<p class="mt-3 mb-3"><i>Register ID : '.Register::reg_id().'</i></p>
<p>'.$aapp['APP_NAMES'].'<br>'.$aapp['APP_NAME'].' Ver. '.$aapp['APP_VER'].'<br>
Updated : '.$aapp['APP_UPDATED'].'</p>
</div>
</div>
</div>
<div class="col-sm-12 col-md-6">
<div class="card">
<div class="card-body pb-0" id="divHome2">
<div class="c-chart-wrapper pb-2">
<canvas id="canvasChart2"></canvas>
</div>
</div>
</div>
</div>
</div>
</div>
';
}
send_json($ajson);
?>