Add all files
This commit is contained in:
51
app/Admin/Widgets/Support.php
Normal file
51
app/Admin/Widgets/Support.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Admin\Widgets;
|
||||
|
||||
use App\Admin\Resources\TicketResource;
|
||||
use App\Models\Ticket;
|
||||
use Filament\Tables;
|
||||
use Filament\Tables\Table;
|
||||
use Filament\Widgets\TableWidget as BaseWidget;
|
||||
|
||||
class Support extends BaseWidget
|
||||
{
|
||||
protected static ?string $pollingInterval = '30s';
|
||||
|
||||
public function table(Table $table): Table
|
||||
{
|
||||
return $table
|
||||
->query(
|
||||
Ticket::query()
|
||||
->where('status', '!=', 'closed')
|
||||
->with('user')
|
||||
->withMax('messages', 'created_at')
|
||||
->orderByDesc('messages_max_created_at')
|
||||
->limit(5)
|
||||
)
|
||||
->columns([
|
||||
Tables\Columns\TextColumn::make('subject')
|
||||
->label('Subject'),
|
||||
Tables\Columns\TextColumn::make('status')
|
||||
->label('Status')
|
||||
->badge()
|
||||
->color(fn (Ticket $record) => match ($record->status) {
|
||||
'open' => 'success',
|
||||
'closed' => 'danger',
|
||||
'replied' => 'warning',
|
||||
})
|
||||
->formatStateUsing(fn (string $state) => ucfirst($state)),
|
||||
Tables\Columns\TextColumn::make('user.name')
|
||||
->label('User'),
|
||||
Tables\Columns\TextColumn::make('created_at')
|
||||
->label('Created At'),
|
||||
])
|
||||
->recordUrl(fn (Ticket $record) => TicketResource::getUrl('edit', ['record' => $record]))
|
||||
->paginated(false);
|
||||
}
|
||||
|
||||
public static function canView(): bool
|
||||
{
|
||||
return auth()->user()->hasPermission('admin.widgets.support');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user