예제 #1
0
        public IActionResult ProviderSearch([FromQuery] string filter, [FromQuery] int pageNumber, [FromQuery] int pageSize)
        {
            var request = new ProviderSearchRequest()
            {
                PageNumber = pageNumber,
                PageSize   = pageSize,
                SearchTerm = filter
            };

            return(Ok(_providerService.SearchProviderAsync(request).Result));
        }
예제 #2
0
        public async Task <PagedResult <ProviderGridItem> > SearchProviderAsync(ProviderSearchRequest request)
        {
            var items       = new ProviderGridItem[] { };
            var pagedResult = new PagedResult <ProviderGridItem>();

            HttpResponseMessage response = await client.GetAsync(QueryWithWhereClause(request)).ConfigureAwait(false);

            if (response.IsSuccessStatusCode)
            {
                items = await response.Content.ReadAsAsync <ProviderGridItem[]>();
            }

            pagedResult.PageSize      = request.PageSize.GetValueOrDefault(100);
            pagedResult.PageNumber    = request.PageNumber.GetValueOrDefault(1);
            pagedResult.TotalRowCount = items.Count();
            pagedResult.Items         = items.Skip((pagedResult.PageNumber - 1) * pagedResult.PageSize).Take(pagedResult.PageSize).ToArray();

            return(pagedResult);
        }
예제 #3
0
        private string QueryWithWhereClause(ProviderSearchRequest request)
        {
            var selectClause = QuerySelectClause();
            var whereClause  = new StringBuilder();

            whereClause.Append(QuerySelectClause());

            if (!string.IsNullOrWhiteSpace(request.SearchTerm))
            {
                whereClause.Append(" where");
                whereClause.Append($" provider_name like %27%25{request.SearchTerm}%25%27");
                whereClause.Append(" OR ");
                whereClause.Append($"federal_provider_number like %27%25{request.SearchTerm}%25%27");
                whereClause.Append(" OR ");
                whereClause.Append($"provider_zip_code like %27%25{request.SearchTerm}%25%27");
            }

            return(whereClause.ToString());
        }
예제 #4
0
        public async Task <ActionResult> ProviderSearch([FromBody] ProviderSearchRequest request)
        {
            var criteria = new ProviderSearchCriteriaStructure()
            {
                Keyword    = request.Keyword,
                Region     = request.Region,
                TopResults = request.TopResults,
                Town       = request.Town
            };

            _log.LogInformation($"Provider search with keyword {request.Keyword}");
            var result = await _service.ProviderSearch(_log, criteria);

            var response = new ProviderSearchResponse()
            {
                ODataContext = result.ODataContext,
                ODataCount   = result.ODataCount,
                SearchFacets = result.SearchFacets,
                Value        = result.Value.Select(i => new ProviderSearchResponseItem()
                {
                    CourseDirectoryName = i.CourseDirectoryName,
                    id             = i.id,
                    Name           = i.Name,
                    Postcode       = i.Postcode,
                    ProviderAlias  = i.ProviderAlias,
                    ProviderStatus = i.ProviderStatus,
                    Region         = i.Region,
                    Status         = i.Status,
                    Town           = i.Town,
                    TradingName    = i.TradingName,
                    UKPRN          = i.UKPRN
                })
            };

            return(new OkObjectResult(response));
        }