Exemple #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());
        }
        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);
        }
Exemple #3
0
        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);
        }