Advertisement
sanca

custom datatable

Jan 11th, 2021
1,057
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 6.21 KB | None | 0 0
  1. /** CONTROLLER **/
  2. public function datatable(Request $request)
  3.     {
  4.         $columns = array(
  5.             0 => 'arsip.id',
  6.             1 => 'code',
  7.             2 => 'nama',
  8.             3 => 'bidang.nama_bidang',
  9.             4 => 'pendidikan.nama_pendidikan',
  10.             5 => 'tgl_registrasi',
  11.             6 => 'status',
  12.         );
  13.         $totalData = Arsip::count();
  14.  
  15.         $totalFiltered = $totalData;
  16.  
  17.         $limit = $request->input('length');
  18.         $start = $request->input('start');
  19.         $order = $columns[$request->input('order.0.column')];
  20.         $dir = $request->input('order.0.dir');
  21.  
  22.         //dataFilter
  23.         $columnsFilter = $request->input('columnsFilter');
  24.         $filterVal = $request->input('filterVal');
  25.  
  26.  
  27.  
  28.         if (empty($request->input('search.value'))) {
  29.             $dataArsip = $this->arsip->datatableEmptySearch($order, $dir, $start, $limit, $columnsFilter, $filterVal);
  30.         } else {
  31.             $search = $request->input('search.value');
  32.             $dataArsip = $this->arsip->datatableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal);
  33.  
  34.  
  35.             $totalFiltered = $this->arsip->datatableCount($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal);
  36.         }
  37.  
  38.  
  39.  
  40.         $data = array();
  41.         if (!empty($dataArsip)) {
  42.             $no = $start;
  43.             foreach ($dataArsip as $arsip) {
  44.  
  45.  
  46.                 $keterangan = statusArsip($arsip->idArsip)["marking"];
  47.  
  48.                 $encId = Crypt::encryptString($arsip->idArsip);
  49.                 $encPath = Crypt::encryptString($arsip->path);
  50.  
  51.                 $no++;
  52.                 $nestedData['no'] = $no;
  53.                 $nestedData['code'] = $arsip->codeArsip;
  54.                 $nestedData['nama'] = $arsip->namaArsip;
  55.                 $nestedData['bidang'] = $arsip->nama_bidang;
  56.                 $nestedData['pendidikan'] = $arsip->nama_pendidikan == null ? ' - ' : $arsip->nama_pendidikan;
  57.                 $nestedData['registrasi'] = date('j M Y', strtotime($arsip->tglRegistrasiArsip));
  58.                 $nestedData['keterangan'] = $keterangan;
  59.                 $nestedData['action'] = '
  60.                        <button data-file="' . route("arsip.show", $encPath) . '" data-enc="' . route('arsip.download', ['enc1' => $encId, 'enc2' => $encPath]) . '" class="btn btn-primary btn-circle btn-view" title="View Arsip">
  61.                            <i class="fas fa-eye"></i>
  62.                        </button>
  63.  
  64.                            <button type="button" data-id="' . $arsip->idArsip . '"  class="btn btn-warning btn-circle btn-edit">
  65.                                <i class="fas fa-edit"></i>
  66.                            </button>
  67.                            <button type="button" data-id="' . $arsip->idArsip . '" class="btn btn-danger btn-circle btn-delete">
  68.                                <i class="fas fa-trash"></i>
  69.                            </button>
  70.                            ';
  71.  
  72.                 $data[] = $nestedData;
  73.             }
  74.         }
  75.  
  76.         $json_data = array(
  77.             "draw"            => intval($request->input('draw')),
  78.             "recordsTotal"    => intval($totalData),
  79.             "recordsFiltered" => intval($totalFiltered),
  80.             "data"            => $data,
  81.             "order"           => $order,
  82.             "dir" => $dir,
  83.             "dataArsip" => $dataArsip
  84.         );
  85.  
  86.  
  87.         return response()->json($json_data, 200);
  88.     }
  89.  
  90. /** Model **/
  91. public function datatableEmptySearch($order, $dir, $start, $limit, $columnsFilter, $filterVal)
  92.     {
  93.  
  94.         $query = Arsip::select(
  95.             'arsip.id as idArsip',
  96.             'arsip.code as codeArsip',
  97.             'arsip.nama as namaArsip',
  98.             'arsip.tgl_registrasi as tglRegistrasiArsip',
  99.             'arsip.path',
  100.             'bidang.nama_bidang',
  101.             'pendidikan.nama_pendidikan'
  102.         )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
  103.             ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id');
  104.  
  105.         if (!empty($columnsFilter) && !empty($filterVal)) {
  106.             $query->where($columnsFilter, $filterVal);
  107.         }
  108.         $query->orderBy($order, $dir)
  109.             ->offset($start)
  110.             ->limit($limit);
  111.  
  112.  
  113.         return $dataArsip = $query->get();
  114.     }
  115.  
  116.     private function _tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
  117.     {
  118.         $queryFilter = Arsip::select(
  119.             'arsip.id as idArsip',
  120.             'arsip.code as codeArsip',
  121.             'arsip.nama as namaArsip',
  122.             'arsip.tgl_registrasi as tglRegistrasiArsip',
  123.             'arsip.path',
  124.             'bidang.nama_bidang',
  125.             'pendidikan.nama_pendidikan'
  126.         )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
  127.             ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id')
  128.             ->where($columnsFilter, $filterVal);
  129.  
  130. // ini yang ingin digabungkan
  131.  
  132.         $query = Arsip::select(
  133.             'arsip.id as idArsip',
  134.             'arsip.code as codeArsip',
  135.             'arsip.nama as namaArsip',
  136.             'arsip.tgl_registrasi as tglRegistrasiArsip',
  137.             'arsip.path',
  138.             'bidang.nama_bidang',
  139.             'pendidikan.nama_pendidikan'
  140.         )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
  141.             ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id')
  142.             ->where('arsip.code', 'LIKE', "%{$search}%")
  143.             ->orWhere('arsip.nama', 'LIKE', "%{$search}%")
  144.             ->orWhere('bidang.nama_bidang', 'LIKE', "%{$search}%")
  145.             ->orWhere('pendidikan.nama_pendidikan', 'LIKE', "%{$search}%")
  146.             ->orderBy($order, $dir)
  147.             ->offset($start)
  148.             ->limit($limit);
  149.  
  150.         return $query;
  151.     }
  152.  
  153.     public function datatableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
  154.     {
  155.  
  156.         return $this->_tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)->get();
  157.     }
  158.  
  159.     public function datatableCount($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
  160.     {
  161.         return $this->_tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)->count();
  162.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement