示例#1
0
        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>();
        }
示例#2
0
        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"));
            }
        }
示例#3
0
        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);
            }
        }