feat: add ApiResponse trait for standardized API responses

chore: update composer dependencies to include phppresentation

chore: update composer.lock after adding phppresentation

feat: create categories migration for category management

feat: create templates migration for template storage

feat: create template generations migration for tracking template usage

feat: create template keys migration for template customization

feat: create notifications migration for user notifications

feat: update API routes for categories, templates, and user profile management

docs: update API documentation to include new endpoints for profile and wallet
This commit is contained in:
2026-07-07 01:03:12 +03:30
parent cf0e6f82fd
commit ae974c2afa
68 changed files with 3594 additions and 100 deletions

View File

@@ -0,0 +1,63 @@
<?php
namespace App\Filament\Resources\TemplateGenerations\Tables;
use App\Enums\TemplateGenerationStatus;
use Filament\Actions\ViewAction;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
class TemplateGenerationsTable
{
public static function configure(Table $table): Table
{
return $table
->columns([
TextColumn::make('uuid')
->label('شناسه')
->searchable()
->copyable(),
TextColumn::make('template.title')
->label('قالب')
->searchable()
->sortable(),
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('درخواست‌دهنده')
->searchable()
->placeholder('—'),
TextColumn::make('error_message')
->label('خطا')
->limit(50)
->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([
ViewAction::make(),
]);
}
}