Esempio n. 1
0
        public async Task <IActionResult> GetTrackRankings(int trackId,
                                                           [FromQuery(Name = "top")] int?top = null)
        {
            // TODO: Usar cache para rankings públicos?
            bool isUserAdmin = this.IsLoggedUserAdmin();
            int? userId      = this.GetLoggedUserId();

            var trackRankings = (isUserAdmin, userId) switch
            {
                (_, null) => await _rankingService.GetPublicTrackRankingsAsync(trackId, top),
                (true, _) => await _rankingService.GetTrackRankingsForAdminAsync(trackId, top),
                (false, _) => await _rankingService.GetTrackRankingsForUserAsync(trackId, (int)userId, top)
            };

            return(Ok(_mapper.Map <TrackRankingModel[]>(trackRankings)));
        }