src/Controller/Backend/DashboardController.php line 1560

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use App\Controller\Base\BaseController;
  4. use App\Repository\MPlantRepository;
  5. use App\Repository\TLogRepository;
  6. use App\Repository\TPostingLaporanRepository;
  7. use App\Repository\TRawDataRepository;
  8. use Doctrine\Persistence\ManagerRegistry;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. use Kematjaya\Breadcrumb\Lib\Builder as BreacrumbBuilder;
  11. use Kematjaya\Export\Manager\ManagerInterface;
  12. use Kematjaya\Export\Processor\Excel\SpreadsheetFromArrayProcessor;
  13. use Symfony\Component\HttpFoundation\JsonResponse;
  14. use Symfony\Component\HttpFoundation\Request;
  15. use Symfony\Component\Security\Core\Security;
  16. class DashboardController extends BaseController
  17. {
  18.     /**
  19.      * @Route("/dashboard",name="dashboard")
  20.      */
  21.     public function index(
  22.         Request $request,
  23.         BreacrumbBuilder $builder,
  24.         Security $security,
  25.         TLogRepository $tLogRepo,
  26.         TRawDataRepository $tRawDataRepo,
  27.         MPlantRepository $mPlantRepo
  28.     ) {
  29.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  30.         $user $security->getUser()->getRoles();
  31.         $qb $tRawDataRepo->createQueryBuilder('t');
  32.         $qb->where('t.updated_at IS NOT NULL')
  33.             ->orderBy('t.updated_at''DESC')
  34.             ->setMaxResults(1);
  35.         $latest $qb->getQuery()->getOneOrNullResult();
  36.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  37.         // dump($this->getUser()->getName());exit;
  38.         // print_r($this->getCardDashboard('tahap_pembuatan_paket',true)); exit;
  39.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  40.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  41.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  42.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  43.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  44.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  45.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  46.         // print_r($this->getGrafikReport($tahun,$bulan)); exit;
  47.         //chart realisasi
  48.         //
  49.         $table 'v_cleansing_pk_vendor';
  50.         $group 'kategori_plant';
  51.         // $periode_tanggal = $this->getDataTerbaruTerlama($table, 'tgl_verifikasi_pr', $kategori_tahap = null, $tahun, $sumber_dana);
  52.         // print_r($periode_tanggal); exit;
  53.         // $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana, null);
  54.         $data $this->getTabelLaporan($table$group'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dananull);
  55.         $ungroup $this->getLaporanUnGroup($table$tanggal_awal$tanggal_akhir$tipe_tahun$tahun);
  56.         // print_r($ungroup); exit;
  57.         // $data_tabel = $this->getTabelLaporan($table, $group, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  58.         // $data_dashboard = $this->getDashbord('tabel_40', 'regional');
  59.         // print_r($data);
  60.         // exit;
  61.         //creat_pk
  62.         // tgl_submit_pk_ke_hps, tgl_sinkron_pr_sap_ke_ips
  63.         //hps
  64.         // tgl_submit_ke_pengadaan, tgl_submit_pk_ke_hps
  65.         //pengadaan
  66.         // tgl_approval_sppbj, tgl_submit_ke_pengadaan
  67.         // $hari_kerja_create_pk = $this->getJumlahHariKerja($table, 'tgl_sinkron_pr_sap_ke_ips', 'tgl_submit_pk_ke_hps', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  68.         // $hari_kerja_hps = $this->getJumlahHariKerja($table, 'tgl_submit_pk_ke_hps', 'tgl_submit_ke_pengadaan', null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  69.         // $hari_kerja_pengadaan = $this->getJumlahHariKerja($table, 'tgl_submit_ke_pengadaan', 'tgl_approval_sppbj',  null, $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  70.         // $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja($table, 'tgl_pelaksanaan_pp', 'tgl_approval_sppbj',  'metode_pengadaan', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  71.         $jumlah_metode $this->getJumlahBerdasrkanMetode($table'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  72.         $range_nilai_pk $this->getRangeNilaiPk($table'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  73.         $m_plant $this->getKategoriPlant();
  74.         // print_r($range_nilai_pk); exit;
  75.         // $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
  76.         // $res_metode = [];
  77.         // foreach ($hari_kerja_metode_pengadaan as $key => $value) {
  78.         //     $res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
  79.         // }
  80.         $res_metode_pengadaan = [];
  81.         foreach ($jumlah_metode as $key => $value) {
  82.             $res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
  83.             $res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
  84.         }
  85.         // print_r($res_metode_pengadaan); exit;
  86.         //dashbord kotak bawah
  87.         $jumlah_pk 0;
  88.         $jumlah_pr 0;
  89.         $jumlah_pp 0;
  90.         $jumlah_pemenang 0;
  91.         $total_nilai 0;
  92.         $total_anggaran 0;
  93.         $total_hps 0;
  94.         $total_realisasi 0;
  95.         $saving_terhadap_anggaran 0;
  96.         $saving_terhadap_hps 0;
  97.         $saving_terhadap_anggaran_persen 0;
  98.         $saving_terhadap_hps_persen 0;
  99.         foreach ($data as $key => $value) {
  100.             $jumlah_pk += $value['total_pk'];
  101.             $jumlah_pr += $value['total_pr'];
  102.             $jumlah_pp += $value['total_pp'];
  103.             $jumlah_pemenang += $value['total_vendor_pemenang'];
  104.             $total_nilai += $value['total_nilai'];
  105.             $total_anggaran += $value['total_anggaran'];
  106.             $total_hps += $value['total_hps'];
  107.             $total_realisasi += $value['total_nilai_akhir'];
  108.         }
  109.         $saving_terhadap_anggaran $total_anggaran $total_realisasi;
  110.         $saving_terhadap_hps $total_hps $total_realisasi;
  111.         $saving_terhadap_anggaran_persen $total_anggaran ? ($saving_terhadap_anggaran $total_anggaran) * 100 0;
  112.         $saving_terhadap_hps_persen $total_hps ? ($saving_terhadap_hps $total_hps) * 100 0;
  113.         $res_dash = [
  114.             'jumlah_pk' => $jumlah_pk,
  115.             'jumlah_pr' => $jumlah_pr,
  116.             'jumlah_pp' => $jumlah_pp,
  117.             'jumlah_pemenang' => $jumlah_pemenang,
  118.             'total_nilai' => $total_nilai,
  119.             'total_anggaran' => $total_anggaran,
  120.             'total_hps' => $total_hps,
  121.             'total_realisasi' => $total_realisasi,
  122.             // 'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
  123.             // 'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
  124.             // 'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
  125.             // 'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
  126.             // 'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
  127.             'saving_thd_anggaran' => $saving_terhadap_anggaran,
  128.             'saving_thd_hps' => $saving_terhadap_hps,
  129.             'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen1),
  130.             'saving_thd_hps_persen' => round($saving_terhadap_hps_persen1),
  131.             'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
  132.             'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
  133.             'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
  134.             'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
  135.             'range_nilai_pk' => $range_nilai_pk,
  136.             'm_plant' => $m_plant
  137.         ];
  138.         // print_r( $this->getGrafikTotalPk('tabel_34','no_pk',$tanggal_awal,$tanggal_akhir));
  139.         // exit;
  140.         //endrealisasi
  141.         // $pengunjung = $tLogRepo->count(['reff_name' => 'homepage']);
  142.         // print_r( $this->getCardDashboard('tabel_34', 'tahap_pembuatan_paket', false)); exit;
  143.         //tampilan table
  144.         $bulan_list $this->getBulanList();
  145.         $template = ($request->get('full') == 1) ? 'dash' 'index';
  146.         return $this->render('backend/dashboard/' $template '.html.twig', [
  147.             'user' => $user,
  148.             'tipe_tahun' => $tipe_tahun,
  149.             'tahun' => $tahun,
  150.             'sumber_dana' => $sumber_dana,
  151.             'tanggal_awal' => $tanggal_awal,
  152.             'tanggal_akhir' => $tanggal_akhir,
  153.             'res_dash' => $res_dash,
  154.             'ungroup' => $ungroup,
  155.             // 'res_kotak_bawah' => $res_kotak_bawah,
  156.             // 'res_kotak_tabel' => $res_kotak_tabel,
  157.             'group' => $group,
  158.             'log' => $log,
  159.             'last_update' => $last_update,
  160.             'template' => $template,
  161.             'module' => 'dashboard',
  162.             'bulan_list' => $bulan_list
  163.         ]);
  164.     }
  165.     /**
  166.      * @Route("/dashboard/dash_progres_paket_pengadaan",name="dash_progres_paket_pengadaan")
  167.      */
  168.     public function dash_progres_paket_pengadaan(
  169.         Request $request,
  170.         BreacrumbBuilder $builder,
  171.         Security $security,
  172.         TLogRepository $tLogRepo,
  173.         TRawDataRepository $tRawDataRepo,
  174.         MPlantRepository $mPlantRepo
  175.     ) {
  176.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  177.         $builder->add('Progres Paket Pengadaan'"dash_progres_paket_pengadaan");
  178.         $user $security->getUser()->getRoles();
  179.         $qb $tRawDataRepo->createQueryBuilder('t');
  180.         $qb->where('t.updated_at IS NOT NULL')
  181.             ->orderBy('t.updated_at''DESC')
  182.             ->setMaxResults(1);
  183.         $latest $qb->getQuery()->getOneOrNullResult();
  184.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  185.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  186.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  187.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  188.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  189.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  190.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  191.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  192.         $group 'kategori_plant';
  193.         $table 'v_cleansing_pk_vendor';
  194.         // $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  195.         $data $this->getLaporanUnGroup($table$tanggal_awal$tanggal_akhir$tipe_tahun$tahun);
  196.         $jumlah_pk 0;
  197.         $jumlah_pr 0;
  198.         $jumlah_pp 0;
  199.         foreach ($data as $key => $value) {
  200.             $jumlah_pr += $value['total_pr'];
  201.             $jumlah_pk += $value['total_pk'];
  202.             $jumlah_pp += $value['total_pp'];
  203.         }
  204.         return $this->render('backend/dashboard/dash_progres_paket_pengadaan.html.twig', [
  205.             // return $this->render('backend/dashboard/dash.html.twig', [
  206.             'user' => $user,
  207.             'tipe_tahun' => $tipe_tahun,
  208.             'tahun' => $tahun,
  209.             'sumber_dana' => $sumber_dana,
  210.             'tanggal_awal' => $tanggal_awal,
  211.             'tanggal_akhir' => $tanggal_akhir,
  212.             'group' => $group,
  213.             'jumlah_pr' => $jumlah_pr,
  214.             'jumlah_pk' => $jumlah_pk,
  215.             'jumlah_pp' => $jumlah_pp,
  216.             'last_update' => $last_update,
  217.             'module' => 'dash_progres_paket_pengadaan'
  218.         ]);
  219.     }
  220.     /**
  221.      * @Route("/dashboard/dash_pengajuan_paket",name="dash_pengajuan_paket")
  222.      */
  223.     public function dash_pengajuan_paket(
  224.         Request $request,
  225.         BreacrumbBuilder $builder,
  226.         Security $security,
  227.         TLogRepository $tLogRepo,
  228.         TRawDataRepository $tRawDataRepo,
  229.         MPlantRepository $mPlantRepo
  230.     ) {
  231.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  232.         $builder->add('Pengajuan Paket'"dash_pengajuan_paket");
  233.         $user $security->getUser()->getRoles();
  234.         $qb $tRawDataRepo->createQueryBuilder('t');
  235.         $qb->where('t.updated_at IS NOT NULL')
  236.             ->orderBy('t.updated_at''DESC')
  237.             ->setMaxResults(1);
  238.         $latest $qb->getQuery()->getOneOrNullResult();
  239.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  240.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  241.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  242.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  243.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  244.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  245.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  246.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  247.         $group 'plant';
  248.         return $this->render('backend/dashboard/dash_pengajuan_paket.html.twig', [
  249.             // return $this->render('backend/dashboard/dash.html.twig', [
  250.             'user' => $user,
  251.             'tipe_tahun' => $tipe_tahun,
  252.             'tahun' => $tahun,
  253.             'sumber_dana' => $sumber_dana,
  254.             'tanggal_awal' => $tanggal_awal,
  255.             'tanggal_akhir' => $tanggal_akhir,
  256.             'group' => $group,
  257.             'last_update' => $last_update,
  258.             'module' => 'dash_pengajuan_paket'
  259.         ]);
  260.     }
  261.     /**
  262.      * @Route("/dashboard/dash_berdasarkan_metode_dan_durasi",name="dash_berdasarkan_metode_dan_durasi")
  263.      */
  264.     public function dash_berdasarkan_metode_dan_durasi(
  265.         Request $request,
  266.         BreacrumbBuilder $builder,
  267.         Security $security,
  268.         TLogRepository $tLogRepo,
  269.         TRawDataRepository $tRawDataRepo,
  270.         MPlantRepository $mPlantRepo
  271.     ) {
  272.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  273.         $builder->add('Pengadaan Berdasrkan Metode dan Durasi'"dash_pengajuan_paket");
  274.         $user $security->getUser()->getRoles();
  275.         $qb $tRawDataRepo->createQueryBuilder('t');
  276.         $qb->where('t.updated_at IS NOT NULL')
  277.             ->orderBy('t.updated_at''DESC')
  278.             ->setMaxResults(1);
  279.         $latest $qb->getQuery()->getOneOrNullResult();
  280.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  281.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  282.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  283.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  284.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  285.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  286.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  287.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  288.         $group 'plant';
  289.         $table 'v_cleansing_pk_vendor';
  290.         $hari_kerja_create_pk $this->getJumlahHariKerja($table'tgl_sinkron_pr_sap_ke_ips''tgl_submit_pk_ke_hps'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  291.         $hari_kerja_hps $this->getJumlahHariKerja($table'tgl_submit_pk_ke_hps''tgl_submit_ke_pengadaan'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  292.         $hari_kerja_pengadaan $this->getJumlahHariKerja($table'tgl_submit_ke_pengadaan''tgl_approval_sppbj',  null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  293.         $hari_kerja_metode_pengadaan $this->getJumlahHariKerja($table'tgl_pelaksanaan_pp''tgl_approval_sppbj',  'metode_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  294.         $jumlah_metode $this->getJumlahBerdasrkanMetode($table'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  295.         // $range_nilai_pk = $this->getRangeNilaiPk($table, 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  296.         // $m_plant = $this->getKategoriPlant();
  297.         // print_r($jumlah_metode); exit;
  298.         // $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
  299.         $res_metode = [];
  300.         foreach ($hari_kerja_metode_pengadaan as $key => $value) {
  301.             $res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
  302.         }
  303.         $res_metode_pengadaan = [];
  304.         foreach ($jumlah_metode as $key => $value) {
  305.             $res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
  306.             $res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
  307.         }
  308.         $res = [
  309.             'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
  310.             'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
  311.             'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
  312.             'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
  313.             'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
  314.             'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
  315.             'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
  316.             'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
  317.             'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
  318.             // 'range_nilai_pk' => $range_nilai_pk
  319.         ];
  320.         return $this->render('backend/dashboard/dash_berdasarkan_metode_dan_durasi.html.twig', [
  321.             // return $this->render('backend/dashboard/dash.html.twig', [
  322.             'user' => $user,
  323.             'tipe_tahun' => $tipe_tahun,
  324.             'tahun' => $tahun,
  325.             'sumber_dana' => $sumber_dana,
  326.             'tanggal_awal' => $tanggal_awal,
  327.             'tanggal_akhir' => $tanggal_akhir,
  328.             'group' => $group,
  329.             'last_update' => $last_update,
  330.             'res' => $res,
  331.             'module' => 'dash_berdasarkan_metode_dan_durasi'
  332.         ]);
  333.     }
  334.     /**
  335.      * @Route("/dashboard/dash_progres_pemilihan_penyedia",name="dash_progres_pemilihan_penyedia")
  336.      */
  337.     public function dash_progres_pemilihan_penyedia(
  338.         Request $request,
  339.         BreacrumbBuilder $builder,
  340.         Security $security,
  341.         TLogRepository $tLogRepo,
  342.         TRawDataRepository $tRawDataRepo,
  343.         MPlantRepository $mPlantRepo
  344.     ) {
  345.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  346.         $builder->add('Progres Pemilihan Penyedia'"dash_progres_pemilihan_penyedia");
  347.         $user $security->getUser()->getRoles();
  348.         $qb $tRawDataRepo->createQueryBuilder('t');
  349.         $qb->where('t.updated_at IS NOT NULL')
  350.             ->orderBy('t.updated_at''DESC')
  351.             ->setMaxResults(1);
  352.         $latest $qb->getQuery()->getOneOrNullResult();
  353.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  354.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  355.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  356.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  357.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  358.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  359.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  360.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  361.         $group 'plant';
  362.         $table 'v_cleansing_pk_vendor';
  363.         //tampilan table
  364.         $data_tampilan_table $this->getTabelLaporan('v_cleansing_pk_vendor''kategori_plant''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  365.         $result_table = [];
  366.         foreach ($data_tampilan_table as $key => $value) {
  367.             $result_table[$value['sumber_dana']][$key] = $value;
  368.         }
  369.         $result_table array_reverse($result_table);
  370.         $res = [
  371.             'tahap_pembuatan_paket' => $this->getCardDashboard($table'tahap_pembuatan_paket'true'tgl_verifikasi_pr'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  372.             'tahap_penyusunan_hps' => $this->getCardDashboard($table'tahap_penyusunan_hps'true'tgl_submit_pk_ke_hps'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  373.             'tahap_pemilihan_penyedia' => $this->getCardDashboard($table'tahap_pemilihan_penyedia'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  374.             'tahap_dalam_proses' => $this->getCardDashboard($table'dalam_proses'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  375.             'tahap_selesai' => $this->getCardDashboard($table'selesai'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  376.         ];
  377.         // print_r($res); exit;
  378.         return $this->render('backend/dashboard/dash_progres_pemilihan_penyedia.html.twig', [
  379.             // return $this->render('backend/dashboard/dash.html.twig', [
  380.             'user' => $user,
  381.             'tipe_tahun' => $tipe_tahun,
  382.             'tahun' => $tahun,
  383.             'sumber_dana' => $sumber_dana,
  384.             'tanggal_awal' => $tanggal_awal,
  385.             'tanggal_akhir' => $tanggal_akhir,
  386.             'group' => $group,
  387.             'last_update' => $last_update,
  388.             'res' => $res,
  389.             'result' => $result_table,
  390.             'template' => '',
  391.             'module' => 'dash_progres_pemilihan_penyedia'
  392.         ]);
  393.     }
  394.     /**
  395.      * @Route("/dashboard/dash_nilai_paket_pengadaan",name="dash_nilai_paket_pengadaan")
  396.      */
  397.     public function dash_nilai_paket_pengadaan(
  398.         Request $request,
  399.         BreacrumbBuilder $builder,
  400.         Security $security,
  401.         TLogRepository $tLogRepo,
  402.         TRawDataRepository $tRawDataRepo,
  403.         MPlantRepository $mPlantRepo
  404.     ) {
  405.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  406.         $builder->add('Nilai Paket Pengadaan'"dash_nilai_paket_pengadaan");
  407.         $user $security->getUser()->getRoles();
  408.         $qb $tRawDataRepo->createQueryBuilder('t');
  409.         $qb->where('t.updated_at IS NOT NULL')
  410.             ->orderBy('t.updated_at''DESC')
  411.             ->setMaxResults(1);
  412.         $latest $qb->getQuery()->getOneOrNullResult();
  413.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  414.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  415.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  416.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  417.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  418.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  419.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  420.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  421.         $group 'plant';
  422.         $table 'v_cleansing_pk_vendor';
  423.         $data_tampilan_table $this->getTabelLaporan('v_cleansing_pk_vendor''kategori_plant''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  424.         $result_table = [];
  425.         foreach ($data_tampilan_table as $key => $value) {
  426.             $result_table[$value['sumber_dana']][$key] = $value;
  427.         }
  428.         $result_table array_reverse($result_table);
  429.         // print_r($result_table); exit;
  430.         $nilai_tahap_penyusunan_hps 0;
  431.         $nilai_tahap_pemilihan_penyedia 0;
  432.         foreach ($result_table as $key => $value) {
  433.             foreach ($value as $ke => $val) {
  434.                 $nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
  435.                 $nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
  436.             }
  437.         }
  438.         $res = [
  439.             'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
  440.             'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia
  441.         ];
  442.         // print_r($res); exit;
  443.         return $this->render('backend/dashboard/dash_nilai_paket_pengadaan.html.twig', [
  444.             // return $this->render('backend/dashboard/dash.html.twig', [
  445.             'user' => $user,
  446.             'tipe_tahun' => $tipe_tahun,
  447.             'tahun' => $tahun,
  448.             'sumber_dana' => $sumber_dana,
  449.             'tanggal_awal' => $tanggal_awal,
  450.             'tanggal_akhir' => $tanggal_akhir,
  451.             'group' => $group,
  452.             'last_update' => $last_update,
  453.             'res' => $res,
  454.             'result' => $result_table,
  455.             'template' => '',
  456.             'module' => 'dash_nilai_paket_pengadaan'
  457.         ]);
  458.     }
  459.     /**
  460.      * @Route("/dashboard/dash_realisasi_dan_saving",name="dash_realisasi_dan_saving")
  461.      */
  462.     public function dash_realisasi_dan_saving(
  463.         Request $request,
  464.         BreacrumbBuilder $builder,
  465.         Security $security,
  466.         TLogRepository $tLogRepo,
  467.         TRawDataRepository $tRawDataRepo,
  468.         MPlantRepository $mPlantRepo
  469.     ) {
  470.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  471.         $builder->add('Realisasi dan Saving'"dash_realisasi_dan_saving");
  472.         $user $security->getUser()->getRoles();
  473.         $qb $tRawDataRepo->createQueryBuilder('t');
  474.         $qb->where('t.updated_at IS NOT NULL')
  475.             ->orderBy('t.updated_at''DESC')
  476.             ->setMaxResults(1);
  477.         $latest $qb->getQuery()->getOneOrNullResult();
  478.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  479.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  480.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  481.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  482.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  483.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  484.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  485.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  486.         $group 'plant';
  487.         $table 'v_cleansing_pk_vendor';
  488.         $data_tampilan_table $this->getTabelLaporan('v_cleansing_pk_vendor''kategori_plant''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  489.         $result_table = [];
  490.         foreach ($data_tampilan_table as $key => $value) {
  491.             $result_table[$value['sumber_dana']][$key] = $value;
  492.         }
  493.         $result_table array_reverse($result_table);
  494.         // print_r($result_table); exit;
  495.         $nilai_tahap_penyusunan_hps 0;
  496.         $nilai_tahap_pemilihan_penyedia 0;
  497.         foreach ($result_table as $key => $value) {
  498.             foreach ($value as $ke => $val) {
  499.                 $nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
  500.                 $nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
  501.             }
  502.         }
  503.         $res = [
  504.             'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
  505.             'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia
  506.         ];
  507.         //chart realisasi
  508.         $hasil_realisasi = [];
  509.         $total_anggaran 0;
  510.         $total_hps 0;
  511.         $total_realisasi 0;
  512.         $total_saving_anggaran 0;
  513.         $total_saving_hps 0;
  514.         foreach ($result_table as $sumber_dana => $items) {
  515.             $anggaran 0;
  516.             $hps 0;
  517.             $realisasi 0;
  518.             foreach ($items as $item) {
  519.                 $anggaran += (float)$item['total_anggaran'];
  520.                 $hps += (float)$item['total_hps'];
  521.                 $realisasi += (float)$item['total_nilai_akhir'];
  522.             }
  523.             $saving_anggaran $anggaran $realisasi;
  524.             $saving_hps $hps $realisasi;
  525.             $percent_saving_anggaran $anggaran != ? ($saving_anggaran $anggaran 100) : 0;
  526.             $percent_saving_hps $hps != ? ($saving_hps $hps 100) : 0;
  527.             $hasil_realisasi[$sumber_dana] = [
  528.                 'total_anggaran' => $anggaran,
  529.                 'total_hps' => $hps,
  530.                 'total_nilai_akhir' => $realisasi,
  531.                 'saving_terhadap_anggaran' => round($percent_saving_anggaran1),
  532.                 'saving_terhadap_hps' => round($percent_saving_hps1),
  533.             ];
  534.             $total_anggaran += $anggaran;
  535.             $total_hps += $hps;
  536.             $total_realisasi += $realisasi;
  537.             $total_saving_anggaran += $saving_anggaran;
  538.             $total_saving_hps += $saving_hps;
  539.         }
  540.         // Hitung persentase total
  541.         $total_percent_saving_anggaran $total_anggaran ? ($total_saving_anggaran $total_anggaran) * 100 0;
  542.         $total_percent_saving_hps $total_hps ? ($total_saving_hps $total_hps) * 100 0;
  543.         $hasil_realisasi['total'] = [
  544.             'total_anggaran' => $total_anggaran,
  545.             'total_hps' => $total_hps,
  546.             'total_nilai_akhir' => $total_realisasi,
  547.             'saving_terhadap_anggaran' => round($total_percent_saving_anggaran1),
  548.             'saving_terhadap_hps' => round($total_percent_saving_hps1),
  549.         ];
  550.         //endrealisasi
  551.         // print_r($hasil_realisasi); exit;
  552.         return $this->render('backend/dashboard/dash_realisasi_dan_saving.html.twig', [
  553.             // return $this->render('backend/dashboard/dash.html.twig', [
  554.             'user' => $user,
  555.             'tipe_tahun' => $tipe_tahun,
  556.             'tahun' => $tahun,
  557.             'sumber_dana' => $sumber_dana,
  558.             'tanggal_awal' => $tanggal_awal,
  559.             'tanggal_akhir' => $tanggal_akhir,
  560.             'group' => $group,
  561.             'last_update' => $last_update,
  562.             'res' => $hasil_realisasi,
  563.             'result' => $result_table,
  564.             'template' => '',
  565.             'module' => 'dash_realisasi_dan_saving'
  566.         ]);
  567.     }
  568.     /**
  569.      * @Route("/dashboard/dash_realisasi_dan_efisiensi",name="dash_realisasi_dan_efisiensi")
  570.      */
  571.     public function dash_realisasi_dan_efisiensi(
  572.         Request $request,
  573.         BreacrumbBuilder $builder,
  574.         Security $security,
  575.         TLogRepository $tLogRepo,
  576.         TRawDataRepository $tRawDataRepo,
  577.         MPlantRepository $mPlantRepo
  578.     ) {
  579.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  580.         $builder->add('Realisasi dan Efisiensi'"dash_realisasi_dan_efisiensi");
  581.         $user $security->getUser()->getRoles();
  582.         $qb $tRawDataRepo->createQueryBuilder('t');
  583.         $qb->where('t.updated_at IS NOT NULL')
  584.             ->orderBy('t.updated_at''DESC')
  585.             ->setMaxResults(1);
  586.         $latest $qb->getQuery()->getOneOrNullResult();
  587.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  588.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  589.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  590.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  591.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  592.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  593.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  594.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  595.         // $group = 'plant';
  596.         // $table = 'v_cleansing_pk_vendor';
  597.         return $this->render('backend/dashboard/dash_realisasi_dan_efisiensi.html.twig', [
  598.             // return $this->render('backend/dashboard/dash.html.twig', [
  599.             'user' => $user,
  600.             'tipe_tahun' => $tipe_tahun,
  601.             'tahun' => $tahun,
  602.             'sumber_dana' => $sumber_dana,
  603.             'tanggal_awal' => $tanggal_awal,
  604.             'tanggal_akhir' => $tanggal_akhir,
  605.             // 'group' => $group,
  606.             'last_update' => $last_update,
  607.             // 'res_kotak_bawah' => $res_kotak_bawah,
  608.             'template' => '',
  609.             'module' => 'dash_realisasi_dan_efisiensi'
  610.         ]);
  611.     }
  612.     /**
  613.      * @Route("/dashboard/dash_full",name="dashboard_full")
  614.      */
  615.     public function dash_full(
  616.         Request $request,
  617.         BreacrumbBuilder $builder,
  618.         Security $security,
  619.         TLogRepository $tLogRepo,
  620.         TRawDataRepository $tRawDataRepo,
  621.         MPlantRepository $mPlantRepo
  622.     ) {
  623.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  624.         $user $security->getUser()->getRoles();
  625.         $latestData $qb $tRawDataRepo->createQueryBuilder('t');
  626.         $qb->where('t.updated_at IS NOT NULL')
  627.             ->orderBy('t.updated_at''DESC')
  628.             ->setMaxResults(1);
  629.         $latest $qb->getQuery()->getOneOrNullResult();
  630.         $last_update =  ($latest) ? $latest->getUpdatedAt()->format("Y-m-d") : null;
  631.         // dump($this->getUser()->getName());exit;
  632.         // print_r($this->getCardDashboard('tahap_pembuatan_paket',true)); exit;
  633.         $log $tLogRepo->findBy([], ['reff_id' => 'desc'], 5);
  634.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  635.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  636.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  637.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  638.         $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  639.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  640.         // print_r($this->getGrafikReport($tahun,$bulan)); exit;
  641.         //chart realisasi
  642.         //
  643.         $table 'v_cleansing_pk_vendor';
  644.         $group 'plant';
  645.         $data $this->getTabelLaporan($table'regional''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  646.         // print_r($data); exit;
  647.         $data_tabel $this->getTabelLaporan($table$group'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  648.         // $data_dashboard = $this->getDashbord('tabel_40', 'regional');
  649.         // print_r($data);
  650.         // exit;
  651.         //creat_pk
  652.         // tgl_submit_pk_ke_hps, tgl_sinkron_pr_sap_ke_ips
  653.         //hps
  654.         // tgl_submit_ke_pengadaan, tgl_submit_pk_ke_hps
  655.         //pengadaan
  656.         // tgl_approval_sppbj, tgl_submit_ke_pengadaan
  657.         $hari_kerja_create_pk $this->getJumlahHariKerja($table'tgl_sinkron_pr_sap_ke_ips''tgl_submit_pk_ke_hps'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  658.         $hari_kerja_hps $this->getJumlahHariKerja($table'tgl_submit_pk_ke_hps''tgl_submit_ke_pengadaan'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  659.         $hari_kerja_pengadaan $this->getJumlahHariKerja($table'tgl_submit_ke_pengadaan''tgl_approval_sppbj',  null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  660.         $hari_kerja_metode_pengadaan $this->getJumlahHariKerja($table'tgl_pelaksanaan_pp''tgl_approval_sppbj',  'metode_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  661.         $jumlah_metode $this->getJumlahBerdasrkanMetode($table'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  662.         $range_nilai_pk $this->getRangeNilaiPk($table'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  663.         $m_plant $this->getKategoriPlant();
  664.         // print_r($jumlah_metode); exit;
  665.         // $hari_kerja_metode_pengadaan = $this->getJumlahHariKerja('tabel_40', 'tgl_submit_ke_pengadaan','tgl_submit_pk_ke_hps','metode_pengadaan');
  666.         $res_metode = [];
  667.         foreach ($hari_kerja_metode_pengadaan as $key => $value) {
  668.             $res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
  669.         }
  670.         $res_metode_pengadaan = [];
  671.         foreach ($jumlah_metode as $key => $value) {
  672.             $res_metode_pengadaan[$value['tipe_pengadaan']]['jumlah'] = $value['jumlah'];
  673.             $res_metode_pengadaan[$value['tipe_pengadaan']]['total_nilai'] = $value['total_nilai'];
  674.         }
  675.         // print_r($res_metode_pengadaan); exit;
  676.         //dashbord kotak bawah
  677.         $res_kotak_bawah = [];
  678.         $total_hps 0;
  679.         $color = ["HO MKSO" => "#00bcd4""JATENG" => "#cddc39""JATIM 1" => "#ffc107""JATIM 2" => "#a1887f""JATIM 3" => "#ba68c8""JATIM 4" => "#81c784""KANTOR PUSAT PT SGN" => "#ef9a9a""SULAWESI" => "#77baf0""SUMATERA 1" => "#90caf9""SUMATERA 2" => "#81c784"];
  680.         foreach ($data as $key => $value) {
  681.             $regional =   $value['regional'];
  682.             if ($value['regional'] == "HO MKSO") {
  683.                 $regional_label =   "MKSO";
  684.             } else if ($value['regional'] == "KANTOR PUSAT PT SGN") {
  685.                 $regional_label =  "HO SGN";
  686.             } else {
  687.                 $regional_label =   $value['regional'];
  688.             }
  689.             if (!isset($res_kotak_bawah[$regional])) {
  690.                 $res_kotak_bawah[$regional] = [
  691.                     'total_pk' => 0,
  692.                     'total_nilai' => 0,
  693.                     'total_nilai_akhir' => 0,
  694.                     'total_anggaran' => 0,
  695.                     'total_hps' => 0,
  696.                     'saving_thd_hps' => 0,
  697.                 ];
  698.             }
  699.             $res_kotak_bawah[$regional]['regional'] = $regional_label;
  700.             $res_kotak_bawah[$regional]['total_pk'] +=  $value['total_pk'];
  701.             $res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
  702.             $total_realisasi $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
  703.             $res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
  704.             $total_hps =  $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  705.             $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  706.             $saving_terhadap_hps $total_hps $total_realisasi;
  707.             $res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
  708.             $res_kotak_bawah[$regional]['color'] = $color[$regional];
  709.         }
  710.         //tabel
  711.         $res_kotak_tabel = [];
  712.         $total_hps 0;
  713.         foreach ($data_tabel as $key => $value) {
  714.             $plant $value[$group];
  715.             if (!isset($res_kotak_tabel[$plant])) {
  716.                 $res_kotak_tabel[$plant] = [
  717.                     'total_pk' => 0,
  718.                     'reg' => null,
  719.                     'total_nilai' => 0,
  720.                     'total_nilai_akhir' => 0,
  721.                     'total_anggaran' => 0,
  722.                     'total_hps' => 0,
  723.                     'saving_thd_hps' => 0,
  724.                     'saving_thd_hps_persen' => 0,
  725.                 ];
  726.             }
  727.             $reg $mPlantRepo->findOneBy(['nama' => strtoupper($plant)]);
  728.             $regio = ($reg) ? $reg->getRegional() : null;
  729.             $res_kotak_tabel[$plant][$group] = $plant;
  730.             $res_kotak_tabel[$plant]['reg'] = $regio;
  731.             $res_kotak_tabel[$plant]['total_pk'] += $value['total_pk'];
  732.             $res_kotak_tabel[$plant]['total_nilai'] += $value['total_nilai'];
  733.             $res_kotak_tabel[$plant]['total_nilai_akhir'] += $value['total_nilai_akhir'];
  734.             $res_kotak_tabel[$plant]['total_anggaran'] += $value['total_anggaran'];
  735.             $res_kotak_tabel[$plant]['total_hps'] += $value['total_hps'];
  736.             $total_realisasi $res_kotak_tabel[$plant]['total_nilai_akhir'];
  737.             $total_hps $res_kotak_tabel[$plant]['total_hps'];
  738.             $saving_terhadap_hps_tabel $res_kotak_tabel[$plant]['saving_thd_hps'] = ($total_hps $total_realisasi);
  739.             $saving_terhadap_hps_persen_tabel $total_hps ? ($saving_terhadap_hps_tabel $total_hps) * 100 0;
  740.             $res_kotak_tabel[$plant]['saving_thd_hps_persen'] = round($saving_terhadap_hps_persen_tabel1);
  741.         }
  742.         $jumlah_pk 0;
  743.         $jumlah_pr 0;
  744.         $jumlah_pp 0;
  745.         $total_nilai 0;
  746.         $total_anggaran 0;
  747.         $total_hps 0;
  748.         $total_realisasi 0;
  749.         $saving_terhadap_anggaran 0;
  750.         $saving_terhadap_hps 0;
  751.         $saving_terhadap_anggaran_persen 0;
  752.         $saving_terhadap_hps_persen 0;
  753.         foreach ($data as $key => $value) {
  754.             $jumlah_pk += $value['total_pk'];
  755.             $jumlah_pr += $value['total_pr'];
  756.             $jumlah_pp += $value['total_pp'];
  757.             $total_nilai += $value['total_nilai'];
  758.             $total_anggaran += $value['total_anggaran'];
  759.             $total_hps += $value['total_hps'];
  760.             $total_realisasi += $value['total_nilai_akhir'];
  761.         }
  762.         $saving_terhadap_anggaran $total_anggaran $total_realisasi;
  763.         $saving_terhadap_hps $total_hps $total_realisasi;
  764.         $saving_terhadap_anggaran_persen $total_anggaran ? ($saving_terhadap_anggaran $total_anggaran) * 100 0;
  765.         $saving_terhadap_hps_persen $total_hps ? ($saving_terhadap_hps $total_hps) * 100 0;
  766.         $res_dash = [
  767.             'jumlah_pk' => $jumlah_pk,
  768.             'jumlah_pr' => $jumlah_pr,
  769.             'jumlah_pp' => $jumlah_pp,
  770.             'total_nilai' => $total_nilai,
  771.             'total_anggaran' => $total_anggaran,
  772.             'total_hps' => $total_hps,
  773.             'total_realisasi' => $total_realisasi,
  774.             'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
  775.             'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
  776.             'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
  777.             'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
  778.             'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
  779.             'saving_thd_anggaran' => $saving_terhadap_anggaran,
  780.             'saving_thd_hps' => $saving_terhadap_hps,
  781.             'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen1),
  782.             'saving_thd_hps_persen' => round($saving_terhadap_hps_persen1),
  783.             'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
  784.             'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
  785.             'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
  786.             'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
  787.             'range_nilai_pk' => $range_nilai_pk,
  788.             'm_plant' => $m_plant
  789.         ];
  790.         // print_r( $this->getGrafikTotalPk('tabel_34','no_pk',$tanggal_awal,$tanggal_akhir));
  791.         // exit;
  792.         //endrealisasi
  793.         // $pengunjung = $tLogRepo->count(['reff_name' => 'homepage']);
  794.         // print_r( $this->getCardDashboard('tabel_34', 'tahap_pembuatan_paket', false)); exit;
  795.         //tampilan table
  796.         $data_tampilan_table $this->getTabelLaporan('v_cleansing_pk_vendor''kategori_plant''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  797.         $result_table = [];
  798.         foreach ($data_tampilan_table as $key => $value) {
  799.             $result_table[$value['sumber_dana']][$key] = $value;
  800.         }
  801.         $result_table array_reverse($result_table);
  802.         // print_r($result_table); exit;
  803.         $nilai_tahap_penyusunan_hps 0;
  804.         $nilai_tahap_pemilihan_penyedia 0;
  805.         foreach ($result_table as $key => $value) {
  806.             foreach ($value as $ke => $val) {
  807.                 $nilai_tahap_penyusunan_hps += $val['nilai_penyusunan_hps'];
  808.                 $nilai_tahap_pemilihan_penyedia += $val['nilai_pemilihan_penyedia'];
  809.             }
  810.         }
  811.         //chart realisasi
  812.         $hasil_realisasi = [];
  813.         $total_anggaran 0;
  814.         $total_hps 0;
  815.         $total_realisasi 0;
  816.         $total_saving_anggaran 0;
  817.         $total_saving_hps 0;
  818.         foreach ($result_table as $sumber_dana => $items) {
  819.             $anggaran 0;
  820.             $hps 0;
  821.             $realisasi 0;
  822.             foreach ($items as $item) {
  823.                 $anggaran += (float)$item['total_anggaran'];
  824.                 $hps += (float)$item['total_hps'];
  825.                 $realisasi += (float)$item['total_nilai_akhir'];
  826.             }
  827.             $saving_anggaran $anggaran $realisasi;
  828.             $saving_hps $hps $realisasi;
  829.             $percent_saving_anggaran $anggaran != ? ($saving_anggaran $anggaran 100) : 0;
  830.             $percent_saving_hps $hps != ? ($saving_hps $hps 100) : 0;
  831.             $hasil_realisasi[$sumber_dana] = [
  832.                 'total_anggaran' => $anggaran,
  833.                 'total_hps' => $hps,
  834.                 'total_nilai_akhir' => $realisasi,
  835.                 'saving_terhadap_anggaran' => round($percent_saving_anggaran1),
  836.                 'saving_terhadap_hps' => round($percent_saving_hps1),
  837.             ];
  838.             $total_anggaran += $anggaran;
  839.             $total_hps += $hps;
  840.             $total_realisasi += $realisasi;
  841.             $total_saving_anggaran += $saving_anggaran;
  842.             $total_saving_hps += $saving_hps;
  843.         }
  844.         // Hitung persentase total
  845.         $total_percent_saving_anggaran $total_anggaran ? ($total_saving_anggaran $total_anggaran) * 100 0;
  846.         $total_percent_saving_hps $total_hps ? ($total_saving_hps $total_hps) * 100 0;
  847.         $hasil_realisasi['total'] = [
  848.             'total_anggaran' => $total_anggaran,
  849.             'total_hps' => $total_hps,
  850.             'total_nilai_akhir' => $total_realisasi,
  851.             'saving_terhadap_anggaran' => round($total_percent_saving_anggaran1),
  852.             'saving_terhadap_hps' => round($total_percent_saving_hps1),
  853.         ];
  854.         //endrealisasi
  855.         // print_r($this->getGrafikTotalPkPpPr($table, 'no_pr', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, 'tahap_pembuatan_paket', $tipe_tahun, $tahun, $sumber_dana)); exit;
  856.         $template 'dash';
  857.         return $this->render('backend/dashboard/' $template '.html.twig', [
  858.             // return $this->render('backend/dashboard/dash.html.twig', [
  859.             'user' => $user,
  860.             'tahap_pembuatan_paket' => $this->getCardDashboard($table'tahap_pembuatan_paket'true'tgl_verifikasi_pr'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  861.             'tahap_penyusunan_hps' => $this->getCardDashboard($table'tahap_penyusunan_hps'true'tgl_submit_pk_ke_hps'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  862.             'tahap_pemilihan_penyedia' => $this->getCardDashboard($table'tahap_pemilihan_penyedia'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  863.             'tahap_dalam_proses' => $this->getCardDashboard($table'dalam_proses'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  864.             'tahap_selesai' => $this->getCardDashboard($table'selesai'true'tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana),
  865.             // 'chart_pengajuan' => $this->getGrafikReport($tahun, $bulan_tanggal),
  866.             // 'chart_total_pr' => $this->getGrafikTotalPkPpPr($table, 'no_pr', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
  867.             // 'chart_total_pk' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
  868.             // 'chart_total_pp' => $this->getGrafikTotalPkPpPr($table, 'no_pp', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, null, $tipe_tahun, $tahun, $sumber_dana),
  869.             // 'chart_total_pr_tahap_pembuatan_paket' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_verifikasi_pr', $tanggal_awal, $tanggal_akhir, 'tahap_pembuatan_paket', $tipe_tahun, $tahun, $sumber_dana),
  870.             // 'chart_total_pr_tahap_penyusunan_hps' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_pk_ke_hps', $tanggal_awal, $tanggal_akhir, 'tahap_penyusunan_hps', $tipe_tahun, $tahun, $sumber_dana),
  871.             // 'chart_total_pr_tahap_pemilihan_penyedia' => $this->getGrafikTotalPkPpPr($table, 'no_pk', 'tgl_submit_ke_pengadaan', $tanggal_awal, $tanggal_akhir, 'tahap_pemilihan_penyedia', $tipe_tahun, $tahun, $sumber_dana),
  872.             'tipe_tahun' => $tipe_tahun,
  873.             'tahun' => $tahun,
  874.             'sumber_dana' => $sumber_dana,
  875.             'tanggal_awal' => $tanggal_awal,
  876.             'tanggal_akhir' => $tanggal_akhir,
  877.             'res_dash' => $res_dash,
  878.             'res_kotak_bawah' => $res_kotak_bawah,
  879.             'res_kotak_tabel' => $res_kotak_tabel,
  880.             'group' => $group,
  881.             'log' => $log,
  882.             'last_update' => $last_update,
  883.             'result' => $result_table,
  884.             'nilai_tahap_penyusunan_hps' => $nilai_tahap_penyusunan_hps,
  885.             'nilai_tahap_pemilihan_penyedia' => $nilai_tahap_pemilihan_penyedia,
  886.             'chart_realisasi' => $hasil_realisasi,
  887.             'template' => $template
  888.         ]);
  889.     }
  890.     /**
  891.      * @Route("/dashboard/detail_progress",name="dashboard_detail_progress")
  892.      */
  893.     public function detail_progress(TPublikasiRepository $tPublikasiRepoManagerInterface $managerInterface)
  894.     {
  895.         return $this->render('backend/dashboard/detail_progress.html.twig', []);
  896.     }
  897.     /**
  898.      * @Route("/dashboard/chart_pr",name="dashboard_chart_pr")
  899.      */
  900.     public function chart_pr(Request $requestManagerInterface $managerInterface)
  901.     {
  902.         $tahun        $request->request->get('tahun');
  903.         $tanggal_awal  $request->request->get('tanggal_awal');
  904.         $tanggal_akhir $request->request->get('tanggal_akhir');
  905.         $sumber_dana   $request->request->get('sumber_dana');
  906.         $tipe_tahun    $request->request->get('tipe_tahun');
  907.         $table 'v_cleansing_pk_vendor';
  908.         // $data = $this->getTabelLaporan($table, 'regional', 'tgl_approval_sppbj', $tanggal_awal, $tanggal_akhir, $tipe_tahun, $tahun, $sumber_dana);
  909.         // $jumlah_pk = 0;
  910.         // $jumlah_pr = 0;
  911.         // $jumlah_pp = 0;
  912.         // $total_nilai = 0;
  913.         // $total_anggaran = 0;
  914.         // $total_hps = 0;
  915.         // $total_realisasi = 0;
  916.         // $saving_terhadap_anggaran = 0;
  917.         // $saving_terhadap_hps = 0;
  918.         // $saving_terhadap_anggaran_persen = 0;
  919.         // $saving_terhadap_hps_persen = 0;
  920.         // foreach ($data as $key => $value) {
  921.         //     $jumlah_pk += $value['total_pk'];
  922.         //     $jumlah_pr += $value['total_pr'];
  923.         //     $jumlah_pp += $value['total_pp'];
  924.         //     $total_nilai += $value['total_nilai'];
  925.         //     $total_anggaran += $value['total_anggaran'];
  926.         //     $total_hps += $value['total_hps'];
  927.         //     $total_realisasi += $value['total_nilai_akhir'];
  928.         // }
  929.         // $saving_terhadap_anggaran = $total_anggaran - $total_realisasi;
  930.         // $saving_terhadap_hps = $total_hps - $total_realisasi;
  931.         // $saving_terhadap_anggaran_persen = $total_anggaran > 0 ? ($saving_terhadap_anggaran / $total_anggaran) * 100 : 0;
  932.         // $saving_terhadap_hps_persen = $total_hps > 0 ? ($saving_terhadap_hps / $total_hps) * 100 : 0;
  933.         // // print_r($tanggal_akhir); exit;
  934.         // $res_dash = [
  935.         //     'jumlah_pk' => $jumlah_pk,
  936.         //     'jumlah_pr' => $jumlah_pr,
  937.         //     'jumlah_pp' => $jumlah_pp,
  938.         //     'total_nilai' => $total_nilai,
  939.         //     'total_anggaran' => $total_anggaran,
  940.         //     'total_hps' => $total_hps,
  941.         //     'total_realisasi' => $total_realisasi
  942.         // ];
  943.         $chart_total_pr $this->getGrafikTotalPkPpPr($table'no_pr''tgl_verifikasi_pr'$tanggal_awal$tanggal_akhirnull$tipe_tahun$tahun$sumber_dana);
  944.     //    print_r($chart_total_pr); exit;
  945.         return $this->render('backend/dashboard/_chart_pr.html.twig', [
  946.             'chart_total_pr' => $chart_total_pr
  947.         ]);
  948.     }
  949.     /**
  950.      * @Route("/dashboard/chart_pk",name="dashboard_chart_pk")
  951.      */
  952.     public function chart_pk(Request $requestManagerInterface $managerInterface)
  953.     {
  954.         $tahun        $request->request->get('tahun');
  955.         $tanggal_awal  $request->request->get('tanggal_awal');
  956.         $tanggal_akhir $request->request->get('tanggal_akhir');
  957.         $sumber_dana   $request->request->get('sumber_dana');
  958.         $tipe_tahun    $request->request->get('tipe_tahun');
  959.         $table 'v_cleansing_pk_vendor';
  960.         $chart_total_pk $this->getGrafikTotalPkPpPr($table'no_pk''tgl_submit_pk_ke_hps'$tanggal_awal$tanggal_akhirnull$tipe_tahun$tahun$sumber_dana);
  961.         return $this->render('backend/dashboard/_chart_pk.html.twig', [
  962.             'chart_total_pk' => $chart_total_pk,
  963.         ]);
  964.     }
  965.     /**
  966.      * @Route("/dashboard/chart_pp",name="dashboard_chart_pp")
  967.      */
  968.     public function chart_pp(Request $requestManagerInterface $managerInterface)
  969.     {
  970.         $tahun        $request->request->get('tahun');
  971.         $tanggal_awal  $request->request->get('tanggal_awal');
  972.         $tanggal_akhir $request->request->get('tanggal_akhir');
  973.         $sumber_dana   $request->request->get('sumber_dana');
  974.         $tipe_tahun    $request->request->get('tipe_tahun');
  975.         $table 'v_cleansing_pk_vendor';
  976.         $chart_total_pp $this->getGrafikTotalPkPpPr($table'no_pk''tgl_approval_sppbj'$tanggal_awal$tanggal_akhirnull$tipe_tahun$tahun$sumber_dana);
  977.         return $this->render('backend/dashboard/_chart_pp.html.twig', [
  978.             'chart_total_pp' => $chart_total_pp,
  979.         ]);
  980.     }
  981.     /**
  982.      * @Route("/dashboard/chart_submit_pengadaan",name="dashboard_chart_submit_pengadaan")
  983.      */
  984.     public function chart_submit_pengadaan(Request $requestManagerInterface $managerInterface)
  985.     {
  986.         $tahun        $request->request->get('tahun');
  987.         $tanggal_awal  $request->request->get('tanggal_awal');
  988.         $tanggal_akhir $request->request->get('tanggal_akhir');
  989.         $sumber_dana   $request->request->get('sumber_dana');
  990.         $tipe_tahun    $request->request->get('tipe_tahun');
  991.         $table 'v_cleansing_pk_vendor';
  992.         $chart_total_submit_pengadaan $this->getGrafikTotalPkPpPr($table'no_pk''tgl_submit_ke_pengadaan'$tanggal_awal$tanggal_akhirnull$tipe_tahun$tahun$sumber_dana);
  993.         return $this->render('backend/dashboard/_chart_submit_pengadaan.html.twig', [
  994.             'chart_total_submit_pengadaan' => $chart_total_submit_pengadaan,
  995.         ]);
  996.     }
  997.     /**
  998.      * @Route("/dashboard/chart_pengajuan_paket_pertahap", name="dashboard_chart_pengajuan_paket_pertahap", methods={"GET", "POST"})
  999.      */
  1000.     public function chart_pengajuan_paket_pertahap(Request $requestManagerInterface $managerInterface)
  1001.     {
  1002.         $tahun        $request->request->get('tahun');
  1003.         $tanggal_awal  $request->request->get('tanggal_awal');
  1004.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1005.         $sumber_dana   $request->request->get('sumber_dana');
  1006.         $tipe_tahun    $request->request->get('tipe_tahun');
  1007.         $table 'v_cleansing_pk_vendor';
  1008.         // $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  1009.         // $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  1010.         // $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  1011.         // $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  1012.         // $bulan_tanggal = ($tahun == date("Y") && date("m") < 9) ? date("m-d") : "09-30";
  1013.         // $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  1014.         $tahap = ['tahap_pembuatan_paket' => 'Tahap Pembuatan Paket''tahap_penyusunan_hps' => 'Tahap Penyusunan HPS''dalam_proses' => 'Proses Pemilihan Penyedia''selesai' => 'Selesai Pemilihan Penyedia'];
  1015.         $chart_pertahap = [];
  1016.         $no 1;
  1017.         $periode = [=> 'tgl_verifikasi_pr''tgl_submit_pk_ke_hps''tgl_submit_ke_pengadaan''tgl_submit_ke_pengadaan'];
  1018.         foreach ($tahap as $key => $value) {
  1019.             $chart_pertahap[$key]['tahap'] = $value;
  1020.             // $chart_pertahap[$key]['nilai'] = $this->getGrafikTotalPkPpPr($table, 'no_pk', $periode[$no], $tanggal_awal, $tanggal_akhir, $key, $tipe_tahun, $tahun, $sumber_dana);
  1021.             $chart_pertahap[$key]['nilai'] = $this->getGrafikPertahap($table'no_pk'$periode[$no], $tanggal_awal$tanggal_akhir$key$tipe_tahun$tahun$sumber_dana);
  1022.             $no++;
  1023.         }
  1024.         return $this->render('backend/dashboard/_chart_pengajuan_paket_pertahap.html.twig', [
  1025.             'chart_pertahap' => $chart_pertahap,
  1026.         ]);
  1027.     }
  1028.     /**
  1029.      * @Route("/dashboard/table_realisasi", name="dashboard_table_realisasi", methods={"GET", "POST"})
  1030.      */
  1031.     public function table_realisasi(Request $requestManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1032.     {
  1033.         $tahun        $request->request->get('tahun');
  1034.         $tanggal_awal  $request->request->get('tanggal_awal');
  1035.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1036.         $sumber_dana   $request->request->get('sumber_dana');
  1037.         $tipe_tahun    $request->request->get('tipe_tahun');
  1038.         $table 'v_cleansing_pk_vendor';
  1039.         $group 'plant';
  1040.         $data $this->getTabelLaporan($table$group'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dananull1);
  1041.         $res_kotak_tabel = [];
  1042.         $total_hps 0;
  1043.         foreach ($data as $key => $value) {
  1044.             $plant $value[$group];
  1045.             if (!isset($res_kotak_tabel[$plant])) {
  1046.                 $res_kotak_tabel[$plant] = [
  1047.                     'total_pk' => 0,
  1048.                     'reg' => null,
  1049.                     'total_nilai' => 0,
  1050.                     'total_nilai_akhir' => 0,
  1051.                     'total_anggaran' => 0,
  1052.                     'total_hps' => 0,
  1053.                     'saving_thd_hps' => 0,
  1054.                     'saving_thd_hps_persen' => 0,
  1055.                 ];
  1056.             }
  1057.             $reg $mPlantRepo->findOneBy(['nama' => strtoupper($plant)]);
  1058.             $regio = ($reg) ? $reg->getRegional() : null;
  1059.             $res_kotak_tabel[$plant][$group] = $plant;
  1060.             $res_kotak_tabel[$plant]['reg'] = $regio;
  1061.             $res_kotak_tabel[$plant]['total_pk'] += $value['total_pk'];
  1062.             $res_kotak_tabel[$plant]['total_nilai'] += $value['total_nilai'];
  1063.             $res_kotak_tabel[$plant]['total_nilai_akhir'] += $value['total_nilai_akhir'];
  1064.             $res_kotak_tabel[$plant]['total_anggaran'] += $value['total_anggaran'];
  1065.             $res_kotak_tabel[$plant]['total_hps'] += $value['total_hps'];
  1066.             $total_realisasi $res_kotak_tabel[$plant]['total_nilai_akhir'];
  1067.             $total_hps $res_kotak_tabel[$plant]['total_hps'];
  1068.             $saving_terhadap_hps_tabel $res_kotak_tabel[$plant]['saving_thd_hps'] = ($total_hps $total_realisasi);
  1069.             $saving_terhadap_hps_persen_tabel $total_hps ? ($saving_terhadap_hps_tabel $total_hps) * 100 0;
  1070.             $res_kotak_tabel[$plant]['saving_thd_hps_persen'] = round($saving_terhadap_hps_persen_tabel1);
  1071.         }
  1072.         return $this->render('backend/dashboard/_table.html.twig', [
  1073.             'res_kotak_tabel' => $res_kotak_tabel,
  1074.             'group' => $group,
  1075.         ]);
  1076.     }
  1077.     /**
  1078.      * @Route("/dashboard/chart_realisasi_efisiensi_pg", name="dashboard_chart_realisasi_efisiensi_pg", methods={"GET", "POST"})
  1079.      */
  1080.     public function chart_realisasi_efisiensi_pg(Request $requestManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1081.     {
  1082.         $tahun        $request->request->get('tahun');
  1083.         $tanggal_awal  $request->request->get('tanggal_awal');
  1084.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1085.         $sumber_dana   $request->request->get('sumber_dana');
  1086.         $tipe_tahun    $request->request->get('tipe_tahun');
  1087.         $table 'v_cleansing_pk_vendor';
  1088.         $group 'plant';
  1089.         $kategori_plant "'HO','PG'";
  1090.         $data $this->getTabelLaporan($table$group'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana$kategori_plant1);
  1091.         $res_kotak_bawah = [];
  1092.         $total_hps 0;
  1093.         // $color = ["HO MKSO" => "#00bcd4", "JATENG" => "#cddc39", "JATIM 1" => "#ffc107", "JATIM 2" => "#a1887f", "JATIM 3" => "#ba68c8", "JATIM 4" => "#81c784", "KANTOR PUSAT PT SGN" => "#ef9a9a", "SULAWESI" => "#77baf0", "SUMATERA 1" => "#90caf9", "SUMATERA 2" => "#81c784"];
  1094.         foreach ($data as $key => $value) {
  1095.             $regional =   $value[$group];
  1096.             if ($value[$group] == "HO MKSO") {
  1097.                 $regional_label =   "MKSO";
  1098.             } else if ($value[$group] == "KANTOR PUSAT PT SGN") {
  1099.                 $regional_label =  "HO SGN";
  1100.             } else {
  1101.                 $regional_label =   $value[$group];
  1102.             }
  1103.             if (!isset($res_kotak_bawah[$regional])) {
  1104.                 $res_kotak_bawah[$regional] = [
  1105.                     'total_pk' => 0,
  1106.                     'total_nilai' => 0,
  1107.                     'total_nilai_akhir' => 0,
  1108.                     'total_anggaran' => 0,
  1109.                     'total_hps' => 0,
  1110.                     'saving_thd_hps' => 0,
  1111.                 ];
  1112.             }
  1113.             $res_kotak_bawah[$regional][$group] = $regional_label;
  1114.             $res_kotak_bawah[$regional]['total_pk'] +=  $value['total_pk'];
  1115.             $res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
  1116.             $total_realisasi $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
  1117.             $res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
  1118.             $total_hps =  $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  1119.             $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  1120.             $saving_terhadap_hps $total_hps $total_realisasi;
  1121.             $res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
  1122.             // $res_kotak_bawah[$regional]['color'] = $color[$regional];
  1123.         }
  1124.         //   print_r($res_kotak_bawah); exit;
  1125.         return $this->render('backend/dashboard/chart_realisasi_efisiensi_pg.html.twig', [
  1126.             'res_kotak_bawah' => $res_kotak_bawah,
  1127.             'group' => $group,
  1128.         ]);
  1129.     }
  1130.     /**
  1131.      * @Route("/dashboard/chart_realisasi_efisiensi_mkso", name="dashboard_chart_realisasi_efisiensi_mkso", methods={"GET", "POST"})
  1132.      */
  1133.     public function chart_realisasi_efisiensi_mkso(Request $requestManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1134.     {
  1135.         $tahun        $request->request->get('tahun');
  1136.         $tanggal_awal  $request->request->get('tanggal_awal');
  1137.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1138.         $sumber_dana   $request->request->get('sumber_dana');
  1139.         $tipe_tahun    $request->request->get('tipe_tahun');
  1140.         $table 'v_cleansing_pk_vendor';
  1141.         $group 'plant';
  1142.         $kategori_plant "'MKSO'";
  1143.         $data $this->getTabelLaporan($table$group'tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana$kategori_plant1);
  1144.         //    print_r($data); exit;
  1145.         $res_kotak_bawah = [];
  1146.         $total_hps 0;
  1147.         // $color = ["HO MKSO" => "#00bcd4", "JATENG" => "#cddc39", "JATIM 1" => "#ffc107", "JATIM 2" => "#a1887f", "JATIM 3" => "#ba68c8", "JATIM 4" => "#81c784", "KANTOR PUSAT PT SGN" => "#ef9a9a", "SULAWESI" => "#77baf0", "SUMATERA 1" => "#90caf9", "SUMATERA 2" => "#81c784"];
  1148.         foreach ($data as $key => $value) {
  1149.             $regional =   $value[$group];
  1150.             if ($value[$group] == "HO MKSO") {
  1151.                 $regional_label =   "MKSO";
  1152.             } else if ($value[$group] == "KANTOR PUSAT PT SGN") {
  1153.                 $regional_label =  "HO SGN";
  1154.             } else {
  1155.                 $regional_label =   $value[$group];
  1156.             }
  1157.             if (!isset($res_kotak_bawah[$regional])) {
  1158.                 $res_kotak_bawah[$regional] = [
  1159.                     'total_pk' => 0,
  1160.                     'total_nilai' => 0,
  1161.                     'total_nilai_akhir' => 0,
  1162.                     'total_anggaran' => 0,
  1163.                     'total_hps' => 0,
  1164.                     'saving_thd_hps' => 0,
  1165.                 ];
  1166.             }
  1167.             $res_kotak_bawah[$regional][$group] = $regional_label;
  1168.             $res_kotak_bawah[$regional]['total_pk'] +=  $value['total_pk'];
  1169.             $res_kotak_bawah[$regional]['total_nilai'] += $value['total_nilai'];
  1170.             $total_realisasi $res_kotak_bawah[$regional]['total_nilai_akhir'] += $value['total_nilai_akhir'];
  1171.             $res_kotak_bawah[$regional]['total_anggaran'] += $value['total_anggaran'];
  1172.             $total_hps =  $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  1173.             $res_kotak_bawah[$regional]['total_hps'] += $value['total_hps'];
  1174.             $saving_terhadap_hps $total_hps $total_realisasi;
  1175.             $res_kotak_bawah[$regional]['saving_thd_hps'] += $saving_terhadap_hps;
  1176.             // $res_kotak_bawah[$regional]['color'] = $color[$regional];
  1177.         }
  1178.         return $this->render('backend/dashboard/chart_realisasi_efisiensi_mkso.html.twig', [
  1179.             'res_kotak_bawah' => $res_kotak_bawah,
  1180.             'group' => $group,
  1181.         ]);
  1182.     }
  1183.     /**
  1184.      * @Route("/dashboard/chart_perbandingan", name="dashboard_chart_perbandingan", methods={"GET", "POST"})
  1185.      */
  1186.     public function chart_perbandingan(Request $requestManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1187.     {
  1188.         $tahun        $request->request->get('tahun');
  1189.         $tanggal_awal  $request->request->get('tanggal_awal');
  1190.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1191.         $sumber_dana   $request->request->get('sumber_dana');
  1192.         $tipe_tahun    $request->request->get('tipe_tahun');
  1193.         $table 'v_cleansing_pk_vendor';
  1194.         $group 'plant';
  1195.         $data_tahun_sebelumnya $this->getTabelLaporan($table'regional''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun 1$sumber_dananull);
  1196.         $jumlah_pk_thn_sebelumnya 0;
  1197.         $jumlah_pr_thn_sebelumnya 0;
  1198.         $jumlah_pp_thn_sebelumnya 0;
  1199.         $jumlah_pemenang_thn_sebelumnya 0;
  1200.         $total_nilai_thn_sebelumnya 0;
  1201.         $total_anggaran_thn_sebelumnya 0;
  1202.         $total_hps_thn_sebelumnya 0;
  1203.         $total_realisasi_thn_sebelumnya 0;
  1204.         $saving_terhadap_anggaran_thn_sebelumnya 0;
  1205.         $saving_terhadap_hps_thn_sebelumnya 0;
  1206.         $saving_terhadap_anggaran_persen_thn_sebelumnya 0;
  1207.         $saving_terhadap_hps_persen_thn_sebelumnya 0;
  1208.         foreach ($data_tahun_sebelumnya as $key => $value) {
  1209.             $jumlah_pk_thn_sebelumnya += $value['total_pk'];
  1210.             $jumlah_pr_thn_sebelumnya += $value['total_pr'];
  1211.             $jumlah_pp_thn_sebelumnya += $value['total_pp'];
  1212.             $jumlah_pemenang_thn_sebelumnya += $value['total_vendor_pemenang'];
  1213.             $total_nilai_thn_sebelumnya += $value['total_nilai'];
  1214.             $total_anggaran_thn_sebelumnya += $value['total_anggaran'];
  1215.             $total_hps_thn_sebelumnya += $value['total_hps'];
  1216.             $total_realisasi_thn_sebelumnya += $value['total_nilai_akhir'];
  1217.         }
  1218.         $saving_terhadap_anggaran_thn_sebelumnya $total_anggaran_thn_sebelumnya $total_realisasi_thn_sebelumnya;
  1219.         $saving_terhadap_hps_thn_sebelumnya $total_hps_thn_sebelumnya $total_realisasi_thn_sebelumnya;
  1220.         $saving_terhadap_anggaran_persen_thn_sebelumnya $total_anggaran_thn_sebelumnya ? ($saving_terhadap_anggaran_thn_sebelumnya $total_anggaran_thn_sebelumnya) * 100 0;
  1221.         $saving_terhadap_hps_persen $total_hps_thn_sebelumnya ? ($saving_terhadap_hps_thn_sebelumnya $total_hps_thn_sebelumnya) * 100 0;
  1222.         //current
  1223.         $data $this->getTabelLaporan($table'regional''tgl_approval_sppbj'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dananull);
  1224.         $jumlah_pk 0;
  1225.         $jumlah_pr 0;
  1226.         $jumlah_pp 0;
  1227.         $jumlah_pemenang 0;
  1228.         $total_nilai 0;
  1229.         $total_anggaran 0;
  1230.         $total_hps 0;
  1231.         $total_realisasi 0;
  1232.         $saving_terhadap_anggaran 0;
  1233.         $saving_terhadap_hps 0;
  1234.         $saving_terhadap_anggaran_persen 0;
  1235.         $saving_terhadap_hps_persen 0;
  1236.         foreach ($data as $key => $value) {
  1237.             $jumlah_pk += $value['total_pk'];
  1238.             $jumlah_pr += $value['total_pr'];
  1239.             $jumlah_pp += $value['total_pp'];
  1240.             $jumlah_pemenang += $value['total_vendor_pemenang'];
  1241.             $total_nilai += $value['total_nilai'];
  1242.             $total_anggaran += $value['total_anggaran'];
  1243.             $total_hps += $value['total_hps'];
  1244.             $total_realisasi += $value['total_nilai_akhir'];
  1245.         }
  1246.         $saving_terhadap_anggaran $total_anggaran $total_realisasi;
  1247.         $saving_terhadap_hps $total_hps $total_realisasi;
  1248.         $saving_terhadap_anggaran_persen $total_anggaran ? ($saving_terhadap_anggaran $total_anggaran) * 100 0;
  1249.         $saving_terhadap_hps_persen $total_hps ? ($saving_terhadap_hps $total_hps) * 100 0;
  1250.         // $res_dash = [
  1251.         //     'jumlah_pk' => $jumlah_pk,
  1252.         //     'jumlah_pr' => $jumlah_pr,
  1253.         //     'jumlah_pp' => $jumlah_pp,
  1254.         //     'jumlah_pemenang' => $jumlah_pemenang,
  1255.         //     'total_nilai' => $total_nilai,
  1256.         //     'total_anggaran' => $total_anggaran,
  1257.         //     'total_hps' => $total_hps,
  1258.         //     'total_realisasi' => $total_realisasi,
  1259.         //     'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
  1260.         //     'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
  1261.         //     'saving_thd_anggaran' => $saving_terhadap_anggaran,
  1262.         //     'saving_thd_hps' => $saving_terhadap_hps,
  1263.         //     'saving_thd_anggaran_persen' => round($saving_terhadap_anggaran_persen, 1),
  1264.         //     'saving_thd_hps_persen' => round($saving_terhadap_hps_persen, 1),
  1265.         //     'metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['jumlah'] : 0,
  1266.         //     'metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['jumlah'] : 0,
  1267.         //     'nilai_metode_tender' => isset($res_metode_pengadaan['Tender']['jumlah']) ? $res_metode_pengadaan['Tender']['total_nilai'] : 0,
  1268.         //     'nilai_metode_pl' => isset($res_metode_pengadaan['PL']['jumlah']) ? $res_metode_pengadaan['PL']['total_nilai'] : 0,
  1269.         // ];
  1270.         $res = [
  1271.             "saving_thd_anggaran" => $saving_terhadap_anggaran,
  1272.             "saving_thd_anggaran_sebelumnya" => $saving_terhadap_anggaran_thn_sebelumnya,
  1273.             "saving_thd_hps" => $saving_terhadap_hps,
  1274.             "saving_thd_hps_sebelumnya" => $saving_terhadap_hps_thn_sebelumnya
  1275.         ];
  1276.         return $this->json($res);
  1277.     }
  1278.     /**
  1279.      * @Route("/dashboard/card_waktu_proses", name="dashboard_card_waktu_proses", methods={"GET", "POST"})
  1280.      */
  1281.     public function card_waktu_proses(Request $requestManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1282.     {
  1283.         $tahun        $request->request->get('tahun');
  1284.         $tanggal_awal  $request->request->get('tanggal_awal');
  1285.         $tanggal_akhir $request->request->get('tanggal_akhir');
  1286.         $sumber_dana   $request->request->get('sumber_dana');
  1287.         $tipe_tahun    $request->request->get('tipe_tahun');
  1288.         $table 'v_cleansing_pk_vendor';
  1289.         $group 'plant';
  1290.         $hari_kerja_create_pk $this->getJumlahHariKerja($table'tgl_sinkron_pr_sap_ke_ips''tgl_submit_pk_ke_hps'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  1291.         $hari_kerja_hps $this->getJumlahHariKerja($table'tgl_submit_pk_ke_hps''tgl_submit_ke_pengadaan'null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  1292.         $hari_kerja_pengadaan $this->getJumlahHariKerja($table'tgl_submit_ke_pengadaan''tgl_approval_sppbj',  null$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  1293.         $hari_kerja_metode_pengadaan $this->getJumlahHariKerja($table'tgl_pelaksanaan_pp''tgl_approval_sppbj',  'metode_pengadaan'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  1294.         $res_metode = [];
  1295.         foreach ($hari_kerja_metode_pengadaan as $key => $value) {
  1296.             $res_metode[$value['tipe_pengadaan']] = $value['rata_rata_hari_kerja'];
  1297.         }
  1298.         $res_dash = [
  1299.             'hari_kerja_create_pk' => number_format($hari_kerja_create_pk[0]['rata_rata_hari_kerja'], 0),
  1300.             'hari_kerja_hps' => number_format($hari_kerja_hps[0]['rata_rata_hari_kerja']),
  1301.             'hari_kerja_pengadaan' => number_format($hari_kerja_pengadaan[0]['rata_rata_hari_kerja'], 0),
  1302.             'hari_kerja_tender' => isset($res_metode['Tender']) ? number_format($res_metode['Tender'], 0) : 0,
  1303.             'hari_kerja_pl' => isset($res_metode['PL']) ? number_format($res_metode['PL'], 0) : 0,
  1304.         ];
  1305.         return $this->render('backend/dashboard/_card_waktu_proses.html.twig', [
  1306.             'res_dash' => $res_dash
  1307.         ]);
  1308.     }
  1309.     /**
  1310.      * @Route("/dashboard/card_ungroup", name="dashboard_card_ungroup", methods={"GET", "POST"})
  1311.      */
  1312.     public function card_ungroup(Request $requestTPostingLaporanRepository $tPostingLaporanRepoManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1313.     {
  1314.         // print_r($tanggal2); exit;
  1315.         $tahun = ($request->get('tahun_anggaran')) ? $request->get('tahun_anggaran') : date("Y");
  1316.         // print_r($tahun); exit;
  1317.         $m_plant $this->getKategoriPlant();
  1318.         $tahun $request->get('tahun_anggaran');
  1319.         $tipeFilter $request->get('tipe_filter');
  1320.         if ($tipeFilter == 1) {
  1321.             // === MINGGUAN ===
  1322.             $start1 = new \DateTime($request->get('tanggal_1'));
  1323.             $end1 = clone $start1;
  1324.             $start2 = new \DateTime($request->get('tanggal_2'));
  1325.             $end2 = clone $start2;
  1326.         } elseif ($tipeFilter == 2) {
  1327.             // === BULANAN ===
  1328.             $tahun1 $request->get('tahun_1');
  1329.             $bulan1 $request->get('bulan_1');
  1330.             $tahun2 $request->get('tahun_2');
  1331.             $bulan2 $request->get('bulan_2');
  1332.             $start1 = new \DateTime("$tahun1-$bulan1-01");
  1333.             $end1 = (clone $start1)->modify('last day of this month');
  1334.             $start2 = new \DateTime("$tahun2-$bulan2-01");
  1335.             $end2 = (clone $start2)->modify('last day of this month');
  1336.         } elseif ($tipeFilter == 3) {
  1337.             // === TAHUNAN ===
  1338.             $tahun1 $request->get('tahunan_1');
  1339.             $tahun2 $request->get('tahunan_2');
  1340.             $start1 = new \DateTime("$tahun1-01-01");
  1341.             $end1 = new \DateTime("$tahun1-12-31");
  1342.             $start2 = new \DateTime("$tahun2-01-01");
  1343.             $end2 = new \DateTime("$tahun2-12-31");
  1344.         }
  1345.         // === Ambil hasil lewat repository ===
  1346.         $result1 $tPostingLaporanRepo->findByPeriode(
  1347.             $tahun,
  1348.             $start1->format('Y-m-d'),
  1349.             $end1->format('Y-m-d')
  1350.         );
  1351.         $result2 $tPostingLaporanRepo->findByPeriode(
  1352.             $tahun,
  1353.             $start2->format('Y-m-d'),
  1354.             $end2->format('Y-m-d')
  1355.         );
  1356.         $result1 = ($result1) ? json_decode($result1->getDataUngroup(), true) : [];
  1357.         $result2 = ($result2) ? json_decode($result2->getDataUngroup(), true) : [];
  1358.         // print_r($result1);
  1359.         // print_r($result2); exit;
  1360.         return $this->render('backend/dashboard/_card_perbandingan.html.twig', [
  1361.             'm_plant' => $m_plant,
  1362.             'result1' => $result1,
  1363.             'result2' => $result2
  1364.         ]);
  1365.     }
  1366.     /**
  1367.      * @Route("/dashboard/getPostingDates", name="dashboard_dates", methods={"GET", "POST"})
  1368.      */
  1369.     public function getPostingDates(Request $requestTPostingLaporanRepository $tPostingLaporanRepoManagerInterface $managerInterfaceMPlantRepository $mPlantRepo)
  1370.     {
  1371.         $dates $tPostingLaporanRepo->createQueryBuilder('t')
  1372.             ->select('t.tanggal')
  1373.             ->getQuery()
  1374.             ->getArrayResult();
  1375.         // ubah ke array string misalnya ["2025-10-02","2025-10-06"]
  1376.         $result array_map(fn($row) => $row['tanggal']->format('Y-m-d'), $dates);
  1377.         return new JsonResponse($result);
  1378.     }
  1379. }