public async Task <IEnumerable <User_Picture> > GetPictures() { IEnumerable <User_Picture> user_Pictures = null; var Pics = await _caching.GetPhotosAsync(); if (Pics == null) { Pics = await _dataAccess.GetPicturesAsync(); _caching.InsertPhotosAsync(Pics); } if (Pics != null) { if (!User.Identity.IsAuthenticated) { user_Pictures = Pics.Select(elem => new User_Picture { Id = elem.Id, Rating = elem.Rating, Votes = elem.Votes, Url = elem.Url, Thumbnail_Url = elem.Thumbnail_Url, Author = elem.User_Id, IsVoted = true }); } else { var userId = User.FindFirst("userId"); var userPics = await _caching.GetVotesByUserIdAsync(userId.Value); if (userPics == null || userPics.Count() == 0) { var picsVoted = await _dataAccess.GetVotesByUserIdAsync(userId.Value); _caching.InsertVotesAsync(picsVoted); userPics = picsVoted.Select(x => x.Picture_Id); } if (userPics != null) { return(Pics.Select(elem => new User_Picture { Id = elem.Id, Rating = elem.Rating, Votes = elem.Votes, Url = elem.Url, Thumbnail_Url = elem.Thumbnail_Url, Author = elem.User_Id, IsVoted = elem.User_Id == userId.Value || userPics.Any(item => item == elem.Id) })); } else { return(Pics.Select(elem => new User_Picture { Id = elem.Id, Rating = elem.Rating, Votes = elem.Votes, Url = elem.Url, Thumbnail_Url = elem.Thumbnail_Url, Author = elem.User_Id, IsVoted = elem.User_Id == userId.Value })); } } } return(user_Pictures); }