/// <summary> /// Retrieves the leader board for the given guest key. /// </summary> /// <param name="questKey"></param> /// <returns>An awaitable task that returns the requested leader board.</returns> public async Task <IEnumerable <QuestLeaderboardEntryDto> > GetLeaderboardAsync(Guid questKey) { // Get quest steps in order to show the amount of available quest steps var questSteps = await questRepository.GetQuestStepsAsync(questKey); var questStepsAvailable = questSteps.Count().ToString(); // Get quest progression / leader board entries var leaderboardEntries = await questRepository.GetLeaderboardAsync(questKey); var retval = leaderboardEntries.ToList().ToDtos(); var position = 1; foreach (var leaderboardEntry in retval) { leaderboardEntry.Position = position.ToString(); leaderboardEntry.QuestStepsAvailable = questStepsAvailable; position++; } return(retval); }