public async Task OnGetAsync() { var searchResourceParameter = new SearchResourceParameter() { PageNumber = CurrentPage, PageSize = PageSize, SortBy = SortBy, AscDesc = SortOrder, Option = SearchOption, Name = Name, Group = GroupName }; Stopwatch timer = new Stopwatch(); timer.Start(); var searchResult = await _searchService.Get(searchResourceParameter); timer.Stop(); Data = searchResult; Count = searchResult.Any() ? searchResult.First().TotalRows : 0; ResponseTime = timer.ElapsedMilliseconds; Groups = new SelectList(_groupService.Get().Select(s => s.Name).ToList()); SearchOptions = _htmlHelper.GetEnumSelectList <SearchOption>(); }
public async Task <IActionResult> Get([FromQuery] SearchResourceParameter resourceParameter) { try { Stopwatch timer = new Stopwatch(); timer.Start(); var searchResult = await _searchService.Get(resourceParameter); timer.Stop(); var searchResponse = new SearchViewModel() { Total = searchResult.Any() ? searchResult.Count : 0, Results = _mapper.Map <IEnumerable <SearchResultViewModel> >(searchResult), SearchOption = resourceParameter.Option, ResponseTime = timer.ElapsedMilliseconds }; return(Ok(searchResponse)); } catch (Exception ex) { _logger.LogCritical($"Exception happened searching person", ex); return(StatusCode(500, "A problem happened while handling your request")); } }
public async Task <List <SearchResultDto> > Get(SearchResourceParameter resourceParameter) { if (resourceParameter.Option == SearchOption.Dapper)//default { return(await _searchRepository.GetSearchResultUsingDapper(resourceParameter.Name, resourceParameter.Group, resourceParameter.PageNumber, resourceParameter.PageSize, resourceParameter.SortColumn, resourceParameter.SortOrderOption)); } else { //2 calls to the database makes this inefficient var result = await _searchRepository.GetSearchResultUsingEFCore(resourceParameter.Name, resourceParameter.Group, resourceParameter.PageNumber, resourceParameter.PageSize, resourceParameter.SortColumn, resourceParameter.SortOrderOption); var count = _searchRepository.Count(resourceParameter.Name, resourceParameter.Group); result.ForEach(r => r.TotalRows = count); return(result); } }