url(route('filament.admin.resources.konfirmasi.tambah')) ->color('primary') ->icon('heroicon-o-clipboard-document-check'), ]; } public function mount(): void { if (blank($this->activeTab)) { $this->activeTab = 'tidak_terlacak'; } } public function table(Table $table): Table { return $table ->query( Konfirmasi::query() ->role() ->whereDate('tanggal', '>', now()->addMonth(-2)) ->orderBy('id', 'desc') ) ->columns([ TextColumn::make('id')->searchable(), TextColumn::make('tanggal') ->formatStateUsing(fn($state) => date("d-M-Y", strtotime($state))), TextColumn::make('nama')->searchable(), TextColumn::make('hp')->searchable(), TextColumn::make('rekening.nama_rekening') ->formatStateUsing( fn($record) => $record->rekening->nama_rekening . " - " . $record->rekening->no_rek ), TextColumn::make('dana') ->label("Nominal") ->searchable() ->formatStateUsing(fn($state) => number_format($state, 0, ',', '.')), TextColumn::make('status_konf'), ImageColumn::make("gambar")->label("Bukti TF") ->url(function ($state) { return asset("storage/" . $state); })->openUrlInNewTab(), // TextColumn::make('cs.nama_prioritas') ]) ->filters([ // ... ]) ->actions([ TableAction::make("Upload")->visible(fn($record) => !$record->gambar) ->accessSelectedRecords() ->form([ FileUpload::make('gambar') ->directory('uploads/bukti_transfer') ->acceptedFileTypes(['image/*'])->label('Bukti Transfer'), ]) ->action(function (array $data, Konfirmasi $record) { $record->gambar = $data["gambar"]; $record->save(); }), ]) ->bulkActions([ // ... ]); } public function getTabs(): array { return [ 'tidak_terlacak' => Tab::make() ->modifyQueryUsing( fn(Builder $query) => $query->expired() ), 'pending' => Tab::make() ->modifyQueryUsing( fn(Builder $query) => $query->pending() ), ]; } }