38 lines
905 B
PHP
38 lines
905 B
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\Models\Achievement;
|
|
use App\Models\Airline;
|
|
use App\Models\Alliance;
|
|
|
|
class AirlineObserver
|
|
{
|
|
public function created(Airline $airline): void
|
|
{
|
|
if ($airline->alliance_id !== null) {
|
|
$this->syncAllianceThresholds();
|
|
}
|
|
}
|
|
|
|
public function updated(Airline $airline): void
|
|
{
|
|
if ($airline->wasChanged('alliance_id')) {
|
|
$this->syncAllianceThresholds();
|
|
}
|
|
}
|
|
|
|
public function deleted(Airline $airline): void
|
|
{
|
|
$this->syncAllianceThresholds();
|
|
}
|
|
|
|
private function syncAllianceThresholds(): void
|
|
{
|
|
Alliance::withCount('airlines')->each(function (Alliance $alliance) {
|
|
Achievement::where('internal_name', "airlines_alliances.all_{$alliance->internal_name}")
|
|
->update(['threshold' => $alliance->airlines_count]);
|
|
});
|
|
}
|
|
}
|