filter(function ($query) { if (request()->has('search')) { $search = request()->get('search'); $query->where('nomor_rekening', 'like', "%" . $search['value'] . "%") ->orWhere('registered_at', 'like', "%" . $search['value'] . "%") ->orWhereRelation('debitur', 'name', 'like', "%" . $search['value'] . "%") ->orWhereRelation('debitur', 'kode', 'like', "%" . $search['value'] . "%") ->orWhereRelation('branch', 'name', 'like', "%" . $search['value'] . "%") ->orWhereRelation('branch', 'kode', 'like', "%" . $search['value'] . "%") ->orWhereRelation('loan_type', 'name', 'like', "%" . $search['value'] . "%") ->orWhereRelation('loan_type', 'kode', 'like', "%" . $search['value'] . "%") ->orWhereRelation('currency', 'name', 'like', "%" . $search['value'] . "%") ->orWhereRelation('currency', 'kode', 'like', "%" . $search['value'] . "%"); } })->addIndexColumn()->editColumn('registered_at', function ($row) { $date = Carbon::create($row->registered_at); return $date->locale('id')->translatedFormat('d F Y'); })->editColumn('debitur', function ($row) { $debitur = null; if($row->debitur_id){ $debitur = Debitur::find($row->debitur_id); } return $debitur->id ? $debitur->kode.' - '.$debitur->name : '-'; })->editColumn('branch', function ($row) { $branch = null; if($row->branch_id){ $branch = Branch::find($row->branch_id); } return $branch->id ? $branch->kode.' - '.$branch->name : '-'; })->editColumn('product', function ($row) { $product = null; if($row->loan_type_id){ $product = LoanType::find($row->loan_type_id); } return $product->id ? $product->kode.' - '.$product->name : '-'; })->editColumn('currency', function ($row) { return $row->currency_id ? Currency::find($row->currency_id)->name : '-'; })->editColumn('status', function ($row) { $status = $row->status ? 'Aktif' : 'Tidak Aktif'; $oto = $row->authorized_at !== null ? 'Authorised' : 'Not Authorised'; return $status . ' ' . $oto; })->rawColumns(['status'])->setRowId('id'); } /** * Get the query source of dataTable. */ public function query(Rekening $model) : QueryBuilder { return $model->newQuery(); } /** * Optional method if you want to use the html builder. */ public function html() : HtmlBuilder { return $this->builder() ->setTableId('rekening-table') ->columns($this->getColumns()) ->minifiedAjax() ->stateSave(false) ->responsive() ->autoWidth(true) ->orderBy(1) ->parameters([ 'scrollX' => false, 'drawCallback' => 'function() { KTMenu.createInstances(); }', ]) ->addTableClass('align-middle table-row-dashed fs-6 gy-5') ->drawCallback("function() {" . file_get_contents(Module::getModulePath('writeoff') . 'Resources/views/parameter/debitur/_draw-scripts.js') . "}"); } /** * Get the dataTable columns definition. */ public function getColumns() : array { return [ Column::make('DT_RowIndex')->title('No')->orderable(false)->searchable(false), Column::make('nomor_rekening')->title('Nomor Rekening'), Column::make('debitur')->title('Debitur'), Column::make('branch')->title('Cabang'), Column::make('product')->title('Produk'), Column::make('currency')->title('Mata Uang'), Column::make('registered_at')->title('Tanggal Buka Rekening'), Column::make('status')->title('Status'), ]; } /** * Get the filename for export. */ protected function filename() : string { return 'Rekening_' . date('YmdHis'); } }