private void OnPropertyListUpdated(PaginatedPropertyList result)
		{
			if(PropertyListUpdatedHandler != null) {
				var args = new PaginatedPropertyListUpdatedEventArgs () {
					LastResult = result
				};
				PropertyListUpdatedHandler (this, args);
			}
		}
        private PaginatedPropertyList GetPaginatedPropertyList(PropertyListRequest requestParams)
        {
            var query = PropertiesQuery(requestParams);
            
            var totalItems = query.Count();
            
            // if no limit for page size, then page size will be equal to total items so we return all results.
            var pageSize = requestParams.PageSize != PropertyListRequest.NoLimitForPageSize ? requestParams.PageSize : totalItems;

            query = query.Skip(requestParams.CurrentPage * pageSize).Take(pageSize);
                                       
            var propertyDtoList = Mapper.Map<IQueryable<Entity.Models.Property>, List<Dto.Models.Property>>(query);
            GenerateUserPhotoLinks(propertyDtoList);

            // If requestParams is not empty, we should have received page info.
            var paginatedList = new PaginatedPropertyList
            {
                Properties = propertyDtoList,
                CurrentPage = requestParams.CurrentPage,
                PageSize =  pageSize,
                TotalPages = (int)Math.Ceiling((double)totalItems / pageSize),
                TotalItems = totalItems
            };
            return paginatedList;
        }
		public async Task GetProperties()
		{
			CurrentPage = 0;

			var requestParams = new PropertyListRequest
			{
				CurrentPage = CurrentPage,
				PageSize = PageSize,
				NameFilter = NameFilter,
				CityFilter = CityFilter,
				StateFilter = StateFilter,
				SortColumn = SortColumn,
				SortAscending = SortAscending,
				UserIdListFilter = UserIdListFilter,
			};
			
			var result = await GetPropertiesAsync(requestParams);
			if(result != null)
			{
				Properties.Clear ();
				foreach (var p in result.Properties)
				{
					Properties.Add(p);
				}
				LastResult = result;
				TotalPages = LastResult.TotalPages;
				OnPropertyListUpdated (result);
			}
		}