示例#1
0
        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);
            }));
        }
示例#2
0
        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));
        }