Example #1
0
        public async Task <List <ArtistModel> > GetArtistsAsync(ArtistsPageFilter filter)
        {
            var channel = new Channel(channelTarget, ChannelCredentials.Insecure);

            try
            {
                var client  = new ArtistsGrpcService.ArtistsGrpcServiceClient(channel);
                var request = new GetArtistsRequest()
                {
                    LibraryId  = filter.LibraryId.ToString(),
                    PageIndex  = filter.PageIndex,
                    PageSize   = filter.PageSize,
                    SearchText = filter.SearchText
                };

                var response = await client.GetArtistsAsync(request);

                var artists = response.Artists.Select(s => ArtistGrpcConverter.ToModel(s)).ToList();
                return(artists);
            }
            finally
            {
                await channel.ShutdownAsync();
            }
        }
Example #2
0
        public List <ArtistDTO> GetArtists(ArtistsPageFilter filter)
        {
            //var filterArtists = Builders<Artist>.Filter.ElemMatch(x => x.Name, Builders<Album>.Filter.AnyIn(x => x.SongsIds, songsIds));
            //var filterArtists = Builders<Artist>.Filter.Regex(x => x.Name,".*"+ filter.SearchText+ ".*");

            var filterArtists = Builders <Artist> .Filter.Regex(x => x.Name, new BsonRegularExpression($".*{filter.SearchText}.*"));


            var userLibSongIds = libraryDbList.Find(l => l.Id == filter.LibraryId).FirstOrDefault().SongsIds;

            var artists = artistsDbList.Find(filterArtists).Skip(filter.PageIndex * filter.PageSize)
                          .Limit(filter.PageSize).ToList();

            var allSongsIds = artists.SelectMany(a => a.Albums.SelectMany(aa => aa.SongsIds));


            var songsFilter = Builders <Song> .Filter.In(x => x.Id, allSongsIds);

            var songs = songsDbList.Find(songsFilter).ToList();

            var artistsDTOs = new List <ArtistDTO>();

            foreach (var artist in artists)
            {
                var artistDTO = new ArtistDTO();

                artistDTO.Id         = artistDTO.Id;
                artistDTO.Name       = artist.Name;
                artistDTO.UrlPicture = artist.UrlPicture;
                artistDTO.Albums     = new List <AlbumDTO>();

                foreach (var album in artist.Albums)
                {
                    var albumDTO = new AlbumDTO();
                    albumDTO.Id         = album.Id;
                    albumDTO.Name       = album.Name;
                    albumDTO.UrlPicture = album.UrlPicture;
                    albumDTO.Songs      = new List <SongSimpleDTO>();

                    foreach (var songId in album.SongsIds)
                    {
                        var song    = songs.FirstOrDefault(s => s.Id == songId);
                        var songDTO = new SongSimpleDTO()
                        {
                            Id          = song.Id,
                            Name        = song.Name,
                            Url         = song.Url,
                            IsInLibrary = userLibSongIds.Contains(song.Id)
                        };
                        albumDTO.Songs.Add(songDTO);
                    }
                    artistDTO.Albums.Add(albumDTO);
                }
                artistsDTOs.Add(artistDTO);
            }
            return(artistsDTOs);
        }
Example #3
0
 public List <ArtistDTO> GetArtists(ArtistsPageFilter filter)
 {
     return(_context.Artists.Include(a => a.Albums)
            .ThenInclude(alb => alb.Songs)
            .Where(a => a.Name.Contains(filter.SearchText))
            .Skip(filter.PageIndex * filter.PageSize)
            .Take(filter.PageSize)
            .Select(a => ArtistCoreConverter.ToLongDTO(a))
            .ToList());
 }
        public List <ArtistModel> GetArtists([FromBody] ArtistsPageFilter filter)
        {
            var artists = _artistsService.GetArtists(filter);

            var artistsModels = artists.Select(a => ArtistWebConverter.ToModel(a)).ToList();

            SetIsInLibraryAttribute(artistsModels, filter.LibraryId);

            return(artistsModels);
        }
        public List <ArtistModel> GetArtists([FromBody] ArtistsPageFilter filter)
        {
            var artists = _artistsService.GetArtistsAsync(filter);

            return(artists.Result);
        }