Files
hoshpoint-backend/app/Filament/Resources/Templates/RelationManagers/GenerationsRelationManager.php

72 lines
2.9 KiB
PHP

<?php
namespace App\Filament\Resources\Templates\RelationManagers;
use App\Enums\TemplateGenerationStatus;
use App\Filament\Resources\TemplateGenerations\Actions\DownloadGenerationAction;
use App\Filament\Resources\TemplateGenerations\Actions\RetryGenerationAction;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
class GenerationsRelationManager extends RelationManager
{
protected static string $relationship = 'generations';
protected static ?string $title = 'تولیدها';
protected static ?string $modelLabel = 'تولید';
protected static ?string $pluralModelLabel = 'تولیدها';
public function table(Table $table): Table
{
return $table
->recordTitleAttribute('uuid')
->columns([
TextColumn::make('uuid')
->label('شناسه')
->searchable()
->copyable(),
TextColumn::make('status')
->label('وضعیت')
->badge()
->formatStateUsing(fn (TemplateGenerationStatus $state): string => $state->label())
->color(fn (TemplateGenerationStatus $state): string => match ($state) {
TemplateGenerationStatus::Pending => 'gray',
TemplateGenerationStatus::Processing => 'warning',
TemplateGenerationStatus::Completed => 'success',
TemplateGenerationStatus::Failed => 'danger',
}),
TextColumn::make('requester.name')
->label('درخواست‌دهنده')
->placeholder('—'),
TextColumn::make('error_message')
->label('خطا')
->limit(40)
->placeholder('—'),
TextColumn::make('created_at')
->label('تاریخ')
->dateTime()
->sortable(),
])
->defaultSort('created_at', 'desc')
->filters([
SelectFilter::make('status')
->label('وضعیت')
->options([
TemplateGenerationStatus::Pending->value => TemplateGenerationStatus::Pending->label(),
TemplateGenerationStatus::Processing->value => TemplateGenerationStatus::Processing->label(),
TemplateGenerationStatus::Completed->value => TemplateGenerationStatus::Completed->label(),
TemplateGenerationStatus::Failed->value => TemplateGenerationStatus::Failed->label(),
]),
])
->recordActions([
DownloadGenerationAction::make(),
RetryGenerationAction::make(),
])
->toolbarActions([]);
}
}