public function includeNominations(Beatmapset $beatmapset) { if ($beatmapset->isPending()) { $currentUser = Auth::user(); $nominations = $beatmapset->recentEvents()->get(); foreach ($nominations as $nomination) { if ($nomination->type === BeatmapsetEvent::DISQUALIFY) { $disqualifyEvent = $nomination; } if ($currentUser !== null && $nomination->user_id === $currentUser->user_id && $nomination->type === BeatmapsetEvent::NOMINATE) { $alreadyNominated = true; } } $result = ['required' => $beatmapset->requiredNominationCount(), 'current' => $beatmapset->currentNominationCount()]; if (isset($disqualifyEvent)) { $result['disqualification'] = ['reason' => $disqualifyEvent->comment, 'created_at' => json_time($disqualifyEvent->created_at)]; } if ($currentUser !== null) { $result['nominated'] = $alreadyNominated ?? false; } return $this->item($beatmapset, function ($beatmapset) use($result) { return $result; }); } elseif ($beatmapset->qualified()) { $eta = $beatmapset->rankingETA(); $result = ['ranking_eta' => json_time($eta)]; return $this->item($beatmapset, function ($beatmapset) use($result) { return $result; }); } else { return; } }