public void PropertyFilter_Base_IsValid() { // Arrange var filter = new PropertyFilter(); // Act var result = filter.IsValid(); // Assert result.Should().BeTrue(); }
public void PropertyFilter_False() { // Arrange var query = Microsoft.AspNetCore.WebUtilities.QueryHelpers.ParseQuery("?page=0"); var filter = new PropertyFilter(query); // Act var result = filter.IsValid(); // Assert result.Should().BeFalse(); }
/// <summary> /// Get an array of properties within the specified filters. /// Will not return sensitive properties unless the user has the `sensitive-view` claim and belongs to the owning organization. /// Note that the 'parcelFilter' will control the 'page' and 'quantity'. /// </summary> /// <param name="filter"></param> /// <returns></returns> public IEnumerable <PimsProperty> Get(PropertyFilter filter) { this.User.ThrowIfNotAuthorized(Permissions.PropertyView); filter.ThrowIfNull(nameof(filter)); if (!filter.IsValid()) { throw new ArgumentException("Argument must have a valid filter", nameof(filter)); } var query = this.Context.GeneratePropertyQuery(this.User, filter); var properties = query.ToArray(); // TODO: Add optional paging ability to query. return(properties); }
/// <summary> /// Get a page with an array of properties within the specified filters. /// Will not return sensitive properties unless the user has the `sensitive-view` claim and belongs to the owning organization. /// Note that the 'parcelFilter' will control the 'page' and 'quantity'. /// </summary> /// <param name="filter"></param> /// <returns></returns> public Paged <PimsProperty> GetPage(PropertyFilter filter) { this.User.ThrowIfNotAuthorized(Permissions.PropertyView); filter.ThrowIfNull(nameof(filter)); if (!filter.IsValid()) { throw new ArgumentException("Argument must have a valid filter", nameof(filter)); } var skip = (filter.Page - 1) * filter.Quantity; var query = this.Context.GeneratePropertyQuery(this.User, filter); var items = query .Skip(skip) .Take(filter.Quantity) .ToArray(); return(new Paged <PimsProperty>(items, filter.Page, filter.Quantity, query.Count())); }