setHeadDirector($user); } /** * @throws AuditionAdminException */ public function setHeadDirector(User $user): void { if (! User::where('id', $user->id)->exists()) { throw new AuditionAdminException('User does not exist'); } if ($user->hasFlag('head_director')) { return; } if (is_null($user->school_id)) { throw new AuditionAdminException('User is not associated with a school'); } foreach ($user->school->directors as $director) { $director->removeFlag('head_director'); } $user->addFlag('head_director'); $logMessage = 'Set '.$user->full_name().' as head director at '.$user->school->name; $logAffected = ['users' => [$user->id], 'schools' => [$user->school_id]]; auditionLog($logMessage, $logAffected); } }