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(); } }
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); }
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); }