Ejemplo n.º 1
0
 public List <NewsDTO> GetNews(BasicPageFilter filter)
 {
     return(_context.News.OrderByDescending(n => n.CreationDate)
            .Skip(filter.PageIndex * filter.PageSize).Take(filter.PageSize)
            .Include(n => n.Source)
            .Select(n => NewsCoreConverter.ToDTO(n)).ToList());
 }
Ejemplo n.º 2
0
        public List <NewsDTO> GetNews(BasicPageFilter filter)
        {
            var news = newsDbList.Find(bson => true).SortByDescending(bson => bson.CreationDate)
                       .Skip(filter.PageIndex * filter.PageSize).Limit(filter.PageSize)
                       .ToList();

            return(news.Select(n => NewsCoreConverter.ToDTO(n)).ToList());
        }
Ejemplo n.º 3
0
        public List <SongDTO> GetRecommendedSongs(BasicPageFilter filter)
        {
            var queryableUsers = usersDbList.AsQueryable();


            var library = from lib in libraryDbList.AsQueryable()
                          join u in queryableUsers on lib.Id equals u.LibraryId
                          where u.Id == filter.UserId
                          select lib.SongsIds;


            var allSongsIds = library.FirstOrDefault();

            if (allSongsIds == null)
            {
                new List <SongDTO>();
            }

            var filterArtists = Builders <Artist> .Filter.ElemMatch(x => x.Albums, Builders <Album> .Filter.AnyIn(x => x.SongsIds, allSongsIds));

            var userLibArtistsIds = artistsDbList.Find(filterArtists).ToList().SelectMany(a => a.SimilarArtistsIds);


            var recommendedArtistsFilter = Builders <Artist> .Filter.In(a => a.Id, userLibArtistsIds);

            var recommendedArtists = artistsDbList.Find(filterArtists).ToList();

            var recommendedSongs = recommendedArtists.SelectMany(
                artist => artist.Albums.SelectMany(album => album.SongsIds.Select
                                                       (s => new SongDTO()
            {
                Id              = s,
                Artist          = artist.Name,
                Album           = album.Name,
                AlbumUrlPicture = album.UrlPicture,
                IsInLibrary     = false
            })))
                                   .Skip(filter.PageIndex * filter.PageSize)
                                   .Take(filter.PageSize).ToList();

            var recSongIds = recommendedSongs.Select(s => s.Id).ToList();

            var recSongsFilter = Builders <Song> .Filter.In(a => a.Id, recSongIds);

            var recSongsFromDb = songsDbList.Find(recSongsFilter).ToList();


            foreach (var recSong in recommendedSongs)
            {
                recSong.Name = recSongsFromDb.Find(s => s.Id == recSong.Id).Name;
                recSong.Url  = recSongsFromDb.Find(s => s.Id == recSong.Id).Url;
                recSong.Year = recSongsFromDb.Find(s => s.Id == recSong.Id).Year;
            }

            return(recommendedSongs.ToList());
        }
Ejemplo n.º 4
0
        public List <SongDTO> GetRecommendedSongs(BasicPageFilter filter)
        {
            var user = _context.Users
                       .Include(u => u.Library)
                       .ThenInclude(l => l.LibrarySong)
                       .ThenInclude(ls => ls.Song)
                       .ThenInclude(s => s.Album)

                       .FirstOrDefault(u => u.Id == filter.UserId);

            var userArtistsIds = user.Library.LibrarySong.Select(ls => ls.Song.Album.ArtistId).Distinct();

            var allLibSongs = user.Library.LibrarySong.Select(ls => ls.SongId);


            //var recommendedSongs = _context.SimilarArtistsRelationships
            //    .Where(r => userArtistsIds.Contains(r.SecondArtistId))
            //    .Include(a => a.SecondArtist)
            //    .ThenInclude(a => a.Albums)
            //    .ThenInclude(alb => alb.Songs)
            //    .ThenInclude(a => a.Album)
            //    .ThenInclude(a => a.Artist)


            //    .SelectMany(a=>a.SecondArtist.Albums.SelectMany(alb=>alb.Songs))
            //    .Where(rs => !allLibSongs.Contains(rs.Id))
            //    .Distinct()
            //    .OrderBy(a=>a.Name)
            //    .Skip(filter.PageIndex * filter.PageSize)
            //    .Take(filter.PageSize)
            //    .Select(s=> SongCoreConverter.ToLongDTO(s))
            //    .ToList() ;


            var similarArtistsIds = _context.SimilarArtistsRelationships
                                    .Where(r => userArtistsIds.Contains(r.SecondArtistId))
                                    .Select(s => s.SecondArtistId)
                                    .ToList();


            var recommendedSongs = _context.Artists.Where(a => similarArtistsIds.Contains(a.Id))
                                   .Include(a => a.Albums)
                                   .ThenInclude(alb => alb.Songs)
                                   .SelectMany(a => a.Albums.SelectMany(alb => alb.Songs))
                                   .Where(rs => !allLibSongs.Contains(rs.Id))
                                   .Skip(filter.PageIndex * filter.PageSize)
                                   .Take(filter.PageSize)
                                   .Include(a => a.Album)
                                   .ThenInclude(a => a.Artist)
                                   .Select(s => SongCoreConverter.ToLongDTO(s))
                                   .ToList();

            return(recommendedSongs);
        }
