with(['document']); return (new EloquentDataTable($query)) ->filter(function ($query) { if (request()->has('search')) { $search = request()->get('search'); if (Auth::user()->hasRole('dd')) { $query->orWhereRelation('document', 'directorat_id', Auth::user()->directorat_id); $query->whereIn('status', [0, 4, 6, 9]); } else if (Auth::user()->hasRole('eo')) { $query->orWhereRelation('document', 'sub_directorat_id', Auth::user()->sub_directorat_id); } $query->where(function ($query) use ($search) { $query->where('kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document', 'kode_dus', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document', 'kode_odner', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.directorat', 'kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.directorat', 'name', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_directorat', 'kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_directorat', 'name', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.job', 'kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.job', 'name', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_job', 'kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_job', 'name', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_sub_job', 'kode', 'like', "%" . $search['value'] . "%"); $query->orWhereRelation('document.sub_sub_job', 'name', 'like', "%" . $search['value'] . "%"); $query->orWhere('tanggal_dokumen', 'like', "%" . $search['value'] . "%"); $query->orWhere('tanggal_upload', 'like', "%" . $search['value'] . "%"); $query->orWhere('nama_nasabah', 'like', "%" . $search['value'] . "%"); $query->orWhere('no_rekening', 'like', "%" . $search['value'] . "%"); $query->orWhere('no_cif', 'like', "%" . $search['value'] . "%"); $query->orWhere('group', 'like', "%" . $search['value'] . "%"); $query->orWhere('nomor_dokumen', 'like', "%" . $search['value'] . "%"); $query->orWhere('perihal', 'like', "%" . $search['value'] . "%"); $query->orWhere('kode_cabang', 'like', "%" . $search['value'] . "%"); $query->orWhere('jumlah_halaman', 'like', "%" . $search['value'] . "%"); $query->orWhere('custom_field_1', 'like', "%" . $search['value'] . "%"); $query->orWhere('custom_field_2', 'like', "%" . $search['value'] . "%"); $query->orWhere('custom_field_3', 'like', "%" . $search['value'] . "%"); $query->orWhere('custom_field_4', 'like', "%" . $search['value'] . "%"); $query->orWhere('no_urut', 'like', "%" . $search['value'] . "%"); $query->orWhere('kategori', 'like', "%" . $search['value'] . "%"); $query->orWhere('keterangan', 'like', "%" . $search['value'] . "%"); }); } if (request()->has('tanggalawal')) { if (request()->get('tanggalawal') != null) { $query->where('tanggal_dokumen', '>=', Carbon::parse(request()->get('tanggalawal'))->format('Y-m-d')); } } if (request()->has('tanggalakhir')) { if (request()->get('tanggalakhir') != null) { $query->where('tanggal_dokumen', '<=', Carbon::parse(request()->get('tanggalakhir'))->format('Y-m-d')); } } }) ->addColumn('kode_dus', function ($model) { return $model->document->kode_dus; }) ->addColumn('kode_odner', function ($model) { return $model->document->kode_odner; }) ->addColumn('tanggal_dokumen', function ($model) { $dt = Carbon::create($model->tanggal_dokumen); return $dt->isoFormat('D MMMM Y H:mm:ss'); }) ->addColumn('tanggal_upload', function ($model) { $dt = Carbon::create($model->tanggal_upload); return $dt->isoFormat('D MMMM Y H:mm:ss'); }) ->addColumn('directorat', function ($model) { return $model->document->directorat->kode . ' - ' . $model->document->directorat->name; }) ->addColumn('sub_directorat', function ($model) { return $model->document->sub_directorat->kode . ' - ' . $model->document->sub_directorat->name; }) ->addColumn('job', function ($model) { return $model->document->job->kode . ' - ' . $model->document->job->name; }) ->addColumn('sub_job', function ($model) { return $model->document->sub_job->kode . ' - ' . $model->document->sub_job->name; }) ->addColumn('sub_sub_job', function ($model) { return $model->document->sub_sub_job->kode . ' - ' . $model->document->sub_sub_job->name; }) ->addColumn('tanggal_approve', function ($model) { if ($model->approved_at) { $dt = Carbon::create($model->approved_at); return $dt->isoFormat('D MMMM Y H:mm:ss'); } return "-"; }) ->addColumn('approved_by', function ($model) { return $model->approved->name ?? ""; }) ->addColumn('status', function ($model) { if ($model->status == 1) { return 'Approved'; } else if ($model->status == 0) { return 'Menunggu Approval'; } else if ($model->status == 3) { return 'Rejected'; } else if ($model->status == 4) { return 'Approved Request Download'; } else if ($model->status == 5) { return 'Approved Download Approved'; } else if ($model->status == 6) { return 'Approved Request Delete'; } else if ($model->status == 7) { return 'Approved Request Delete'; } else if ($model->status == 8) { return 'Deleted'; } else if ($model->status == 9) { return 'Approved Request Non-Aktif'; } }) ->addIndexColumn() ->rawColumns(['status', 'action']) ->addColumn('action', 'cetaklabel::app.document._action') ->setRowId('id'); } /** * Get the query source of dataTable. */ public function query(DocumentDetail $model) : QueryBuilder { return $model->newQuery(); $route = explode("/", parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)); return $model->newQuery()->where('documents.kode_odner', $route[2]); } /** * Optional method if you want to use the html builder. */ public function html() : HtmlBuilder { return $this->builder() ->setTableId('document-table') ->columns($this->getColumns()) ->minifiedAjax() ->stateSave(false) ->responsive() ->autoWidth(true) ->orderBy(1) ->parameters([ 'scrollX' => true, 'drawCallback' => 'function() { KTMenu.createInstances(); }', ]) ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); } /** * Get the dataTable columns definition. */ public function getColumns() : array { return [ Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), Column::make('kode')->title('Kode File'), Column::make('kode_dus')->title('Kode Dus'), Column::make('kode_odner')->title('Kode Odner'), Column::make('kategori'), Column::make('nomor_dokumen'), Column::make('tanggal_dokumen'), Column::make('jumlah_halaman'), Column::make('tanggal_approve')->className('none'), Column::make('approved_by')->className('none'), Column::make('directorat')->title('Direktorat')->className('none'), Column::make('sub_directorat')->title('Sub Direktorat')->className('none'), Column::make('job')->title('Jenis Pekerjaan')->className('none'), Column::make('sub_job')->title('Sub Jenis Pekerjaan')->className('none'), Column::make('sub_sub_job')->title('Sub Sub Jenis Pekerjaan')->className('none'), Column::make('tanggal_upload')->className('none'), Column::make('perihal')->className('none'), Column::make('keterangan')->className('none'), Column::computed('status'), Column::computed('action') ->exportable(false) ->printable(false) ->addClass('text-center'), ]; } /** * Get the filename for export. */ protected function filename() : string { return 'Document_' . date('YmdHis'); } }