コード例 #1
0
        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));
        }