Example #1
0
        public (ICollection <OfferModel>, ICollection <PointOfInterest>) AdvancedSearch(AdvancedSearchCriteria criteria)
        {
            var searchModel = criteria.MapToSearchModel();

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

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

            var pointsOfInterest = GeocodePointsOfInterest(criteria.PointsOfInterest);

            var resultOffers = FilterByDistanceAndTime(offerModels, pointsOfInterest);

            return(resultOffers, pointsOfInterest);
        }