refresh(); $pilot->flights = $pilot->flights + $count; $pilot->save(); return $pilot; } public function adjustFlightHours(User &$pilot, int $hours): User { $pilot->refresh(); $pilot->flight_time = $pilot->flight_time + $hours; $pilot->save(); return $pilot; } public function calculatePilotRank(User &$pilot): User { $pilot->refresh(); $pilot_hours = $pilot->flight_time / 3600; # TODO: Cache $ranks = Cache::remember( config('cache.keys.RANKS_PILOT_LIST.key'), config('cache.keys.RANKS_PILOT_LIST.time'), function () { return Rank::where('auto_promote', true)->orderBy('hours', 'asc')->get(); }); foreach ($ranks as $rank) { if($rank->hours > $pilot_hours) { break; } else { $pilot->rank_id = $rank->id; } } $pilot->save(); return $pilot; } }