コード例 #1
0
        public async Task <IActionResult> GetTutors(string keywords, string statStr, PaginationParameters paging)
        {
            try
            {
                EnumHelper.TryParse(statStr, out TutorStateEnum? state);
                var results = await _tutorService.GetTutorsAsync(keywords, state, paging.PageNumber, paging.PageSize);

                if (!results.Items.Any())
                {
                    return(NotFound("No tutor 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)
            {
                return(NotFound());
            }
            catch (BadRequestException ex)
            {
                return(BadRequest(ex.Message));
            }
            catch (Exception ex)
            {
                _logger.LogCritical($"GetTutors() error {ex}");
                return(StatusCode(500, "Internal Server Error: " + ex.Message));
            }
        }