コード例 #1
0
        public async Task <IActionResult> GetTutors(string keywords, PaginationParameters paging)
        {
            try
            {
                if (paging.PageNumber <= 0)
                {
                    return(BadRequest("page number must larger then 0"));
                }

                var results = await _tutorService.GetPagedTutorsAsync(keywords, paging.PageNumber, paging.PageSize);

                if (!results.Items.Any())
                {
                    return(NotFound("tutor not found"));
                }

                var paginationMetadata = GeneratePaginationMetadata(results.TotalCount, results.TotalPages, results.PageSize, results.CurrentPage);
                Response.Headers.Add("X-Pagination", paginationMetadata);
                Response.Headers.Add("Access-Control-Expose-Headers", "X-Pagination");

                return(Ok(results.Items));
            }
            catch (NotFoundException ex)
            {
                return(NotFound(ex.Message));
            }
            catch (Exception ex)
            {
                _logger.LogCritical($"GetTutors() Error: {ex}");
                return(StatusCode(500, "Internal Server Error"));
            }
        }