Exemple #1
0
 private static SimplePredicate FilterProductName(SongFilterDto filter)
 {
     if (string.IsNullOrWhiteSpace(filter.SearchedName))
     {
         return(null);
     }
     return(new SimplePredicate(nameof(Song.Name), ValueComparingOperator.StringContains,
                                filter.SearchedName));
 }
Exemple #2
0
 private static SimplePredicate FilterAlbum(SongFilterDto filter)
 {
     if (filter.AlbumId == null)
     {
         return(null);
     }
     return(new SimplePredicate(
                nameof(Song.AlbumId),
                ValueComparingOperator.Equal,
                filter.AlbumId));
 }
Exemple #3
0
        /// <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);
            }
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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));
        }