src/Controller/Backend/LaporanController.php line 66

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Backend;
  3. use App\Controller\Base\BaseController;
  4. use App\Repository\THeaderRepository;
  5. use App\Repository\TPostingLaporanRepository;
  6. use Doctrine\Persistence\ManagerRegistry;
  7. use Dompdf\Dompdf;
  8. use Dompdf\Options;
  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\HttpFoundation\Response;
  16. use Symfony\Component\Security\Core\Security;
  17. class LaporanController extends BaseController
  18. {
  19.     private $pageName 'laporan';
  20.     /**
  21.      * @Route("/laporan",name="laporan", methods={"GET", "POST"})
  22.      */
  23.     public function index(Request $requestBreacrumbBuilder $builderSecurity $securityTHeaderRepository $tHeaderRepo)
  24.     {
  25.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  26.         $builder->add('Laporan');
  27.         $group = ($request->get('group')) ? $request->get('group') : 'kategori_plant';
  28.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  29.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  30.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  31.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  32.         $sumber_dana = ($request->get('sumber_dana')) ? $request->get('sumber_dana') : null;
  33.         // print_r($group); exit;
  34.         $last_update $tHeaderRepo->findOneBy(['id' => '4']);
  35.         $user $security->getUser()->getRoles();
  36.         // $data = $this->getTabelReport($group);
  37.         $data $this->getTabelLaporan('v_cleansing_pk_vendor'$group'tgl_verifikasi_pr'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  38.         $result = [];
  39.         foreach ($data as $key => $value) {
  40.             $result[$value['sumber_dana']][$key] = $value;
  41.         }
  42.         $result array_reverse($result);
  43.         // print_r($result); exit;
  44.         // print_r($result); exit;
  45.         // print_r($this->getCardDashboard('dalam_proses',true)); exit;
  46.         return $this->render('backend/laporan/index.html.twig', [
  47.             'page_name' => $this->pageName,
  48.             'user' => $user,
  49.             'group' => $group,
  50.             'tanggal_awal' => $tanggal_awal,
  51.             'tanggal_akhir' => $tanggal_akhir,
  52.             'tipe_tahun' => $tipe_tahun,
  53.             'tahun' => $tahun,
  54.             'result' => $result,
  55.             'last_update' => ($last_update) ?  $last_update->getUpdatedAt()->format("Y-m-d") : null
  56.         ]);
  57.     }
  58.     /**
  59.      * @Route("/laporan/comparasi",name="laporan_comparasi")
  60.      */
  61.     public function comparasi(Request $requestBreacrumbBuilder $builderTPostingLaporanRepository $tPostingLaporanRepoSecurity $security)
  62.     {
  63.         $builder->add('Dashboard '"dashboard", array(), "&nbsp;<i class='fa fa-home'></i>");
  64.         $builder->add('Comparasi Posting Sebelumnya');
  65.         $tanggal1 = ($request->get('tanggal1')) ? new \DateTimeImmutable($request->get('tanggal1')) : null;
  66.         $tanggal2 = ($request->get('tanggal2')) ? new \DateTimeImmutable($request->get('tanggal2')) : null;
  67.         // print_r($tanggal2); exit;
  68.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  69.         $group = ($request->get('group')) ? $request->get('group') : 'kategori_plant';
  70.         // print_r($group); exit;
  71.         $user $security->getUser()->getRoles();
  72.         $result1 $tPostingLaporanRepo->findOneBy(['tahun_anggaran' => $tahun'tanggal' => $tanggal1]);
  73.         $result2 $tPostingLaporanRepo->findOneBy(['tahun_anggaran' => $tahun'tanggal' => $tanggal2]);
  74.         $result1 = ($result1) ? json_decode($result1->getData(), true) : [];
  75.         $result2 = ($result2) ? json_decode($result2->getData(), true) : [];
  76.         $res1 = [];
  77.         foreach ($result1 as $key => $value) {
  78.             $res1[$value['sumber_dana']][$key] = $value;
  79.         }
  80.         $res1 array_reverse($res1);
  81.         $res2 = [];
  82.         foreach ($result2 as $key => $value) {
  83.             $res2[$value['sumber_dana']][$key] = $value;
  84.         }
  85.         $res2 array_reverse($res2);
  86.         // $res1 = ($result1) ? json_decode($result1->getData(),true) : null;
  87.         // $res2 = ($result2) ? json_decode($result2->getData(),true) : null;
  88.         // print_r($res2); exit;
  89.         //
  90.         $qb $tPostingLaporanRepo->createQueryBuilder('t')
  91.             ->select('t.tanggal, COUNT(t.id) as total')
  92.             ->groupBy('t.tanggal')
  93.              ->orderBy('t.tanggal''ASC');
  94.         $result_periode_posting $qb->getQuery()->getResult();
  95.         
  96.         return $this->render('backend/laporan/comparasi.html.twig', [
  97.             'page_name' => $this->pageName,
  98.             'user' => $user,
  99.             'tanggal1' => $tanggal1,
  100.             'tanggal2' => $tanggal2,
  101.             'group' => $group,
  102.             'tahun' => $tahun,
  103.             'result1' => $res1,
  104.             'result2' => $res2,
  105.             'result_periode_posting' => $result_periode_posting
  106.         ]);
  107.     }
  108.     /**
  109.      * @Route("/dashboard/download_pengunjung",name="dashboard_download_pengunjung")
  110.      */
  111.     public function downloadPengunjung(Request $requestManagerInterface $managerInterface)
  112.     {
  113.         if ($request->get('download')) {
  114.             $start_date $request->get('start_date');
  115.             $end_date $request->get('end_date');
  116.             $conn $this->getDoctrine()->getConnection();
  117.             $sql "SELECT deskripsi, created_at FROM t_log WHERE reff_name = 'homepage'";
  118.             if ($start_date) {
  119.                 $sql .= " and created_at >= '$start_date'";
  120.             }
  121.             if ($end_date) {
  122.                 $sql .= " and created_at <= '$end_date'";
  123.             }
  124.             $sql .= "ORDER BY id desc;";
  125.             $stmt $conn->query($sql);
  126.             $result $stmt->fetchAllAssociative();
  127.             $data = [["Deskripsi""Tanggal"]];
  128.             foreach ($result as $log) {
  129.                 $data[] = array_values($log);
  130.             }
  131.             $arrayToExcel $managerInterface->render($data, new SpreadsheetFromArrayProcessor('rekap pengunjung.xlsx'));
  132.             return $arrayToExcel;
  133.         }
  134.         return $this->render('backend/dashboard/download_pengunjung.html.twig');
  135.     }
  136.     /**
  137.      * @Route("/laporan/laporanDetail",name="laporan_detail")
  138.      */
  139.     public function laporanDetail(Request $requestManagerInterface $managerInterface)
  140.     {
  141.         $group = ($request->get('group')) ? $request->get('group') : 'kategori_plant';
  142.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  143.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  144.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  145.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  146.         $tahap $request->get('tahap');
  147.         $nama $request->get('nama');
  148.         $sumber_dana $request->get('sumber_dana');
  149.         if ($request->get('download')) {
  150.             if ($tahap == 'tahap_pemilihan_penyedia') {
  151.                 $data = [["no" => "NO""no_pr" => "NO PR""plant" => "PLAN""sumber_dana" => "SUMEBR DANA"'tahun_anggaran' => "Tahun Anggaran",  "anggaran" => "NILAI ANGGARAN""no_pk" => "NO PK""no_pp" => "NO PP"]];
  152.             } else {
  153.                 $data = [["no" => "NO""no_pr" => "NO PR""plant" => "PLAN""sumber_dana" => "SUMEBR DANA"'tahun_anggaran' => "TAHUN ANGGARAN",  "anggaran" => "NILAI ANGGARAN""no_pk" => "NO PK"]];
  154.             }
  155.             $table 'v_cleansing_pk_vendor';
  156.             $kolom_periode 'tgl_verifikasi_pr';
  157.             $result $this->getDataTableDetail(nullnull$_POST$group$nama$tahap$sumber_dana$table$kolom_periode$tanggal_awal$tanggal_akhir$tipe_tahun$tahun);
  158.             foreach ($result as $value) {
  159.                 $data[] = array_values($value);
  160.             }
  161.             $arrayToExcel $managerInterface->render($data, new SpreadsheetFromArrayProcessor('download_' $tahap '.xlsx'));
  162.             return $arrayToExcel;
  163.         } else {
  164.             return $this->render('backend/laporan/laporan_detail.html.twig', [
  165.                 'group' => $group,
  166.                 'tahap' => $tahap,
  167.                 'nama' => $nama,
  168.                 'sumber_dana' => $sumber_dana,
  169.                 'tanggal_awal' => $tanggal_awal,
  170.                 'tanggal_akhir' => $tanggal_akhir,
  171.                 'tipe_tahun' => $tipe_tahun,
  172.                 'tahun' => $tahun,
  173.             ]);
  174.         }
  175.     }
  176.     /**
  177.      * @Route("/laporan/detail_data_table", name="laporan_detail_datatable", methods={"GET", "POST"})
  178.      */
  179.     public function dataset_table(Request $request)
  180.     {
  181.         $item_per_page $_POST['length'];
  182.         $page = ($_POST['start'] / $item_per_page) + 1;
  183.         $page = ($page 1) * 10;
  184.         $group = ($request->get('group')) ? $request->get('group') : 'kategori';
  185.         $tanggal_awal = ($request->get('tanggal_awal')) ? $request->get('tanggal_awal') : date("Y") . "-01-01";
  186.         $tanggal_akhir = ($request->get('tanggal_akhir')) ? $request->get('tanggal_akhir') : date("Y-m-d");
  187.         $tahap $request->get('tahap');
  188.         $nama $request->get('nama');
  189.         $sumber_dana $request->get('sumber_dana');
  190.         $tahun = ($request->get('tahun')) ? $request->get('tahun') : date("Y");
  191.         $tipe_tahun = ($request->get('tipe_tahun')) ? $request->get('tipe_tahun') : 1;
  192.         $table 'v_cleansing_pk_vendor';
  193.         $kolom_periode 'tgl_verifikasi_pr';
  194.         $detail $this->getDataTableDetail(10$page$_POST$group$nama$tahap$sumber_dana$table$kolom_periode$tanggal_awal$tanggal_akhir$tipe_tahun$tahun);
  195.         $jumlah count($this->getDataTableDetail(nullnull$_POST$group$nama$tahap$sumber_dana$table$kolom_periode$tanggal_awal$tanggal_akhir$tipe_tahun$tahun));
  196.         $arrJson['aaData']                 = $detail;
  197.         $arrJson['iTotalRecords']        = $jumlah;
  198.         $arrJson['iTotalDisplayRecords'] = $jumlah;
  199.         return new JsonResponse($arrJson);
  200.     }
  201.     /**
  202.      * @Route("/laporan/export_pdf",name="laporan_export_pdf", methods={"GET", "POST"})
  203.      */
  204.     public function export_pdf(Request $requestBreacrumbBuilder $builderSecurity $securityTHeaderRepository $tHeaderRepo)
  205.     {
  206.         $last_update $tHeaderRepo->findOneBy(['id' => '4']);
  207.         $data json_decode($request->getContent(), true);
  208.         $group = ($data['group']) ? $data['group'] : 'kategori_plant';
  209.         $tanggal_awal = ($data['tanggal_awal']) ? $data['tanggal_awal'] : date("Y") . "-01-01";
  210.         $tanggal_akhir = ($data['tanggal_akhir']) ? $data['tanggal_akhir'] : date("Y-m-d");
  211.         $tahun = ($data['tahun']) ? $data['tahun'] : date("Y");
  212.         $tipe_tahun = ($data['tipe_tahun']) ? $data['tipe_tahun'] : 1;
  213.         $sumber_dana =  null;
  214.         // print_r($group); exit;
  215.         $user $security->getUser()->getRoles();
  216.         // $data = $this->getTabelReport($group);
  217.         $data $this->getTabelLaporan('v_cleansing_pk_vendor'$group'tgl_verifikasi_pr'$tanggal_awal$tanggal_akhir$tipe_tahun$tahun$sumber_dana);
  218.         $result = [];
  219.         foreach ($data as $key => $value) {
  220.             $result[$value['sumber_dana']][$key] = $value;
  221.         }
  222.         $result array_reverse($result);
  223.         $html $this->renderView('backend/laporan/export_pdf.html.twig', [
  224.             'page_name' => $this->pageName,
  225.             'user' => $user,
  226.             'group' => $group,
  227.             'tanggal_awal' => $tanggal_awal,
  228.             'tanggal_akhir' => $tanggal_akhir,
  229.             'tipe_tahun' => $tipe_tahun,
  230.             'tahun' => $tahun,
  231.             'result' => $result,
  232.             'last_update' => ($last_update) ? $last_update->getUpdatedAt()->format("Y-m-d") : null
  233.         ]);
  234.         $options = new Options();
  235.         $options->set('isRemoteEnabled'true); // supaya bisa load css/js external
  236.         $dompdf = new Dompdf($options);
  237.         $dompdf->loadHtml($html);
  238.         $dompdf->setPaper('A4''landscape');
  239.         $dompdf->render();
  240.         return new Response(
  241.             $dompdf->stream('laporan.pdf', ["Attachment" => false]),
  242.             200,
  243.             ['Content-Type' => 'application/pdf']
  244.         );
  245.     }
  246.     // public function exportPdfDompdf(): Response
  247.     // {
  248.     //     $html = $this->renderView('report/export.html.twig', [
  249.     //         'judul' => 'Laporan PDF dengan Dompdf',
  250.     //     ]);
  251.     //     $options = new Options();
  252.     //     $options->set('isRemoteEnabled', true); // supaya bisa load css/js external
  253.     //     $dompdf = new Dompdf($options);
  254.     //     $dompdf->loadHtml($html);
  255.     //     $dompdf->setPaper('A4', 'portrait');
  256.     //     $dompdf->render();
  257.     //     return new Response(
  258.     //         $dompdf->stream('laporan.pdf', ["Attachment" => false]),
  259.     //         200,
  260.     //         ['Content-Type' => 'application/pdf']
  261.     //     );
  262.     // }
  263. }