You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
352 lines
15 KiB
352 lines
15 KiB
<?php |
|
namespace App\Controllers\Kewilayahan; |
|
|
|
use App\Libraries\AldLibrary; |
|
use CodeIgniter\API\ResponseTrait; |
|
use CodeIgniter\Controller; |
|
use DateTime; |
|
use DateTimeZone; |
|
|
|
class Monitoring extends Controller |
|
{ |
|
|
|
use ResponseTrait; |
|
public function index() |
|
{ |
|
if (session('isLogin')) { |
|
echo view('inc/head'); |
|
echo view('inc/navbar'); |
|
echo view('inc/sidebar'); |
|
echo view('kewilayahan/monitoring/monitoring'); |
|
echo view('inc/footer'); |
|
} else { |
|
return redirect()->to('auth'); |
|
} |
|
} |
|
|
|
public function data() |
|
{ |
|
|
|
$config = config(\Config\App::class, false); |
|
|
|
$Ald = new AldLibrary; |
|
$username = session('nip'); |
|
$kanwil = []; |
|
foreach ($this->request->getPost('kanwil') ?? [] as $key => $value) { |
|
$kanwil[] = $Ald->decryptMe($value, $username); |
|
} |
|
$kpp = []; |
|
foreach ($this->request->getPost('kpp') ?? [] as $key => $value) { |
|
$kpp[] = $Ald->decryptMe($value, $username); |
|
} |
|
|
|
$tanggalAwal = $this->request->getPost('tanggalAwal'); |
|
$tanggalAkhir = $this->request->getPost('tanggalAkhir'); |
|
$tgl_awal = new DateTime($tanggalAwal); |
|
$tgl_awal->setTimezone(new DateTimeZone($config->appTimezone)); |
|
|
|
$tgl_akhir = new DateTime($tanggalAkhir); |
|
$tgl_akhir->setTimezone(new DateTimeZone($config->appTimezone)); |
|
|
|
$db = \Config\Database::connect(); |
|
$sql = "SELECT |
|
A.KD_KANWIL, |
|
A.NAMA_KANWIL , |
|
A.KPPADM, |
|
A.KODE_SEKSI, |
|
A.KODE_PEG, |
|
A.NAMA_KANTOR, |
|
A.NAMA_UNIT_ES4, |
|
A.NAMA_JABATAN, |
|
A.NAMA, |
|
COALESCE (B.JML, |
|
0) JML, |
|
'TRUE' AS ISEXIST_INWAS |
|
FROM |
|
--KASI DAN AR WAS |
|
( |
|
SELECT |
|
KPPADM, |
|
KPPADM || '-' || KD_UNIT_ORGANISASI AS KODE_SEKSI, |
|
KPPADM || '-' || KD_UNIT_ORGANISASI || '-' || NIP9 AS KODE_PEG, |
|
P.NIP9, |
|
P.NAMA, |
|
NAMA_KANTOR, |
|
KD_UNIT_ORGANISASI, |
|
P.NAMA_UNIT_ES4, |
|
KD_JAB_STRUKTURAL, |
|
NAMA_JABATAN, |
|
B.KD_KANWIL, |
|
C.NAMA AS NAMA_KANWIL |
|
FROM |
|
PEGAWAI P |
|
LEFT JOIN REF_KPP B ON |
|
(P.KPPADM = B.KD_KPP) |
|
LEFT JOIN REF_KANWIL C ON |
|
(B.KD_KANWIL = C.KODE) |
|
WHERE |
|
P.KD_JAB_STRUKTURAL IN ('602', '401') |
|
AND (KD_UNIT_ORGANISASI BETWEEN '0421071700' AND '0421072200' |
|
OR KD_UNIT_ORGANISASI BETWEEN '0424071800' AND '0424072300') AND kppadm in :kpp: ) A |
|
LEFT JOIN -- KPDL_PETUGAS_PEREKAM_AGG |
|
( SELECT KODE_SEKSI_PEREKAM, KODE_PEG_PEREKAM, NIP_PEREKAM , count(1) jml |
|
FROM --KPDL_PETUGAS_REKAM |
|
( SELECT |
|
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI,'') KODE_SEKSI_PEREKAM, |
|
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI, |
|
'') || '-' || COALESCE (a.CREATED_BY, |
|
'') KODE_PEG_PEREKAM, |
|
a.ID_KPDL_SUBJEK, |
|
a.KPP_ADM_PEREKAM KPPADM_PEREKAM, |
|
a.CREATED_BY NIP_PEREKAM, |
|
a.CREATION_DATE, |
|
b.ORG_APPROVAL_KASI, |
|
b.NIP_APPROVAL_KASI |
|
FROM |
|
KPDL_SUBJEK a |
|
LEFT JOIN KPDL_TRX b ON |
|
(a.ID_KPDL_SUBJEK = b.ID_KPDL_SUBJEK) |
|
WHERE |
|
a.FG_SUMBER = 'MATOA' AND trunc(a.CREATION_DATE) BETWEEN DATE :tanggalawal: AND DATE :tanggalakhir:) a |
|
GROUP BY KODE_SEKSI_PEREKAM, KODE_PEG_PEREKAM, NIP_PEREKAM) B ON |
|
(A.KODE_PEG = B.KODE_PEG_PEREKAM) |
|
UNION ALL |
|
-- EX ANGGOTA WAS |
|
SELECT |
|
A.KD_KANWIL, |
|
A.NAMA_KANWIL, |
|
A.KPPADM, |
|
A.KODE_SEKSI, |
|
B.KODE_PEG_PEREKAM, |
|
A.NAMA_KANTOR, |
|
A.NAMA_UNIT_ES4, |
|
' EX ANGGOTA' AS NAMA_JABATAN, |
|
C.NAMA, |
|
COALESCE (B.JML, |
|
0) JML, |
|
'FALSE' AS ISEXIST_INWAS |
|
FROM |
|
-- KPDL_SEKSIWAS_SEINDONESIA |
|
( SELECT |
|
KPPADM, |
|
KPPADM||'-'||KD_UNIT_ORGANISASI AS kode_seksi, KPPADM||'-'||KD_UNIT_ORGANISASI ||'-'||nip9 AS kode_peg, p.NIP9, p.nama, |
|
NAMA_KANTOR, KD_UNIT_ORGANISASI, p.NAMA_UNIT_ES4, KD_JAB_STRUKTURAL, NAMA_JABATAN, b.kd_kanwil, c.nama AS nama_kanwil FROM PEGAWAI p |
|
LEFT JOIN ref_kpp b ON (p.kppadm = b.kd_kpp) |
|
LEFT JOIN ref_kanwil c ON (b.kd_kanwil= c.kode) |
|
WHERE p.KD_JAB_STRUKTURAL ='401' |
|
AND (KD_UNIT_ORGANISASI BETWEEN '0421071700' AND '0421072200' OR KD_UNIT_ORGANISASI BETWEEN '0424071800' AND '0424072300' ) |
|
AND kppadm in :kpp:) A |
|
JOIN |
|
--KASI DAN AR WAS |
|
( |
|
SELECT |
|
B.KODE_SEKSI_PEREKAM , |
|
KODE_PEG_PEREKAM , |
|
NIP_PEREKAM, |
|
JML |
|
FROM |
|
-- KPDL_PETUGAS_PEREKAM_AGG |
|
( SELECT KODE_SEKSI_PEREKAM, KODE_PEG_PEREKAM, NIP_PEREKAM , count(1) jml |
|
FROM --KPDL_PETUGAS_REKAM |
|
( SELECT |
|
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI,'') KODE_SEKSI_PEREKAM, |
|
COALESCE(a.KPP_ADM_PEREKAM, '') || '-' || COALESCE (ORG_APPROVAL_KASI, |
|
'') || '-' || COALESCE (a.CREATED_BY, |
|
'') KODE_PEG_PEREKAM, |
|
a.ID_KPDL_SUBJEK, |
|
a.KPP_ADM_PEREKAM KPPADM_PEREKAM, |
|
a.CREATED_BY NIP_PEREKAM, |
|
a.CREATION_DATE, |
|
b.ORG_APPROVAL_KASI, |
|
b.NIP_APPROVAL_KASI |
|
FROM |
|
KPDL_SUBJEK a |
|
LEFT JOIN KPDL_TRX b ON |
|
(a.ID_KPDL_SUBJEK = b.ID_KPDL_SUBJEK) |
|
WHERE |
|
a.FG_SUMBER = 'MATOA' AND trunc(a.CREATION_DATE) BETWEEN DATE :tanggalawal: AND DATE :tanggalakhir:) a |
|
GROUP BY KODE_SEKSI_PEREKAM, KODE_PEG_PEREKAM, NIP_PEREKAM) B |
|
WHERE |
|
B.KODE_PEG_PEREKAM NOT IN ( |
|
SELECT |
|
KPPADM || '-' || KD_UNIT_ORGANISASI || '-' || NIP9 |
|
FROM |
|
PEGAWAI P |
|
WHERE |
|
P.KD_JAB_STRUKTURAL IN ('602', '401') |
|
AND (KD_UNIT_ORGANISASI BETWEEN '0421071700' AND '0421072200' |
|
OR KD_UNIT_ORGANISASI BETWEEN '0424071800' AND '0424072300'))) B |
|
ON |
|
(A.KODE_SEKSI = B.KODE_SEKSI_PEREKAM) |
|
LEFT JOIN PEGAWAI C ON |
|
(B.NIP_PEREKAM = C.NIP9) ORDER BY KD_KANWIL ASC, NAMA_KANTOR DESC, NAMA_UNIT_ES4 ASC, NAMA_JABATAN DESC"; |
|
$data = $db->query($sql, [ |
|
'tanggalawal' => $tgl_awal->format('Y-m-d'), |
|
'tanggalakhir' => $tgl_akhir->format('Y-m-d'), |
|
'kpp' => $kpp, |
|
])->getResultArray(); |
|
helper('array'); |
|
$groupingData = array_group_by($data, ['KD_KANWIL', 'KPPADM', 'KODE_SEKSI']); |
|
|
|
$bentukanArray = []; |
|
$data1 = []; |
|
foreach ($groupingData as $key1 => $value1) { //kanwil |
|
$data1['KEY_LABEL'] = $key1; |
|
$data1['LABEL'] = ''; |
|
$data1['JUMLAH'] = 0; |
|
$data1['JUMLAH_AR'] = 0; |
|
$data1['RATA_RATA'] = 0; |
|
$data1['subRows'] = []; |
|
|
|
$data2 = []; |
|
foreach ($value1 as $key2 => $value2) { //kpp |
|
$data2['KEY_LABEL'] = $key1 . '-' . $key2; |
|
$data2['LABEL'] = ''; |
|
$data2['JUMLAH'] = 0; |
|
$data2['JUMLAH_AR'] = 0; |
|
$data2['RATA_RATA'] = 0; |
|
$data2['subRows'] = []; |
|
|
|
$data3 = []; |
|
foreach ($value2 as $key3 => $value3) { //seksi |
|
$data3['KEY_LABEL'] = $key1 . '-' . $key3; |
|
$data3['LABEL'] = ''; |
|
$data3['NAMA_KANTOR'] = ''; |
|
$data3['JUMLAH'] = 0; |
|
$data3['JUMLAH_AR'] = 0; |
|
$data3['RATA_RATA'] = 0; |
|
$data3['subRows'] = []; |
|
|
|
$data4 = []; |
|
foreach ($value3 as $key4 => $value4) { //AR |
|
$data4['KEY_LABEL'] = $key1 . '-' . $value4['KODE_PEG']; |
|
$data4['LABEL'] = $value4['NAMA']; |
|
$data4['JUMLAH'] = (float) $value4['JML']; |
|
|
|
foreach ($value4 as $key5 => $value5) { |
|
$data4[$key5] = $value5; |
|
} |
|
|
|
$data3['LABEL'] = $value4['NAMA_UNIT_ES4']; |
|
$data3['NAMA_KANTOR'] = $value4['NAMA_KANTOR']; |
|
$data2['LABEL'] = $value4['NAMA_KANTOR']; |
|
$data1['LABEL'] = $value4['NAMA_KANWIL']; |
|
|
|
$data3['JUMLAH'] += $data4['JUMLAH']; |
|
$data3['JUMLAH_AR'] += ($value4['ISEXIST_INWAS'] == 'TRUE' && $value4['NAMA_JABATAN'] == 'Account Representative' ? 1 : 0); |
|
array_push($data3['subRows'], $data4); |
|
} |
|
$data3['RATA_RATA'] = $data3['JUMLAH_AR'] == 0 ? 0 : $data3['JUMLAH'] / $data3['JUMLAH_AR']; |
|
$data2['JUMLAH'] += $data3['JUMLAH']; |
|
$data2['JUMLAH_AR'] += $data3['JUMLAH_AR']; |
|
array_push($data2['subRows'], $data3); |
|
} |
|
$data2['RATA_RATA'] = $data2['JUMLAH_AR'] == 0 ? 0 : $data2['JUMLAH'] / $data2['JUMLAH_AR']; |
|
$data1['JUMLAH'] += $data2['JUMLAH']; |
|
$data1['JUMLAH_AR'] += $data2['JUMLAH_AR']; |
|
array_push($data1['subRows'], $data2); |
|
} |
|
$data1['RATA_RATA'] = $data1['JUMLAH_AR'] == 0 ? 0 : $data1['JUMLAH'] / $data1['JUMLAH_AR']; |
|
array_push($bentukanArray, $data1); |
|
} |
|
$dataReturn['data'] = $bentukanArray; |
|
|
|
$tempData = $bentukanArray; |
|
$dataChart = $this->urutKanwil($bentukanArray); |
|
$dataReturn['urutKanwil'] = $dataChart['urutKanwil']; |
|
$dataReturn['urutKpp'] = $dataChart['urutKpp']; |
|
$dataReturn['urutSeksi'] = $dataChart['urutSeksi']; |
|
$dataReturn['urutPegawai'] = $dataChart['urutPegawai']; |
|
|
|
return $this->respond($dataReturn, 200); |
|
} |
|
|
|
protected function urutKanwil($tempData) |
|
{ |
|
array_sort_by_multiple_keys($tempData, ['RATA_RATA' => SORT_DESC, 'KEY_LABEL' => SORT_ASC]); |
|
//kanwil |
|
$kanwil = array_slice($tempData, 0, 5); |
|
|
|
//kpp |
|
$kppInKanwil = []; |
|
foreach ($tempData as $key => $value) { |
|
foreach ($value['subRows'] as $key2 => $value2) { |
|
array_push($kppInKanwil, $value2); |
|
} |
|
} |
|
array_sort_by_multiple_keys($kppInKanwil, ['RATA_RATA' => SORT_DESC, 'KEY_LABEL' => SORT_ASC]); |
|
$kpp = array_slice($kppInKanwil, 0, 5); |
|
|
|
//seksi |
|
$seksiInKpp = []; |
|
foreach ($kppInKanwil as $key => $value) { |
|
foreach ($value['subRows'] as $key2 => $value2) { |
|
array_push($seksiInKpp, $value2); |
|
} |
|
} |
|
array_sort_by_multiple_keys($seksiInKpp, ['RATA_RATA' => SORT_DESC, 'KEY_LABEL' => SORT_ASC]); |
|
$seksi = array_slice($seksiInKpp, 0, 5); |
|
|
|
//ar Aktif |
|
$arInSeksi = []; |
|
foreach ($seksiInKpp as $key => $value) { |
|
foreach ($value['subRows'] as $key2 => $value2) { |
|
if ($value2['NAMA_JABATAN'] == 'Account Representative' && $value2['ISEXIST_INWAS'] == 'TRUE') { |
|
array_push($arInSeksi, $value2); |
|
} |
|
} |
|
} |
|
array_sort_by_multiple_keys($arInSeksi, ['JUMLAH' => SORT_DESC]); |
|
$ar = array_slice($arInSeksi, 0, 5); |
|
|
|
foreach ($kanwil as $key => $value) { |
|
unset($kanwil[$key]['subRows']); |
|
} |
|
|
|
foreach ($kpp as $key => $value) { |
|
unset($kpp[$key]['subRows']); |
|
} |
|
foreach ($seksi as $key => $value) { |
|
unset($seksi[$key]['subRows']); |
|
} |
|
|
|
$data['urutKanwil'] = $kanwil; |
|
$data['urutKpp'] = $kpp; |
|
$data['urutSeksi'] = $seksi; |
|
$data['urutPegawai'] = $ar; |
|
return $data; |
|
} |
|
|
|
protected function urutKpp($tempData) |
|
{ |
|
|
|
$kppInKanwil = []; |
|
foreach ($tempData as $key => $value) { |
|
foreach ($value['subRows'] as $key2 => $value2) { |
|
array_push($kppInKanwil, $value2); |
|
// # code... |
|
} |
|
} |
|
array_sort_by_multiple_keys($kppInKanwil, ['RATA_RATA' => SORT_DESC, 'KEY_LABEL' => SORT_ASC]); |
|
//hilangkan child subRows |
|
$dataRet = array_slice($kppInKanwil, 0, 5); |
|
return $dataRet; |
|
} |
|
|
|
protected function urutSeksi($tempData) |
|
{ |
|
|
|
$kppInKanwil = []; |
|
foreach ($tempData as $key => $value) { |
|
foreach ($value['subRows'] as $key2 => $value2) { |
|
array_push($kppInKanwil, $value2); |
|
} |
|
} |
|
array_sort_by_multiple_keys($kppInKanwil, ['RATA_RATA' => SORT_DESC, 'KEY_LABEL' => SORT_ASC]); |
|
|
|
//hilangkan child subRows |
|
$dataRet = array_slice($kppInKanwil, 0, 5); |
|
return $dataRet; |
|
} |
|
|
|
}
|
|
|