Exemple #1
0
        public async Task getNearbyToilets(ParseGeoPoint location, Boolean shouldSkip)
        {
            if (currentLocation.Latitude != location.Latitude || currentLocation.Longitude != location.Longitude)
            {
                //New location, so empty data
                _parseToilets.Clear();
                currentLocation = location;
            } 

            var query = new ParseQuery<Toilet>();
            query = query.WhereNear("Location", location);
            query = query.Limit(20);

            if (shouldSkip)
            {
                query = query.Skip(skipCount);
                skipCount += 20;
            }

            IEnumerable<Toilet> result = await query.FindAsync();

            if (shouldSkip)
            {
                result.ToList().ForEach(_parseToilets.Add);
            } else
            {
                _parseToilets.Clear();
                result.ToList().ForEach(_parseToilets.Add);
            }

            foreach (Toilet toilet in _parseToilets)
            {
                toilet.searchLocationPoint = location;
            }
        }
		public async Task<IEnumerable<ITag>> FindTags(string searchQuery, int pageSize, int offset)
		{
			using (var tokenSource = new CancellationTokenSource(Constants.FindTagsTimeout))
			{
				var parseQuery = new ParseQuery<ParseTag>().Where(t => t.Text.StartsWith(searchQuery.Trim())).OrderBy(t => t.Text);
				if (pageSize > 0 && offset >= 0)
				{
					parseQuery = parseQuery.Limit(pageSize).Skip(offset);
				}
				var result = await parseQuery.FindAsync(tokenSource.Token).ConfigureAwait(false);
				return result.Select(s => new Tag(s) as ITag);
			}
		}
		public async Task<IEnumerable<ITag>> FetchTags(int pageSize, int offset)
		{
			using (var tokenSource = new CancellationTokenSource(Constants.FetchTagsTimeout))
			{
				var query = new ParseQuery<ParseTag>().OrderBy(p => p.Text);
				if (pageSize > 0 && offset >= 0)
				{
					query = query.Limit(pageSize).Skip(offset);
				}
				var result = await query.FindAsync(tokenSource.Token).ConfigureAwait(false);
				return result.Select(p => new Tag(p) as ITag);
			}
		}
		public async Task<IEnumerable<IProduct>> FetchStoreProducts(string storeID, int pageSize, int offset, bool includeInvisible = false)
		{
			using (var tokenSource = new CancellationTokenSource(Constants.FetchProductsTimeout))
			{
				var store = ParseObject.CreateWithoutData<ParseStore>(storeID);
				var query = new ParseQuery<ParseProduct>().Where(p => p.Store == store).OrderBy(p => p.LowercaseName);
				query = addProductIncludedFields(query);
				if (!includeInvisible)
				{
					query = addProductVisibilityConditions(query);
				}
				if (pageSize > 0 && offset >= 0)
				{
					query = query.Limit(pageSize).Skip(offset);
				}
				var result = await query.FindAsync();	
				return result.Select(p => new Product(p) as IProduct);
			}
		}