Example #1
0
        public ICollection <OfferModel> SimpleSearch(SimpleSearchCriteria criteria)
        {
            var searchModel = criteria.MapToSearchModel();

            var queryProvider = new SimpleSearchQueryProvider(searchModel);
            var query         = queryProvider.GetSearchExpression();
            var result        = _repository.GetWithExpression(query, 1000, 1);

            var offerModels = result
                              .Select(x => x.MapToOfferModel())
                              .ToList();

            return(offerModels);
        }
        public void GetSearchExpression_returns_correct_query_for_simple_search()
        {
            var searchModel = new SearchModel {
                MaxCost = "1000", NumberOfRooms = "1"
            };

            var sut      = new SimpleSearchQueryProvider(searchModel);
            var expected = new CtsAndQuery(
                new CtsElementRangeQuery(OfferConstants.TotalCost, "'<='", new XsDouble(searchModel.MaxCost).Query),
                new CtsElementRangeQuery(OfferConstants.Rooms, "'>='", new XsInteger(searchModel.NumberOfRooms).Query),
                new CtsNotQuery(new CtsElementValueQuery(OfferConstants.OfferType, OfferTypeConstants.Outdated)),
                new CtsCollectionQuery(OfferConstants.CollectionName)).Query;

            var result = sut.GetSearchExpression().Query;

            Assert.AreEqual(expected, result);
        }