Remove obsolete Livewire fuel search components and consolidate pricing tiers
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (8.3) (push) Has been cancelled
tests / ci (8.4) (push) Has been cancelled
tests / ci (8.5) (push) Has been cancelled

- Delete unused Livewire Search test and fuel type select Blade component
- Move subscription webhook listener from EventServiceProvider to AppServiceProvider
- Add FUEL_TYPES global config to app layout for client-side use
- Add Billable trait to User model and include email_verified_at in fillable
- Implement monthly/annual cadence toggle with pricing display and smart CTA routing on homepage
- Update VerifyApiKeyMiddlewareTest to use e10 instead of petrol
- Refactor PollFuelPrices to auto-refresh stale stations based on last_seen_at
- Add incremental polling with cached timestamp and effective-start-timestamp param to FuelPriceService
- Normalize amenities/fuel_types from API objects to flat arrays, skip stations missing required fields
- Log response body on API failures in ApiLogger
- Default homepage sort to 'reliable' instead of 'price'
This commit is contained in:
Ovidiu U
2026-04-20 14:12:15 +01:00
parent aec547cd86
commit 5acb99c9e3
33 changed files with 739 additions and 391 deletions

View File

@@ -3,22 +3,26 @@
namespace App\Console\Commands;
use App\Events\PricesUpdatedEvent;
use App\Models\Station;
use App\Services\FuelPriceService;
use Illuminate\Console\Command;
use Illuminate\Support\Carbon;
use Throwable;
class PollFuelPrices extends Command
{
protected $signature = 'fuel:poll {--full : Also refresh station metadata}';
protected $signature = 'fuel:poll {--full : Force refresh station metadata before polling}';
protected $description = 'Poll the Fuel Finder API for latest prices';
public function handle(FuelPriceService $service): int
{
$fullRefresh = (bool) $this->option('full');
$lastRefresh = Station::max('last_seen_at');
$stationsStale = $lastRefresh === null || Carbon::parse($lastRefresh)->isBefore(today());
try {
if ($fullRefresh) {
if ($fullRefresh || $stationsStale) {
$this->info('Refreshing station metadata...');
$service->refreshStations();
}