Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /** CONTROLLER **/
- public function datatable(Request $request)
- {
- $columns = array(
- 0 => 'arsip.id',
- 1 => 'code',
- 2 => 'nama',
- 3 => 'bidang.nama_bidang',
- 4 => 'pendidikan.nama_pendidikan',
- 5 => 'tgl_registrasi',
- 6 => 'status',
- );
- $totalData = Arsip::count();
- $totalFiltered = $totalData;
- $limit = $request->input('length');
- $start = $request->input('start');
- $order = $columns[$request->input('order.0.column')];
- $dir = $request->input('order.0.dir');
- //dataFilter
- $columnsFilter = $request->input('columnsFilter');
- $filterVal = $request->input('filterVal');
- if (empty($request->input('search.value'))) {
- $dataArsip = $this->arsip->datatableEmptySearch($order, $dir, $start, $limit, $columnsFilter, $filterVal);
- } else {
- $search = $request->input('search.value');
- $dataArsip = $this->arsip->datatableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal);
- $totalFiltered = $this->arsip->datatableCount($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal);
- }
- $data = array();
- if (!empty($dataArsip)) {
- $no = $start;
- foreach ($dataArsip as $arsip) {
- $keterangan = statusArsip($arsip->idArsip)["marking"];
- $encId = Crypt::encryptString($arsip->idArsip);
- $encPath = Crypt::encryptString($arsip->path);
- $no++;
- $nestedData['no'] = $no;
- $nestedData['code'] = $arsip->codeArsip;
- $nestedData['nama'] = $arsip->namaArsip;
- $nestedData['bidang'] = $arsip->nama_bidang;
- $nestedData['pendidikan'] = $arsip->nama_pendidikan == null ? ' - ' : $arsip->nama_pendidikan;
- $nestedData['registrasi'] = date('j M Y', strtotime($arsip->tglRegistrasiArsip));
- $nestedData['keterangan'] = $keterangan;
- $nestedData['action'] = '
- <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">
- <i class="fas fa-eye"></i>
- </button>
- <button type="button" data-id="' . $arsip->idArsip . '" class="btn btn-warning btn-circle btn-edit">
- <i class="fas fa-edit"></i>
- </button>
- <button type="button" data-id="' . $arsip->idArsip . '" class="btn btn-danger btn-circle btn-delete">
- <i class="fas fa-trash"></i>
- </button>
- ';
- $data[] = $nestedData;
- }
- }
- $json_data = array(
- "draw" => intval($request->input('draw')),
- "recordsTotal" => intval($totalData),
- "recordsFiltered" => intval($totalFiltered),
- "data" => $data,
- "order" => $order,
- "dir" => $dir,
- "dataArsip" => $dataArsip
- );
- return response()->json($json_data, 200);
- }
- /** Model **/
- public function datatableEmptySearch($order, $dir, $start, $limit, $columnsFilter, $filterVal)
- {
- $query = Arsip::select(
- 'arsip.id as idArsip',
- 'arsip.code as codeArsip',
- 'arsip.nama as namaArsip',
- 'arsip.tgl_registrasi as tglRegistrasiArsip',
- 'arsip.path',
- 'bidang.nama_bidang',
- 'pendidikan.nama_pendidikan'
- )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
- ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id');
- if (!empty($columnsFilter) && !empty($filterVal)) {
- $query->where($columnsFilter, $filterVal);
- }
- $query->orderBy($order, $dir)
- ->offset($start)
- ->limit($limit);
- return $dataArsip = $query->get();
- }
- private function _tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
- {
- $queryFilter = Arsip::select(
- 'arsip.id as idArsip',
- 'arsip.code as codeArsip',
- 'arsip.nama as namaArsip',
- 'arsip.tgl_registrasi as tglRegistrasiArsip',
- 'arsip.path',
- 'bidang.nama_bidang',
- 'pendidikan.nama_pendidikan'
- )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
- ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id')
- ->where($columnsFilter, $filterVal);
- // ini yang ingin digabungkan
- $query = Arsip::select(
- 'arsip.id as idArsip',
- 'arsip.code as codeArsip',
- 'arsip.nama as namaArsip',
- 'arsip.tgl_registrasi as tglRegistrasiArsip',
- 'arsip.path',
- 'bidang.nama_bidang',
- 'pendidikan.nama_pendidikan'
- )->leftJoin('bidang', 'arsip.bidang_id', '=', 'bidang.id')
- ->leftJoin('pendidikan', 'arsip.pendidikan_id', '=', 'pendidikan.id')
- ->where('arsip.code', 'LIKE', "%{$search}%")
- ->orWhere('arsip.nama', 'LIKE', "%{$search}%")
- ->orWhere('bidang.nama_bidang', 'LIKE', "%{$search}%")
- ->orWhere('pendidikan.nama_pendidikan', 'LIKE', "%{$search}%")
- ->orderBy($order, $dir)
- ->offset($start)
- ->limit($limit);
- return $query;
- }
- public function datatableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
- {
- return $this->_tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)->get();
- }
- public function datatableCount($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)
- {
- return $this->_tableSearch($order, $dir, $start, $limit, $search, $columnsFilter, $filterVal)->count();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement