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