Ejemplo n.º 1
0
        private async Task <IEnumerable <OrganisationSearchResult> > GetAtpRegisterResults(string name, IEnumerable <string> exactNames, int?ukprn)
        {
            var results = new List <OrganisationSearchResult>();

            if (ukprn.HasValue)
            {
                try
                {
                    var response = await _roatpApiClient.SearchOrganisationByUkprn(ukprn.Value);

                    if (response != null)
                    {
                        results.AddRange(response);
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Error from ATP Register. UKPRN: {ukprn} , Message: {ex.Message}");
                }
            }

            if (!string.IsNullOrEmpty(name))
            {
                try
                {
                    var response = await _roatpApiClient.SearchOrganisationByName(name, false);

                    if (response != null)
                    {
                        results.AddRange(response);
                    }
                }
                catch (Exception ex)
                {
                    _logger.LogError($"Error from ATP Register. {name} , Message: {ex.Message}");
                }
            }

            if (exactNames != null)
            {
                foreach (var exactName in exactNames)
                {
                    try
                    {
                        var response = await _roatpApiClient.SearchOrganisationByName(exactName, true);

                        if (response != null)
                        {
                            results.AddRange(response);
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.LogError($"Error from ATP Register. Exact Name: {exactName} , Message: {ex.Message}");
                    }
                }
            }

            return(results.GroupBy(r => r.Ukprn).Select(group => group.First()).ToList());
        }