Files
hoshpoint-backend/app/Filament/Resources/TemplateGenerations/Actions/RetryGenerationAction.php

42 lines
1.6 KiB
PHP

<?php
namespace App\Filament\Resources\TemplateGenerations\Actions;
use App\Enums\TemplateGenerationStatus;
use App\Jobs\GenerateTemplateJob;
use App\Models\TemplateGeneration;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Support\Icons\Heroicon;
/**
* Re-runs the pptx fill step for a failed generation using its already-stored
* values (including any AI-generated text), without calling the AI service again.
*/
class RetryGenerationAction
{
public static function make(): Action
{
return Action::make('retry')
->label('تلاش دوباره')
->icon(Heroicon::OutlinedArrowPath)
->color('warning')
->requiresConfirmation()
->modalDescription('فایل پاورپوینت با همان محتوایی که قبلاً (از جمله متن‌های تولیدشده با هوش مصنوعی) ذخیره شده، دوباره ساخته می‌شود. نیازی به تماس مجدد با هوش مصنوعی نیست.')
->visible(fn (TemplateGeneration $record): bool => $record->status === TemplateGenerationStatus::Failed)
->action(function (TemplateGeneration $record): void {
$record->update([
'status' => TemplateGenerationStatus::Pending,
'error_message' => null,
]);
GenerateTemplateJob::dispatch($record);
Notification::make()
->title('درخواست دوباره ارسال شد')
->success()
->send();
});
}
}