public static function table(Table $table): Table { // 1. CEK HAK AKSES DI SINI (Paling Atas) $isAdmin = auth()->check() && auth()->user()->User === 'admin'; // 2. SIAPKAN TOMBOL BERDASARKAN HAK AKSES // Jika Admin, buat tombolnya. Jika bukan Admin, biarkan kosong (array []). $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(), ]), ] : []; // 3. KEMBALIKAN TABEL DENGAN TOMBOL YANG SUDAH DISELEKSI return $table ->headerActions($headerActions) ->columns([ 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() ->searchable(query: function (\Illuminate\Database\Eloquent\Builder $query, string $search): \Illuminate\Database\Eloquent\Builder { $bulanMap = [ 'jan' => 1, 'januari' => 1, 'january' => 1, '1' => 1, '01' => 1, 'feb' => 2, 'februari' => 2, 'february' => 2, '2' => 2, '02' => 2, 'mar' => 3, 'maret' => 3, 'march' => 3, '3' => 3, '03' => 3, 'apr' => 4, 'april' => 4, '4' => 4, '04' => 4, 'mei' => 5, 'may' => 5, '5' => 5, '05' => 5, 'jun' => 6, 'juni' => 6, 'june' => 6, '6' => 6, '06' => 6, 'jul' => 7, 'juli' => 7, 'july' => 7, '7' => 7, '07' => 7, 'agu' => 8, 'ags' => 8, 'agustus' => 8, 'august' => 8, 'aug' => 8, '8' => 8, '08' => 8, 'sep' => 9, 'september' => 9, '9' => 9, '09' => 9, 'okt' => 10, 'oktober' => 10, 'october' => 10, 'oct' => 10, '10' => 10, 'nov' => 11, 'november' => 11, '11' => 11, 'des' => 12, 'desember' => 12, 'december' => 12, 'dec' => 12, '12' => 12, ]; $parts = preg_split('/\s+/', trim($search)); if (count($parts) === 2) { $bulanKey = strtolower($parts[0]); $tahun = $parts[1]; if (isset($bulanMap[$bulanKey]) && is_numeric($tahun)) { return $query->whereMonth('TglPajakStnk', $bulanMap[$bulanKey])->whereYear('TglPajakStnk', $tahun); } } try { $date = \Carbon\Carbon::parse($search); return $query->whereMonth('TglPajakStnk', $date->month)->whereYear('TglPajakStnk', $date->year); } catch (\Exception $e) { return $query->where('TglPajakStnk', 'like', "%{$search}%"); } }), 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([ 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; }), Tables\Filters\TernaryFilter::make('expired') ->label('Status Expired') ->trueLabel('Sudah Expired') ->falseLabel('Masih Berlaku') ->queries( true: fn ($query) => $query->where('expired', 'True')->orWhere('expired', '1'), false: fn ($query) => $query->where('expired', 'False')->orWhere('expired', '0'), blank: fn ($query) => $query, ), ]) ->actions($rowActions) ->bulkActions($bulkActions); } Kontrol Kendaraan

Let's get started

With so many options available to you,
we suggest you start with the following:

v13.24.0 View changelog