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")); } }