public PartialFindResult <TResult> Find <TResult>(Func <Venue, TResult> fac, VenueQueryParams queryParams) { return(HandleQuery(ctx => { var q = ctx.Query <Venue>() .WhereNotDeleted() .WhereHasName(queryParams.TextQuery) .WhereInCircle(queryParams.Coordinates, queryParams.Radius, queryParams.DistanceUnit) .Paged(queryParams.Paging); var entries = q .OrderBy(queryParams.SortRule, PermissionContext.LanguagePreference, queryParams.Coordinates, queryParams.DistanceUnit) .ToArray() .Select(fac) .ToArray(); var count = queryParams.Paging.GetTotalCount ? q.Count() : 0; return PartialFindResult.Create(entries, count); })); }
public PartialFindResult <VenueForApiContract> GetList( string query = "", VenueOptionalFields fields = VenueOptionalFields.None, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, NameMatchMode nameMatchMode = NameMatchMode.Auto, ContentLanguagePreference lang = ContentLanguagePreference.Default, VenueSortRule sortRule = VenueSortRule.Name, double?latitude = null, double?longitude = null, double?radius = null, DistanceUnit distanceUnit = DistanceUnit.Kilometers) { var textQuery = SearchTextQuery.Create(query, nameMatchMode); var queryParams = new VenueQueryParams { Coordinates = new GeoPointQueryParams(latitude, longitude), DistanceUnit = distanceUnit, Paging = new PagingProperties(start, maxResults, getTotalCount), Radius = radius, SortRule = sortRule, TextQuery = textQuery }; return(queries.Find(v => new VenueForApiContract(v, lang, fields), queryParams)); }