public async Task <IActionResult> GetMeetsAsync( [FromQuery] PagingOptions pagingOptions, [FromQuery] SortOptions <Meet, MeetEntity> sortOptions, [FromQuery] SearchOptions <Meet, MeetEntity> searchOptions, CancellationToken ct) { if (!ModelState.IsValid) { return(BadRequest(new ApiError(ModelState))); } pagingOptions.Offset = pagingOptions.Offset ?? _defaultPagingOptions.Offset; pagingOptions.Limit = pagingOptions.Limit ?? _defaultPagingOptions.Limit; var meets = await _meetService.GetMeetsAsync( pagingOptions, sortOptions, searchOptions, ct); var collection = PagedCollection <Meet> .Create <MeetsResponse>( Link.ToCollection(nameof(GetMeetsAsync)), meets.Items.ToArray(), meets.TotalSize, pagingOptions); collection.MeetsQuery = FormMetadata.FromResource <Meet>( Link.ToForm(nameof(GetMeetsAsync), null, Link.GetMethod, Form.QueryRelation)); return(Ok(collection)); }