private static SimplePredicate FilterProductName(SongFilterDto filter) { if (string.IsNullOrWhiteSpace(filter.SearchedName)) { return(null); } return(new SimplePredicate(nameof(Song.Name), ValueComparingOperator.StringContains, filter.SearchedName)); }
private static SimplePredicate FilterAlbum(SongFilterDto filter) { if (filter.AlbumId == null) { return(null); } return(new SimplePredicate( nameof(Song.AlbumId), ValueComparingOperator.Equal, filter.AlbumId)); }
/// <summary> /// Gets products according to filter and required page /// </summary> /// <param name="filter">products filter</param> /// <param name="includeCurrentlyAvailableUnits">Include number of currently available units for each song</param> /// <returns></returns> public async Task <QueryResultDto <SongDto, SongFilterDto> > GetSongsAsync(SongFilterDto filter, bool includeCurrentlyAvailableUnits = true) { using (UnitOfWorkProvider.Create()) { var songListQueryResult = await songService.ListSongsAsync(filter); if (!includeCurrentlyAvailableUnits) { return(songListQueryResult); } return(songListQueryResult); } }
public async Task <IEnumerable <SongDto> > Query(string sort = null, bool asc = true, string name = null, [FromUri] string album = null) { var filter = new SongFilterDto { SortCriteria = sort, SortAscending = asc, AlbumName = album, SearchedName = name }; var songs = (await SongFacade.GetSongsAsync(filter, false)).Items; foreach (var song in songs) { song.Id = Guid.Empty; } return(songs); }
protected override IQuery <Song> ApplyWhereClause(IQuery <Song> query, SongFilterDto filter) { var definedPredicates = new List <IPredicate>(); AddIfDefined(FilterAlbum(filter), definedPredicates); AddIfDefined(FilterProductName(filter), definedPredicates); if (definedPredicates.Count == 0) { return(query); } if (definedPredicates.Count == 1) { return(query.Where(definedPredicates.First())); } var wherePredicate = new CompositePredicate(definedPredicates); return(query.Where(wherePredicate)); }