feat: implement full-stack awards module with Filament management, database support, and localization.

This commit is contained in:
Ümit Tunç
2026-05-27 06:32:31 +03:00
parent 05e8059b5d
commit 3c92a81cfe
14 changed files with 1127 additions and 0 deletions
@@ -0,0 +1,100 @@
<?php
namespace App\Filament\Admin\Resources\Awards\Tables;
use Filament\Actions\BulkActionGroup;
use Filament\Actions\DeleteBulkAction;
use Filament\Actions\EditAction;
use Filament\Actions\ForceDeleteBulkAction;
use Filament\Actions\RestoreBulkAction;
use Filament\Tables\Columns\ImageColumn;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Columns\ToggleColumn;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Filters\TrashedFilter;
use Filament\Tables\Table;
class AwardsTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
ImageColumn::make('image')
->label(__('awards.table_image') ?? 'Logo')
->disk('public')
->square()
->size(50),
TextColumn::make('title')
->label(__('awards.table_title') ?? 'Ödül Başlığı')
->searchable()
->sortable()
->limit(40),
TextColumn::make('issuer')
->label(__('awards.table_issuer') ?? 'Veren Kurum')
->searchable()
->sortable()
->limit(30),
TextColumn::make('award_date')
->label(__('awards.table_date') ?? 'Ödül Tarihi')
->date('d.m.Y')
->sortable()
->alignCenter(),
TextColumn::make('category')
->label(__('awards.table_category') ?? 'Kategori')
->badge()
->formatStateUsing(fn (string $state): string => match ($state) {
'hackathon' => __('awards.category_hackathon') ?? 'Hackathon',
'export' => __('awards.category_export') ?? 'İhracat',
'innovation' => __('awards.category_innovation') ?? 'İnovasyon',
'design' => __('awards.category_design') ?? 'Tasarım',
default => __('awards.category_general') ?? 'Genel',
})
->sortable()
->alignCenter(),
ToggleColumn::make('is_featured')
->label(__('awards.table_is_featured') ?? 'Öne Çıkan')
->alignCenter(),
ToggleColumn::make('is_active')
->label(__('awards.table_is_active') ?? 'Aktif')
->alignCenter(),
TextColumn::make('sort_order')
->label(__('awards.sort_order_field') ?? 'Sıra')
->sortable()
->alignCenter(),
])
->filters([
TernaryFilter::make('is_active')
->label(__('awards.is_active_field') ?? 'Aktiflik Durumu'),
TernaryFilter::make('is_featured')
->label(__('awards.is_featured_field') ?? 'Öne Çıkarılma Durumu'),
TrashedFilter::make(),
])
->recordActions([
EditAction::make()
->label(__('awards.edit') ?? 'Düzenle'),
])
->actions([
// Individual actions can be put here if necessary
])
->toolbarActions([
BulkActionGroup::make([
DeleteBulkAction::make()
->label(__('awards.delete') ?? 'Sil'),
RestoreBulkAction::make()
->label(__('awards.restore') ?? 'Geri Yükle'),
ForceDeleteBulkAction::make()
->label(__('awards.force_delete') ?? 'Kalıcı Olarak Sil'),
]),
])
->defaultSort('sort_order', 'asc')
->reorderable('sort_order');
}
}