- 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'
39 lines
1.3 KiB
PHP
39 lines
1.3 KiB
PHP
<?php
|
|
|
|
use App\Jobs\SendScheduledWhatsAppJob;
|
|
use Illuminate\Foundation\Inspiring;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
use Illuminate\Support\Facades\Schedule;
|
|
|
|
Artisan::command('inspire', function () {
|
|
$this->comment(Inspiring::quote());
|
|
})->purpose('Display an inspiring quote');
|
|
|
|
// Poll for price changes every 30 minutes — API updates within 30 min of any
|
|
// change. The command auto-refreshes station metadata once per day on the
|
|
// first poll after midnight, and uses incremental fetch thereafter.
|
|
Schedule::command('fuel:poll')
|
|
->everyThirtyMinutes()
|
|
->withoutOverlapping()
|
|
->onOneServer()
|
|
->runInBackground();
|
|
|
|
// Safety-net full station + price refresh at 3am in case the auto-refresh
|
|
// staleness check is skipped for any reason.
|
|
Schedule::command('fuel:poll --full')
|
|
->dailyAt('03:00')
|
|
->withoutOverlapping()
|
|
->onOneServer()
|
|
->runInBackground();
|
|
|
|
// Fetch FRED prices and generate oil price prediction daily at 7am
|
|
Schedule::command('oil:predict --fetch')
|
|
->dailyAt('07:00')
|
|
->withoutOverlapping()
|
|
->onOneServer()
|
|
->runInBackground();
|
|
|
|
// Scheduled WhatsApp updates — morning and evening
|
|
Schedule::job(new SendScheduledWhatsAppJob('morning'))->dailyAt('07:30')->onOneServer();
|
|
Schedule::job(new SendScheduledWhatsAppJob('evening'))->dailyAt('18:00')->onOneServer();
|