Files
FlightsAPI/app/Observers/FlightObserver.php
T
2026-06-29 21:42:47 +10:00

51 lines
1.2 KiB
PHP

<?php
namespace App\Observers;
use App\Models\UserFlight;
use Illuminate\Support\Facades\Cache;
class FlightObserver
{
protected function clearCache(UserFlight $flight): void
{
Cache::forget("user_flights_{$flight->user->id}");
//Make queued task if the site gets big
$flight->user->followers()
->get()
->each(fn ($follower) => Cache::forget("user_following_flights_{$follower->user_id}"));
}
/**
* Recalculate after a flight is created.
*/
public function created(UserFlight $flight): void
{
$flight->user->calculateAchievements();
$this->clearCache($flight);
}
/**
* Recalculate after a flight is updated.
* Cabin class, flight type, airline, etc. may have changed,
* which could unlock or revoke achievements.
*/
public function updated(UserFlight $flight): void
{
$flight->user->calculateAchievements();
$this->clearCache($flight);
}
/**
* Recalculate after a flight is deleted.
* Previously earned achievements may no longer be valid.
*/
public function deleted(UserFlight $flight): void
{
$flight->user->calculateAchievements();
$this->clearCache($flight);
}
}