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()); }
private async Task <string> GetProviderName(int ukprn) { var provider = (await _roatpApiClient.SearchOrganisationByUkprn(ukprn)).FirstOrDefault(); if (provider == null) { _logger.LogError($"Training provider {ukprn} not found in RoATP."); } return(provider?.ProviderName); }
private async Task <PaginatedList <CertificateSummaryResponse> > MapCertificates(PaginatedList <Certificate> certificates) { var trainingProviderName = string.Empty; var firstName = string.Empty; var lastName = string.Empty; var reasonForChange = string.Empty; var certificateResponses = new List <CertificateSummaryResponse>(); foreach (var certificate in certificates.Items) { var certificateData = JsonConvert.DeserializeObject <CertificateData>(certificate.CertificateData); var recordedBy = certificate.CreatedBy; try { if (certificateData.ProviderName == null) { var provider = (await _roatpApiClient.SearchOrganisationByUkprn(certificate.ProviderUkPrn)).FirstOrDefault(); if (provider == null) { throw new EntityNotFoundException($"Training provider {certificate.ProviderUkPrn} not found", null); } trainingProviderName = provider?.ProviderName; await _certificateRepository.UpdateProviderName(certificate.Id, trainingProviderName); } else { trainingProviderName = certificateData.ProviderName; } firstName = certificateData.LearnerGivenNames; lastName = certificateData.LearnerFamilyName; reasonForChange = certificate.CertificateLogs .OrderByDescending(q => q.EventTime) .FirstOrDefault(certificateLog => certificateLog.Status == Domain.Consts.CertificateStatus.Draft && certificateLog.Action == Domain.Consts.CertificateStatus.Rejected)?.ReasonForChange; } catch (EntityNotFoundException) { _logger.LogInformation( $"Cannot find training provider for ukprn {certificate.Organisation.EndPointAssessorUkprn.Value}"); } certificateResponses.Add(new CertificateSummaryResponse { CertificateReference = certificate.CertificateReference, Uln = certificate.Uln, CreatedDay = certificate.CreateDay, UpdatedAt = certificate.UpdatedAt, ContactOrganisation = certificateData.ContactOrganisation, ContactName = certificateData.ContactName, TrainingProvider = trainingProviderName, RecordedBy = recordedBy, CourseOption = certificateData.CourseOption, FullName = certificateData.FullName, OverallGrade = certificateData.OverallGrade, StandardReference = certificateData.StandardReference, StandardName = certificateData.StandardName, Level = certificateData.StandardLevel, AchievementDate = certificateData.AchievementDate, LearningStartDate = certificateData.LearningStartDate, ContactAddLine1 = certificateData.ContactAddLine1, ContactAddLine2 = certificateData.ContactAddLine2, ContactAddLine3 = certificateData.ContactAddLine3, ContactAddLine4 = certificateData.ContactAddLine4, ContactPostCode = certificateData.ContactPostCode, Status = certificate.Status, PrivatelyFundedStatus = certificate.PrivatelyFundedStatus, FirstName = firstName, LastName = lastName, Ukprn = certificate.ProviderUkPrn, StandardCode = certificate.StandardCode, EpaoId = certificate.Organisation?.EndPointAssessorOrganisationId, EpaoName = certificate.Organisation?.EndPointAssessorName, CertificateId = certificate.Id, ReasonForChange = reasonForChange }); } var responses = certificateResponses.ToList(); foreach (var response in responses) { var contact = await _contactQueryRepository.GetContact(response.RecordedBy); response.RecordedBy = contact?.DisplayName; response.RecordedByEmail = contact?.Email; } var paginatedList = new PaginatedList <CertificateSummaryResponse>(responses, certificates.TotalRecordCount, certificates.PageIndex, certificates.PageSize ); return(paginatedList); }