Ejemplo n.º 5
0
        public override Task <GetNewsResponse> GetNews(GetNewsRequest request, ServerCallContext context)
        {
            var basePageFilter = new BasicPageFilter()
            {
                PageIndex = request.PageIndex,
                PageSize  = request.PageSize,
            };
            var news = _newsService.GetNews(basePageFilter).Select(n => NewsGrpcConverter.ToMessage(n)).ToList();

            var response = new GetNewsResponse();

            response.News.AddRange(news);
            return(Task.FromResult(response));
        }
Ejemplo n.º 6
0
        public override Task <GetRecommendedSongsResponse> GetRecommendedSongs(GetRecommendedSongsRequest request, ServerCallContext context)
        {
            var filter = new BasicPageFilter()
            {
                UserId    = Guid.Parse(request.UserId),
                PageIndex = request.PageIndex,
                PageSize  = request.PageSize
            };

            var songs    = _libraryService.GetRecommendedSongs(filter);
            var response = new GetRecommendedSongsResponse();


            response.Songs.AddRange(songs.Select(s => SongGrpcConverter.ToMessage(s)).ToList());
            return(Task.FromResult(response));
        }
Ejemplo n.º 7
0
        public async Task <List <NewsModel> > GetNewsAsync(BasicPageFilter filter)
        {
            var channel = new Channel(channelTarget, ChannelCredentials.Insecure);

            try
            {
                var client  = new NewsGrpcService.NewsGrpcServiceClient(channel);
                var request = new GetNewsRequest()
                {
                    PageIndex = filter.PageIndex,
                    PageSize  = filter.PageSize
                };

                var response = await client.GetNewsAsync(request);

                return(response.News.Select(n => NewsGrpcConverter.ToMessage(n)).ToList());
            }
            finally
            {
                await channel.ShutdownAsync();
            }
        }
Ejemplo n.º 8
0
        public async Task <List <SongModel> > GetRecommendedSongsAsync(BasicPageFilter filter)
        {
            var channel = new Channel(channelTarget, ChannelCredentials.Insecure);

            try
            {
                var client  = new LibraryGrpcService.LibraryGrpcServiceClient(channel);
                var request = new GetRecommendedSongsRequest()
                {
                    UserId    = filter.UserId.ToString(),
                    PageIndex = filter.PageIndex,
                    PageSize  = filter.PageSize
                };

                var response = await client.GetRecommendedSongsAsync(request);

                return(response.Songs.Select(s => SongGrpcConverter.ToMessage(s)).ToList());
            }
            finally
            {
                await channel.ShutdownAsync();
            }
        }
Ejemplo n.º 9
0
 public List <SongModel> GetRecommendedSongs(BasicPageFilter filter)
 {
     return(_libraryService.GetRecommendedSongsAsync(filter).Result);
 }
Ejemplo n.º 10
0
        public List <SongModel> GetRecommendedSongs(BasicPageFilter filter)

        {
            return(_libraryService.GetRecommendedSongs(filter).Select(n => SongWebConverter.ToModel(n, false)).ToList());
        }
Ejemplo n.º 11
0
 public List <NewsModel> GetNews(BasicPageFilter filter)
 {
     return(_newsService.GetNewsAsync(filter).Result);
 }
Ejemplo n.º 12
0
 public List <NewsModel> GetNews(BasicPageFilter filter)
 {
     return(_newsService.GetNews(filter).Select(n => NewsWebConverter.ToModel(n)).ToList());
 }