public static function table(Table $table): Table
{
// CEK HAK AKSES
$isAdmin = auth()->check() && auth()->user()->User === 'admin';
// SIAPKAN TOMBOL
$headerActions = $isAdmin ? [Tables\Actions\CreateAction::make()] : [];
$rowActions = $isAdmin ? [
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
] : [];
$bulkActions = $isAdmin ? [
Tables\Actions\BulkActionGroup::make([Tables\Actions\DeleteBulkAction::make()]),
] : [];
return $table
->headerActions($headerActions)
->columns([
// ... (biarkan kode columns Anda yang sudah ada di sini) ...
Tables\Columns\TextColumn::make('NoPlat')
->label('No. Plat')
->searchable()
->sortable()
->weight('bold')
->formatStateUsing(function ($record) {
$parts = [];
if ($record->DD) $parts[] = $record->DD;
if ($record->NoPlat) $parts[] = $record->NoPlat;
if ($record->EndPlat) $parts[] = $record->EndPlat;
return implode(' ', $parts) ?: '-';
}),
Tables\Columns\TextColumn::make('MerkKendaraan')->label('Merk/Model')->searchable(),
Tables\Columns\TextColumn::make('StnkNama')->label('Nama STNK')->searchable(),
Tables\Columns\TextColumn::make('NamaPJ')->label('Nama PJ')->searchable(),
Tables\Columns\TextColumn::make('TglPajakStnk')->label('Pajak STNK')->date('d M Y')->sortable(),
Tables\Columns\TextColumn::make('expired')
->label('Expired')
->badge()
->formatStateUsing(fn (string $state): string => match ($state) {
'True', '1' => 'Sudah Expired',
'False', '0' => 'Masih Berlaku',
default => $state,
})
->color(fn (string $state): string => match ($state) {
'True', '1' => 'danger',
'False', '0' => 'success',
default => 'gray',
})
->sortable(),
Tables\Columns\TextColumn::make('foto')
->label('Foto')
->html()
->getStateUsing(function ($record) {
$image = \DB::table('stnkimage')
->where('DD', $record->DD)
->where('NoPlat', $record->NoPlat)
->where('EndPlat', $record->EndPlat)
->first();
if ($image && $image->namaimage) {
$base64 = base64_encode($image->namaimage);
return '';
}
return '-';
}),
])
->filters([
// ... (biarkan kode filters Anda yang sudah ada di sini) ...
Tables\Filters\SelectFilter::make('bulan_pajak')
->label('Bulan Pajak')
->options([1 => 'Januari', 2 => 'Februari', 3 => 'Maret', 4 => 'April', 5 => 'Mei', 6 => 'Juni', 7 => 'Juli', 8 => 'Agustus', 9 => 'September', 10 => 'Oktober', 11 => 'November', 12 => 'Desember'])
->query(function ($query, array $data): \Illuminate\Database\Eloquent\Builder {
if ($data['value']) return $query->whereMonth('TglPajakStnk', $data['value']);
return $query;
}),
Tables\Filters\SelectFilter::make('tahun_pajak')
->label('Tahun Pajak')
->options(function () {
return \DB::table('stnk')->selectRaw('YEAR(TglPajakStnk) as tahun')->whereNotNull('TglPajakStnk')->distinct()->orderBy('tahun', 'desc')->pluck('tahun', 'tahun')->toArray();
})
->query(function ($query, array $data): \Illuminate\Database\Eloquent\Builder {
if ($data['value']) return $query->whereYear('TglPajakStnk', $data['value']);
return $query;
}),
])
->actions($rowActions)
->bulkActions($bulkActions);
}