/// <summary>
        /// Retrieves the data from Youtube (query: Mr. Bean Videos ), filtered by a filter specification, in an observable collection of YouTubeVideo items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of YouTubeVideo items.</returns>
        public async Task<ObservableCollection<EntitiesBase.YouTubeVideo>> Search(FilterSpecification filter)
        {
			var data = _storageService.Load<EntitiesBase.YouTubeVideo[]>("Microsoft_microsoftvideos");
			var searchResults = RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data);
			if(searchResults == null || !searchResults.Any())
			{
				data = await _youtubeDataSource.LoadRemote<EntitiesBase.YouTubeVideo[]>(String.Format(YoutubeBaseUrl, HttpUtility.UrlEncode(YoutubeQuery)));
				searchResults = RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data);
			}
            return searchResults;
        }
        public async Task <ActionResult <Pagination <GemReturnDTO> > > GetGemsList([FromQuery] GemParams gemParams)
        {
            var countSpec  = new CountSpecification(gemParams);
            var filterSpec = new FilterSpecification(gemParams);
            var gemList    = await _repo.GetGemListWithSpec(filterSpec);

            var itemsCount = await _repo.CountAsync(countSpec);

            var data = _mapper.Map <IReadOnlyList <Gem>, IReadOnlyList <GemReturnDTO> >(gemList);

            return(Ok(new Pagination <GemReturnDTO>(gemParams.PageIndex, gemParams.PageSize, itemsCount, data)));
        }
        public async Task <ActionResult <GemReturnDTO> > GetGemById(int id)
        {
            var spec = new FilterSpecification(id);
            var gem  = await _repo.GetGemWithSpec(spec);

            if (gem == null)
            {
                return(NotFound());
            }
            return(_mapper.Map <Gem, GemReturnDTO>(gem));
            //return await _repo.GetGemById(id);
        }
        public void SholdSupportEqualOperator()
        {
            // Given
            const int value = 10;
            var entity = new FilterTestEntity { IntField = value };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.Equal(i => i.IntField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
Beispiel #5
0
        /// <summary>
        /// Retrieves the data from Youtube (channel: CNETTV ), filtered by a filter specification, in an observable collection of YouTubeVideo items.
        /// </summary>
        /// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of YouTubeVideo items.</returns>
        public async Task <ObservableCollection <EntitiesBase.YouTubeVideo> > Search(FilterSpecification filter)
        {
            var data          = _storageService.Load <EntitiesBase.YouTubeVideo[]>("Videos_s5");
            var searchResults = RepositoriesBase.Filter <EntitiesBase.YouTubeVideo> .FilterCollection(filter, data);

            if (searchResults == null || !searchResults.Any())
            {
                data = await _youtubeDataSource.LoadRemote <EntitiesBase.YouTubeVideo[]>(String.Format(YoutubeBaseUrl, HttpUtility.UrlEncode(YoutubeQuery)));

                searchResults = RepositoriesBase.Filter <EntitiesBase.YouTubeVideo> .FilterCollection(filter, data);
            }
            return(searchResults);
        }
Beispiel #6
0
        public void SholdSerializeOperator()
        {
            // Given
            var entity = new FilterTestEntity {
                StringField = "Abc", IntField = 5
            };

            // Какое-то сложное логическое выражение
            var specification = new FilterSpecification <FilterTestEntity>(
                b => b.Or(
                    c => c
                    .And(a => a.Or(o => o
                                   .Null(i => i.StringField)
                                   .Equal(i => i.StringField, string.Empty))
                         .Equal(i => i.IntField, 0))
                    .And(a => a
                         .NotNull(i => i.StringField)
                         .NotEqual(i => i.StringField, string.Empty)
                         .Or(o => o
                             .In(i => i.StringField.ToLower(), new[] { "a", "b", "c" })
                             .Contains(i => i.StringField.ToLower(), "abc")
                             .StartsWith(i => i.StringField, "1")
                             .EndsWith(i => i.StringField, "5"))
                         .Or(o => o
                             .And(a2 => a2
                                  .GreaterOrEqual(i => i.IntField, 0)
                                  .LessOrEqual(i => i.IntField, 10))
                             .And(a2 => a2
                                  .Greater(i => i.IntField, 10)
                                  .Less(i => i.IntField, 20))
                             .Between(i => i.IntField, 20, 30)))));

            IFilterOperator operatorFromStream;
            IFilterOperator operatorToStream = specification.Operator;

            // When
            using (var stream = new MemoryStream())
            {
                // Сериализация
                var serializer = new NetDataContractSerializer();
                serializer.Serialize(stream, operatorToStream);
                stream.Position = 0;

                // Десериализация
                operatorFromStream = (IFilterOperator)serializer.ReadObject(stream);
            }

            // Then
            Assert.IsNotNull(operatorFromStream);
            Assert.AreEqual(operatorToStream.IsSatisfiedBy(entity), operatorFromStream.IsSatisfiedBy(entity));
        }
Beispiel #7
0
        public void ShouldSupportEndsWithOperator()
        {
            // Given
            var entity = new FilterTestEntity {
                StringField = "12345"
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.EndsWith(i => i.StringField, "45")));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
Beispiel #8
0
        public void ShouldSupportNotContainsOperatorForCollection([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity {
                CollectionField = new[] { 1, 2, 3 }
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotContains(i => i.CollectionField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!entity.CollectionField.Contains(value), result);
        }
Beispiel #9
0
        public void ShouldSupportNotBetweenOperator([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity {
                IntField = value
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotBetween(i => i.IntField, 1, 4)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!(entity.IntField >= 1 && entity.IntField <= 4), result);
        }
Beispiel #10
0
        public void ShouldSupportLessOrEqualOperator([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity {
                IntField = 3
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.LessOrEqual(i => i.IntField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(entity.IntField <= value, result);
        }
Beispiel #11
0
        public void ShouldSupportNotContainsOperatorForString()
        {
            // Given
            var entity = new FilterTestEntity {
                StringField = "54321"
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotContains(i => i.StringField, "234")));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
Beispiel #12
0
        public void ShouldSupportNotNullOperator()
        {
            // Given
            var entity = new FilterTestEntity {
                StringField = "NotNull"
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotNull(i => i.StringField)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
        public void SholdSerializeOperator()
        {
            // Given
            var entity = new FilterTestEntity { StringField = "Abc", IntField = 5 };

            // Какое-то сложное логическое выражение
            var specification = new FilterSpecification<FilterTestEntity>(
                b => b.Or(
                    c => c
                             .And(a => a.Or(o => o
                                                     .Null(i => i.StringField)
                                                     .Equal(i => i.StringField, string.Empty))
                                           .Equal(i => i.IntField, 0))
                             .And(a => a
                                           .NotNull(i => i.StringField)
                                           .NotEqual(i => i.StringField, string.Empty)
                                           .Or(o => o
                                                        .In(i => i.StringField.ToLower(), new[] { "a", "b", "c" })
                                                        .Contains(i => i.StringField.ToLower(), "abc")
                                                        .StartsWith(i => i.StringField, "1")
                                                        .EndsWith(i => i.StringField, "5"))
                                           .Or(o => o
                                                        .And(a2 => a2
                                                                       .GreaterOrEqual(i => i.IntField, 0)
                                                                       .LessOrEqual(i => i.IntField, 10))
                                                        .And(a2 => a2
                                                                       .Greater(i => i.IntField, 10)
                                                                       .Less(i => i.IntField, 20))
                                                        .Between(i => i.IntField, 20, 30)))));

            IFilterOperator operatorFromStream;
            IFilterOperator operatorToStream = specification.Operator;

            // When
            using (var stream = new MemoryStream())
            {
                // Сериализация
                var serializer = new NetDataContractSerializer();
                serializer.Serialize(stream, operatorToStream);
                stream.Position = 0;

                // Десериализация
                operatorFromStream = (IFilterOperator)serializer.ReadObject(stream);
            }

            // Then
            Assert.IsNotNull(operatorFromStream);
            Assert.AreEqual(operatorToStream.IsSatisfiedBy(entity), operatorFromStream.IsSatisfiedBy(entity));
        }
Beispiel #14
0
        public void ShouldSupportNotInOperator([Range(0, 5)] int value)
        {
            // Given
            var set    = new[] { 1, 2, 3 };
            var entity = new FilterTestEntity {
                IntField = value
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotIn(i => i.IntField, set)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!set.Contains(value), result);
        }
Beispiel #15
0
        public void SholdSupportNotEqualOperator()
        {
            // Given
            const int value  = 10;
            var       entity = new FilterTestEntity {
                IntField = value + 1
            };
            var specification = new FilterSpecification <FilterTestEntity>(f => f.And(c => c.NotEqual(i => i.IntField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
Beispiel #16
0
        public List <TEntity> GetAll(FilterSpecification <TEntity> spec = null, Func <IQueryable <TEntity>, IIncludableQueryable <TEntity, object> > include = null)
        {
            IQueryable <TEntity> query = _ctx.Set <TEntity>();

            if (include != null)
            {
                query = include(query);
            }

            if (spec != null)
            {
                query = query.Where(spec);
            }

            return(query.ToList());
        }
        /// <summary>
        /// Called when the page becomes the active page.
        /// </summary>
        /// <param name="e">Contains information about the navigation done.</param>
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string currentId;

            if (NavigationContext.QueryString.TryGetValue("currentID", out currentId))
            {
                var dataSource = new Ioc.Container().Resolve<Repositories.Icostumes_suitsCollection>();
                AddHomeAppBarButton();
                var pinnedItemSpec = new FilterSpecification().AddPredicate("Id", ColumnOperatorEnum.Equals, currentId);
                var pinnedItem  = dataSource.Search(pinnedItemSpec).FirstOrDefault();
                if(pinnedItem==null)
                    MessageBox.Show(Localization.AppResources.PinError);
                ((IViewModels.Icostumes_DetailViewModel)DataContext).CurrentsuitsCollectionSchema = pinnedItem;
            }
        }
        /// <summary>
        /// Called when the page becomes the active page.
        /// </summary>
        /// <param name="e">Contains information about the navigation done.</param>
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string currentId;
			
            if (NavigationContext.QueryString.TryGetValue("currentID", out currentId))
            {
				var dataSource = new Ioc.Container().Resolve<Repositories.Imoviebuzz_reviewsDataSource>();
				AddHomeAppBarButton();
				var pinnedItemSpec = new FilterSpecification().AddPredicate("Title", ColumnOperatorEnum.Equals, currentId);
				var pinnedItem  = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault();
				if(pinnedItem==null)
					MessageBox.Show(Localization.AppResources.PinError);
				((IViewModels.Imoviebuzz_DetailViewModel)DataContext).CurrentRssSearchResult = pinnedItem;				
			}
		}
Beispiel #19
0
        public async Task <List <TEntity> > GetAllAsync(FilterSpecification <TEntity> spec = null, Func <IQueryable <TEntity>, IIncludableQueryable <TEntity, object> > include = null)
        {
            IQueryable <TEntity> query = _ctx.Set <TEntity>();

            if (include != null)
            {
                query = include(query);
            }

            if (spec != null)
            {
                query = query.Where(spec);
            }

            return(await query.AsNoTracking().ToListAsync());
        }
        /// <summary>
        /// Called when the page becomes the active page.
        /// </summary>
        /// <param name="e">Contains information about the navigation done.</param>
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string currentId;
			
            if (NavigationContext.QueryString.TryGetValue("currentID", out currentId))
            {
				var dataSource = new Ioc.Container().Resolve<Repositories.IYoutube_YoutubeChannel>();
				AddHomeAppBarButton();
				var pinnedItemSpec = new FilterSpecification().AddPredicate("VideoId", ColumnOperatorEnum.Equals, currentId);
				var pinnedItem  = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault();
				if(pinnedItem==null)
					MessageBox.Show(Localization.AppResources.PinError);
				((IViewModels.IYoutube_DetailVideosViewModel)DataContext).CurrentYouTubeVideo = pinnedItem;				
			}
			MyToolkit.Multimedia.YouTube.CancelPlay();
		}
        /// <summary>
        /// Called when the page becomes the active page.
        /// </summary>
        /// <param name="e">Contains information about the navigation done.</param>
        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            base.OnNavigatedTo(e);
            string currentId;

            if (NavigationContext.QueryString.TryGetValue("currentID", out currentId))
            {
                var dataSource = new Ioc.Container().Resolve <Repositories.ICnetNEWS_s4>();
                AddHomeAppBarButton();
                var pinnedItemSpec = new FilterSpecification().AddPredicate("Title", ColumnOperatorEnum.Equals, currentId);
                var pinnedItem     = (await dataSource.Search(pinnedItemSpec)).FirstOrDefault();
                if (pinnedItem == null)
                {
                    MessageBox.Show(Localization.AppResources.PinError);
                }
                ((IViewModels.ICnetNEWS_DetailViewModel)DataContext).CurrentRssSearchResult = pinnedItem;
            }
        }
        public virtual async Task <PagedList <TDto> > SearchAsync(
            IncludeSpecification <TDto> includeSpecification,
            FilterSpecification <TDto> filterSpecification,
            OrderBySpecification <TDto> orderBySpecification,
            int?pageNo        = null,
            int?pageSize      = null,
            bool getFullGraph = false,
            CancellationToken cancellationToken = default(CancellationToken))
        {
            await AuthorizeResourceOperationAsync(ResourceCollectionsCore.CRUD.Operations.Read, ResourceCollectionsCore.CRUD.Operations.ReadOwner);

            var filterConverted = filterSpecification.Map <TEntity>(Mapper);

            if (!OrderByMapper.ValidOrderByFor <TDto, TEntity>(orderBySpecification.OrderByString))
            {
                throw new BadRequestError(Messages.OrderByInvalid);
            }

            //Ideally OrderByMapper could also convert Expressions but it only handles strings.
            var orderByConverted = string.IsNullOrEmpty(orderBySpecification.OrderByString) ? orderBySpecification.Map <TEntity>(Mapper) : orderBySpecification.Map <TEntity>(OrderByMapper);

            var includesConverted = includeSpecification.Map <TEntity>(Mapper);

            int?skip = null;

            if (pageNo.HasValue && pageSize.HasValue)
            {
                skip = (pageNo.Value - 1) * pageSize.Value;
            }

            var entityList = await Repository.SpecificationQuery(includesConverted, filterConverted, orderByConverted, skip, pageSize, GetFullGraph || getFullGraph).ToCountListAsync(cancellationToken).ConfigureAwait(false);

            var entities = entityList.ToList();

            foreach (var entity in entities)
            {
                await AuthorizeResourceOperationAsync(entity, ResourceCollectionsCore.CRUD.Operations.Read, ResourceCollectionsCore.CRUD.Operations.ReadOwner);
            }

            var dtoList = new PagedList <TDto>(entities.Select(Mapper.Map <TEntity, TDto>).ToList(), entityList.TotalCount, pageNo ?? 1, pageSize ?? entityList.TotalCount);

            return(dtoList);
        }
Beispiel #23
0
        public void ShouldBuildOperatorDuringTheCall()
        {
            // Given
            var entity = new FilterTestEntity();

            var operatorMock = new Mock <IFilterOperator>();

            operatorMock.Setup(o => o.CreateFilter()).Returns((Expression <Func <FilterTestEntity, bool> >)(item => true));

            var specification = new FilterSpecification <FilterTestEntity>(b => operatorMock.Object);

            // When
            specification.IsSatisfiedBy(entity);
            specification.IsSatisfiedBy(entity);
            specification.IsSatisfiedBy(entity);

            // Then
            operatorMock.Verify(o => o.CreateFilter(), Times.Exactly(3));
        }
        public async Task <IEnumerable <Tour> > Search(int?peopleCount, FilterSpecification <Tour> filter, SearchOrder?order, CancellationToken cancellation = default)
        {
            var cancelSource = CancellationTokenSource.CreateLinkedTokenSource(cancellation);

            var searchTasks = searchers.Select(searcher => Task.Run(() => searcher.Search(peopleCount, filter, order, cancelSource.Token))).ToArray();
            await Task.WhenAny(Task.WhenAll(searchTasks), Task.Delay(SearchTimeout));

            cancelSource.Cancel();

            var answers = searchTasks.Where(task => task.IsCompleted && !task.IsFaulted).Select(task => task.Result).ToArray();

            if (!answers.Any())
            {
                throw new TimeoutException($"Ни один из ISearchService-ов не ответил за время {SearchTimeout})");
            }

            return(answers.SelectMany(answer => answer)
                   .GroupBy(tour => new { HotelId = tour.Hotel.Id, StartCityId = tour.StartCity.Id, tour.StartDate, tour.StartHotelDate, tour.Days, tour.RoomKind })
                   .Select(group => MinPriceTour(group))
                   .OrderBy(order)
                   .ToArray());
        }
        public void SpecificationEqualTest()
        {
            var filters = new List <FilterModel>();

            var filter = new FilterModel {
                FieldName = "Name", FilterType = FilterType.Text
            };

            var condition = new Condition
            {
                FilterType = FilterType.Text, ConditionType = ConditionType.Equals, Value = "s"
            };

            filter.Conditions.Add(condition);
            filters.Add(filter);

            var spec = FilterSpecification <Customer> .Create(filters);

            var expression = spec.ToExpression();

            Assert.Equal("(x.Name == \"s\")", expression.Body.ToString());
        }
Beispiel #26
0
        public static ObservableCollection <T> FilterCollection(FilterSpecification filter, IEnumerable <T> data)
        {
            IQueryable <T> query = data.AsQueryable();

            foreach (var predicate in filter.Predicates)
            {
                Func <T, bool> expression;
                var            predicateAux = predicate;
                switch (predicate.Operator)
                {
                case ColumnOperatorEnum.Contains:
                    expression = x => predicateAux.GetFieldValue(x).ToLower().Contains(predicateAux.Value.ToString().ToLower());
                    break;

                case ColumnOperatorEnum.StartsWith:
                    expression = x => predicateAux.GetFieldValue(x).ToLower().StartsWith(predicateAux.Value.ToString().ToLower());
                    break;

                case ColumnOperatorEnum.GreaterThan:
                    expression = x => String.Compare(predicateAux.GetFieldValue(x).ToLower(), predicateAux.Value.ToString().ToLower(), StringComparison.Ordinal) > 0;
                    break;

                case ColumnOperatorEnum.LessThan:
                    expression = x => String.Compare(predicateAux.GetFieldValue(x).ToLower(), predicateAux.Value.ToString().ToLower(), StringComparison.Ordinal) < 0;
                    break;

                case ColumnOperatorEnum.NotEquals:
                    expression = x => !predicateAux.GetFieldValue(x).Equals(predicateAux.Value.ToString(), StringComparison.InvariantCultureIgnoreCase);
                    break;

                default:
                    expression = x => predicateAux.GetFieldValue(x).Equals(predicateAux.Value.ToString(), StringComparison.InvariantCultureIgnoreCase);
                    break;
                }
                query = query.Where(expression).AsQueryable();
            }
            return(new ObservableCollection <T>(query));
        }
Beispiel #27
0
        public void ShouldSupportComplexConditions([Range(0, 3)] int intField, [Range(0, 3)] int stringField)
        {
            // Given
            var entity = new FilterTestEntity {
                IntField = intField, StringField = stringField.ToString()
            };

            var specification = new FilterSpecification <FilterTestEntity>(
                f => f.And(c => c
                           .NotNull(i => i.StringField)
                           .In(i => i.IntField, new[] { 1, 2 })
                           .Or(or1 => or1.Equal(i => i.IntField, 1).StartsWith(i => i.StringField, "1"))
                           .Or(or2 => or2.Equal(i => i.IntField, 2).StartsWith(i => i.StringField, "2"))));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(entity.StringField != null &&
                            new[] { 1, 2 }.Contains(entity.IntField) &&
                            (entity.IntField == 1 || entity.StringField == "1") &&
                            (entity.IntField == 2 || entity.StringField == "2")
                            , result);
        }
        public void SpecificationEqualNuallableGuidTest()
        {
            var filters = new List <FilterModel>();

            var filter = new FilterModel {
                FieldName = "IdNullable", FilterType = FilterType.Text
            };

            var condition = new Condition
            {
                FilterType    = FilterType.Text,
                ConditionType = ConditionType.Equals,
                Value         = Guid.Parse("30b423e0-c928-46a7-8ef6-a3089d673935")
            };

            filter.Conditions.Add(condition);
            filters.Add(filter);

            var spec = FilterSpecification <Customer> .Create(filters);

            var expression = spec.ToExpression();

            Assert.Equal("(Convert(x.IdNullable, Object).ToString() == \"30b423e0-c928-46a7-8ef6-a3089d673935\")", expression.Body.ToString());
        }
        public void SpecificationNestedLessThanOrEqualDecimalTest()
        {
            var filters = new List <FilterModel>();

            var filter = new FilterModel {
                FieldName = "payment.cost", FilterType = FilterType.Text
            };

            var condition = new Condition
            {
                FilterType    = FilterType.Text,
                ConditionType = ConditionType.LessThanOrEqual,
                Value         = 5
            };

            filter.Conditions.Add(condition);
            filters.Add(filter);

            var spec = FilterSpecification <Order> .Create(filters);

            var expression = spec.ToExpression();

            Assert.Equal("(x.Payment.Cost <= Convert(5, Decimal))", expression.Body.ToString());
        }
        public void SpecificationStringFromListTest()
        {
            var filters = new List <FilterModel>();

            var filter = new FilterModel {
                FieldName = "Orders[Payment.Id]", FilterType = FilterType.Text
            };

            var condition = new Condition
            {
                FilterType    = FilterType.Text,
                ConditionType = ConditionType.Equals,
                Value         = "value"
            };

            filter.Conditions.Add(condition);
            filters.Add(filter);

            var spec = FilterSpecification <Customer> .Create(filters);

            var expression = spec.ToExpression();

            Assert.Equal("x.Orders.Any(i => (i.Payment.Id == \"value\"))", expression.Body.ToString());
        }
 public IReadOnlyList <AudioBook> List(FilterSpecification <AudioBook> filterSpecification)
 {
     return(this.bookContext.AudioBooks.Where(filterSpecification).ToList());
 }
		/// <summary>
        /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of makeupfeed_RssSearchResult items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of RssSearchResult items.</returns>
        public async Task<ObservableCollection<EntitiesBase.RssSearchResult>> Search(FilterSpecification filter)
        {
            return RepositoriesBase.Filter<EntitiesBase.RssSearchResult>.FilterCollection(filter, await GetData());
        }
Beispiel #33
0
 /// <summary>
 /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of specialplacesCollectionSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of specialplacesCollectionSchema items.</returns>
 public ObservableCollection <Entities.specialplacesCollectionSchema> Search(FilterSpecification filter)
 {
     return(RepositoriesBase.Filter <Entities.specialplacesCollectionSchema> .FilterCollection(filter, GetData()));
 }
		/// <summary>
        /// Retrieves the data from a RSS data source (http://windowsvj.com/wpblog/feed/rss/), filtered by a filter specification, in an observable collection of RssSearchResult items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of RssSearchResult items.</returns>
        public async Task<ObservableCollection<RssSearchResult>> Search(FilterSpecification filter)
        {
			var data = await LoadData();
            return Filter<RssSearchResult>.FilterCollection(filter, data);
        }
Beispiel #35
0
 /// <summary>
 /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of StatisticsSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of StatisticsSchema items.</returns>
 public ObservableCollection <Entities.StatisticsSchema> Search(FilterSpecification filter)
 {
     return(RepositoriesBase.Filter <Entities.StatisticsSchema> .FilterCollection(filter, _data));
 }
        public void ShouldSupportLessOrEqualOperator([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity { IntField = 3 };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.LessOrEqual(i => i.IntField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(entity.IntField <= value, result);
        }
Beispiel #37
0
 /// <summary>
 /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of photosCollectionSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of photosCollectionSchema items.</returns>
 public ObservableCollection <photosCollectionSchema> Search(FilterSpecification filter)
 {
     return(Filter <photosCollectionSchema> .FilterCollection(filter, _data));
 }
        public void ShouldSupportNotInOperator([Range(0, 5)] int value)
        {
            // Given
            var set = new[] { 1, 2, 3 };
            var entity = new FilterTestEntity { IntField = value };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotIn(i => i.IntField, set)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!set.Contains(value), result);
        }
        public void ShouldSupportNullable()
        {
            // Given
            var entity = new FilterTestEntity { NullableIntField = 1 };

            var specification = new FilterSpecification<FilterTestEntity>(
                builder => builder.Or(condition => condition
                                                       .Equal(i => i.NullableIntField, 10)
                                                       .NotEqual(i => i.NullableIntField, 1)
                                                       .Greater(i => i.NullableIntField, 10)
                                                       .GreaterOrEqual(i => i.NullableIntField, 10)
                                                       .Less(i => i.NullableIntField, 0)
                                                       .LessOrEqual(i => i.NullableIntField, 0)
                                                       .In(i => i.NullableIntField, new int?[] { 0, 2, 4 })
                                                       .NotIn(i => i.NullableIntField, new int?[] { 1, 3, 5 })
                                                       .Between(i => i.NullableIntField, 5, 10)
                                                       .NotBetween(i => i.NullableIntField, 0, 5)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsFalse(result);
        }
        public void ShouldSupportNullOperator()
        {
            // Given
            var entity = new FilterTestEntity { StringField = null };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.Null(i => i.StringField)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
        public void ShouldSupportStartsWithOperator()
        {
            // Given
            var entity = new FilterTestEntity { StringField = "12345" };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.StartsWith(i => i.StringField, "12")));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
		/// <summary>
        /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of RSSDataSource_RssSearchResult items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of RssSearchResult items.</returns>
        public async Task<ObservableCollection<RssSearchResult>> Search(FilterSpecification filter)
        {
            return Filter<RssSearchResult>.FilterCollection(filter, await GetData());
        }
        public void ShouldSupportNotBetweenOperator([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity { IntField = value };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotBetween(i => i.IntField, 1, 4)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!(entity.IntField >= 1 && entity.IntField <= 4), result);
        }
        public void ShouldSupportNotContainsOperatorForString()
        {
            // Given
            var entity = new FilterTestEntity { StringField = "54321" };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotContains(i => i.StringField, "234")));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.IsTrue(result);
        }
		/// <summary>
        /// Retrieves the data from Youtube (channel: gadgtspot ), filtered by a filter specification, in an observable collection of YouTubeVideo items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of YouTubeVideo items.</returns>
        public async Task<ObservableCollection<EntitiesBase.YouTubeVideo>> Search(FilterSpecification filter)
        {
			var data = await GetData(0);
            return RepositoriesBase.Filter<EntitiesBase.YouTubeVideo>.FilterCollection(filter, data);
        }
		/// <summary>
        /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of awardsSchema items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of awardsSchema items.</returns>
        public ObservableCollection<awardsSchema> Search(FilterSpecification filter)
        {			
			return Filter<awardsSchema>.FilterCollection(filter, GetData());
        }
        public void ShouldSupportNotContainsOperatorForCollection([Range(0, 5)] int value)
        {
            // Given
            var entity = new FilterTestEntity { CollectionField = new[] { 1, 2, 3 } };
            var specification = new FilterSpecification<FilterTestEntity>(f => f.And(c => c.NotContains(i => i.CollectionField, value)));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(!entity.CollectionField.Contains(value), result);
        }
        public void ShouldSupportComplexConditions([Range(0, 3)] int intField, [Range(0, 3)] int stringField)
        {
            // Given
            var entity = new FilterTestEntity { IntField = intField, StringField = stringField.ToString() };

            var specification = new FilterSpecification<FilterTestEntity>(
                f => f.And(c => c
                                    .NotNull(i => i.StringField)
                                    .In(i => i.IntField, new[] { 1, 2 })
                                    .Or(or1 => or1.Equal(i => i.IntField, 1).StartsWith(i => i.StringField, "1"))
                                    .Or(or2 => or2.Equal(i => i.IntField, 2).StartsWith(i => i.StringField, "2"))));

            // When
            var result = specification.IsSatisfiedBy(entity);

            // Then
            Assert.AreEqual(entity.StringField != null
                            && new[] { 1, 2 }.Contains(entity.IntField)
                            && (entity.IntField == 1 || entity.StringField == "1")
                            && (entity.IntField == 2 || entity.StringField == "2")
                            , result);
        }
		/// <summary>
        /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of videosDataSource_Video items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of YouTubeVideo items.</returns>
        public async Task<ObservableCollection<YouTubeVideo>> Search(FilterSpecification filter)
        {
            return Filter<YouTubeVideo>.FilterCollection(filter, await GetData());
        }
Beispiel #50
0
        /// <summary>
        /// Retrieves the data from a RSS data source (http://www.dandandin.it/Blog/RSS.aspx?p=1~2~-1&r=f3a58073-d9c8-496e-af7b-f4ee2ae8dd40), filtered by a filter specification, in an observable collection of RssSearchResult items.
        /// </summary>
        /// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of RssSearchResult items.</returns>
        public async Task <ObservableCollection <EntitiesBase.RssSearchResult> > Search(FilterSpecification filter)
        {
            var data = await GetData();

            return(RepositoriesBase.Filter <EntitiesBase.RssSearchResult> .FilterCollection(filter, data));
        }
 /// <summary>
 /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of monumentsCollectionSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of monumentsCollectionSchema items.</returns>
 public ObservableCollection<monumentsCollectionSchema> Search(FilterSpecification filter)
 {
     return Filter<monumentsCollectionSchema>.FilterCollection(filter, _data);
 }
        public void ShouldBuildOperatorDuringTheCall()
        {
            // Given
            var entity = new FilterTestEntity();

            var operatorMock = new Mock<IFilterOperator>();
            operatorMock.Setup(o => o.CreateFilter()).Returns((Expression<Func<FilterTestEntity, bool>>)(item => true));

            var specification = new FilterSpecification<FilterTestEntity>(b => operatorMock.Object);

            // When
            specification.IsSatisfiedBy(entity);
            specification.IsSatisfiedBy(entity);
            specification.IsSatisfiedBy(entity);

            // Then
            operatorMock.Verify(o => o.CreateFilter(), Times.Exactly(3));
        }
Beispiel #53
0
 /// <summary>
 /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of ThaiSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of ThaiSchema items.</returns>
 public ObservableCollection<Entities.ThaiSchema> Search(FilterSpecification filter)
 {
     return RepositoriesBase.Filter<Entities.ThaiSchema>.FilterCollection(filter, GetData());
 }
		/// <summary>
        /// Retrieves the data from Youtube (query: nationalfootballleage ), filtered by a filter specification, in an observable collection of YouTubeVideo items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of YouTubeVideo items.</returns>
        public async Task<ObservableCollection<YouTubeVideo>> Search(FilterSpecification filter)
        {
			var data = await LoadData(1);
            return Filter<YouTubeVideo>.FilterCollection(filter, data);
        }
Beispiel #55
0
 /// <summary>
 /// Retrieves the data from a fake, filtered by a filter specification, in an observable collection of PeopleCollectionSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of PeopleCollectionSchema items.</returns>
 public ObservableCollection <PeopleCollectionSchema> Search(FilterSpecification filter)
 {
     return(Filter <PeopleCollectionSchema> .FilterCollection(filter, GetData()));
 }
Beispiel #56
0
 /// <summary>
 /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of INTERSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of INTERSchema items.</returns>
 public ObservableCollection<Entities.INTERSchema> Search(FilterSpecification filter)
 {
     return RepositoriesBase.Filter<Entities.INTERSchema>.FilterCollection(filter, _data);
 }
		/// <summary>
        /// Retrieves the data from Flickr public data source (Query: 93527926@N06), filtered by a filter specification, in an observable collection of FlickrSearchResult items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of FlickrSearchResult items.</returns>
        public async Task<ObservableCollection<EntitiesBase.FlickrSearchResult>> Search(FilterSpecification filter)
        {
			var data = await GetData();
            return RepositoriesBase.Filter<EntitiesBase.FlickrSearchResult>.FilterCollection(filter, data);
        }
 /// <summary>
 /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of specialplacesCollectionSchema items.
 /// </summary>
 /// <param name="filter">Filter operation specification</param>
 /// <returns>An observable collection of specialplacesCollectionSchema items.</returns>
 public ObservableCollection<specialplacesCollectionSchema> Search(FilterSpecification filter)
 {
     return Filter<specialplacesCollectionSchema>.FilterCollection(filter, _data);
 }
Beispiel #59
0
		/// <summary>
        /// Retrieves the data from a static data source, filtered by a filter specification, in an observable collection of diarySchema items.
        /// </summary>
		/// <param name="filter">Filter operation specification</param>
        /// <returns>An observable collection of diarySchema items.</returns>
        public ObservableCollection<diarySchema> Search(FilterSpecification filter)
        {
            return Filter<diarySchema>.FilterCollection(filter, _data);
        }