filter(function ($query) { if (request()->has('search')) { $search = request()->get('search'); $query->where('kode', 'like', "%" . $search['value'] . "%") ->orWhere('name', 'like', "%" . $search['value'] . "%") ->orWhereRelation('directorat', 'name', 'like', '%' . $search['value'] . '%') ->orWhereRelation('sub_directorat', 'name', 'like', '%' . $search['value'] . '%'); } }) ->addIndexColumn() ->addColumn('directorat', function ($job) { return $job->directorat->name; }) ->addColumn('sub_directorat', function ($job) { return $job->sub_directorat->name; }) ->addColumn('craeted_at', function ($model) { return $model->created_at !== null ? Carbon::parse($model->created_at)->format('d F Y H:i:s') : '-'; }) ->addColumn('created_by', function ($model) { return $model->created_by ? $model->creator->name : '-'; }) ->addColumn('approved_at', function ($model) { return $model->approved_at !== null ? Carbon::parse($model->approved_at)->format('d F Y H:i:s') : '-'; }) ->addColumn('approved_by', function ($model) { return $model->approved_by ? User::find($model->approved_by)->name : '-'; }) ->addColumn('status', 'cetaklabel::masters.directorat._status') ->addColumn('action', 'cetaklabel::masters.job._action') ->rawColumns(['status', 'action']) ->setRowId('id'); } /** * Get the query source of dataTable. */ public function query(Job $model) : QueryBuilder { return $model->newQuery(); } /** * Optional method if you want to use the html builder. */ public function html() : HtmlBuilder { return $this->builder() ->setTableId('job-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('directorat'), Column::make('sub_directorat'), Column::make('kode'), Column::make('name'), Column::make('craeted_at')->className('none'), Column::make('created_by')->className('none'), Column::make('approved_at')->className('none'), Column::make('approved_by')->className('none'), Column::computed('status') ->exportable(false) ->printable(false) ->width(60) ->addClass('text-center'), Column::computed('action') ->exportable(false) ->printable(false) ->width(250) ->addClass('text-center'), ]; } /** * Get the filename for export. */ protected function filename() : string { return 'Job_' . date('YmdHis'); } }