43 lines
1.5 KiB
PHP
43 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Filament\Resources\OilPredictionResource\Pages;
|
|
|
|
use App\Filament\Resources\OilPredictionResource;
|
|
use Filament\Actions\Action;
|
|
use Filament\Notifications\Notification;
|
|
use Filament\Resources\Pages\ListRecords;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
|
|
class ListOilPredictions extends ListRecords
|
|
{
|
|
protected static string $resource = OilPredictionResource::class;
|
|
|
|
protected function getHeaderActions(): array
|
|
{
|
|
return [
|
|
Action::make('runPrediction')
|
|
->label('Run Prediction Now')
|
|
->icon('heroicon-o-cpu-chip')
|
|
->requiresConfirmation()
|
|
->modalHeading('Run oil price prediction?')
|
|
->modalDescription('This will fetch the latest FRED prices and generate a new prediction. May take a few seconds.')
|
|
->action(function () {
|
|
$result = Artisan::call('oil:predict', ['--fetch' => true]);
|
|
|
|
if ($result === 0) {
|
|
Notification::make()
|
|
->title('Prediction generated successfully')
|
|
->success()
|
|
->send();
|
|
} else {
|
|
Notification::make()
|
|
->title('Prediction failed')
|
|
->body('Check API Logs for details.')
|
|
->danger()
|
|
->send();
|
|
}
|
|
}),
|
|
];
|
|
}
|
|
}
|