private IEnumerable <CoreProvider> CreateApprenticeshipProviders(ProviderSourceDto source) { var apprenticeshipProviders = CreateApprenticeshipProvidersFcs(source).ToList(); apprenticeshipProviders.AddRange(CreateApprenticeshipProvidersRoatp(source).ToList()); return(apprenticeshipProviders); }
private IEnumerable <CoreProvider> CreateApprenticeshipProvidersRoatp(ProviderSourceDto source) { foreach (var courseDirectoryProvider in source.CourseDirectoryProviders.Providers) { CoreProvider provider; var roatpProvider = new RoatpProviderResult(); var providerFromRoatp = false; var ukrlpProvider = source.UkrlpProviders.MatchingProviderRecords.FirstOrDefault(x => x.UnitedKingdomProviderReferenceNumber == courseDirectoryProvider.Ukprn.ToString()); foreach (var roatpProviderResult in source.RoatpProviders) { if (roatpProviderResult.Ukprn == courseDirectoryProvider.Ukprn.ToString() && roatpProviderResult.ProviderType == ProviderType.MainProvider && roatpProviderResult.IsDateValid()) { providerFromRoatp = true; roatpProvider = roatpProviderResult; } } if (!providerFromRoatp) { continue; } provider = _courseDirectoryProviderMapper.Map(courseDirectoryProvider); provider.CurrentlyNotStartingNewApprentices = roatpProvider.NotStartingNewApprentices; provider.LegalName = ukrlpProvider?.ProviderName; provider.IsEmployerProvider = source.EmployerProviders.Providers.Contains(provider.Ukprn.ToString()); provider.IsHigherEducationInstitute = source.HeiProviders.Providers.Contains(provider.Ukprn.ToString()); provider.HasNonLevyContract = false; //roatpProvider.ContractedForNonLeviedEmployers; provider.HasParentCompanyGuarantee = roatpProvider.ParentCompanyGuarantee; provider.IsNew = roatpProvider.NewOrganisationWithoutFinancialTrackRecord; provider.IsLevyPayerOnly = !source.ActiveProviders.Providers.Contains(courseDirectoryProvider.Ukprn); var byProvidersFiltered = source.AchievementRateProviders.Rates.Where(bp => bp.Ukprn == provider.Ukprn); provider.Frameworks.ForEach(m => _providerDataService.UpdateFramework(m, source.Frameworks, byProvidersFiltered, source.AchievementRateNationals)); provider.Standards.ForEach(m => _providerDataService.UpdateStandard(m, source.Standards, byProvidersFiltered, source.AchievementRateNationals)); _providerDataService.SetLearnerSatisfactionRate(source.LearnerSatisfactionRates, provider); _providerDataService.SetEmployerSatisfactionRate(source.EmployerSatisfactionRates, provider); _providerDataService.SetProviderFeedback(source.ProviderFeedback, provider); yield return(provider); } }
private IEnumerable <CoreProvider> CreateApprenticeshipProvidersFcs(ProviderSourceDto source) { foreach (var courseDirectoryProvider in source.CourseDirectoryProviders.Providers) { CoreProvider provider; if (!source.ActiveProviders.Providers.Contains(courseDirectoryProvider.Ukprn)) { continue; } var ukrlpProvider = source.UkrlpProviders.MatchingProviderRecords.FirstOrDefault(x => x.UnitedKingdomProviderReferenceNumber == courseDirectoryProvider.Ukprn.ToString()); provider = _courseDirectoryProviderMapper.Map(courseDirectoryProvider); provider.LegalName = ukrlpProvider?.ProviderName; provider.IsHigherEducationInstitute = source.HeiProviders.Providers.Contains(provider.Ukprn.ToString()); provider.HasNonLevyContract = true; provider.HasParentCompanyGuarantee = false; provider.IsNew = false; provider.IsLevyPayerOnly = false; var roatpProvider = source.RoatpProviders.Where(x => x.Ukprn == courseDirectoryProvider.Ukprn.ToString()).ToList(); provider.CurrentlyNotStartingNewApprentices = roatpProvider.Count > 0 && roatpProvider.First().NotStartingNewApprentices; var byProvidersFiltered = source.AchievementRateProviders.Rates.Where(bp => bp.Ukprn == provider.Ukprn); provider.Frameworks.ForEach(m => _providerDataService.UpdateFramework(m, source.Frameworks, byProvidersFiltered, source.AchievementRateNationals)); provider.Standards.ForEach(m => _providerDataService.UpdateStandard(m, source.Standards, byProvidersFiltered, source.AchievementRateNationals)); _providerDataService.SetLearnerSatisfactionRate(source.LearnerSatisfactionRates, provider); _providerDataService.SetEmployerSatisfactionRate(source.EmployerSatisfactionRates, provider); _providerDataService.SetProviderFeedback(source.ProviderFeedback, provider); yield return(provider); } }
private IEnumerable <CoreProvider> CreateApiProviders(ProviderSourceDto source) { var invalid = 0; var roatpProviderResults = source.RoatpProviders.ToList(); _log.Debug("Mapping API providers from valid ROATP providers", new Dictionary <string, object> { { "TotalCount", roatpProviderResults.Count } }); var missing = roatpProviderResults.Where(x => source.UkrlpProviders.MatchingProviderRecords.All(y => y.UnitedKingdomProviderReferenceNumber != x.Ukprn)).ToList(); if (missing.Any()) { _log.Warn("Missing providers from UKRLP", new Dictionary <string, object> { { "TotalCount", missing.Count }, { "Body", JsonConvert.SerializeObject(missing.Select(x => x.Ukprn)) } }); } foreach (var roatpProvider in roatpProviderResults) { var ukrlpProvider = source.UkrlpProviders.MatchingProviderRecords.FirstOrDefault(x => x.UnitedKingdomProviderReferenceNumber == roatpProvider.Ukprn); var courseDirectory = source.CourseDirectoryProviders.Providers.FirstOrDefault(x => x.Ukprn.ToString() == roatpProvider.Ukprn); CoreProvider provider; var roatProviderUkprn = int.Parse(roatpProvider.Ukprn); if (ukrlpProvider != null) { provider = _ukrlpProviderMapper.Map(ukrlpProvider); if (!string.IsNullOrEmpty(ukrlpProvider?.ProviderName)) { provider.Name = ukrlpProvider.ProviderName; } provider.Addresses = ukrlpProvider?.ProviderContact.Select(_ukrlpProviderMapper.MapAddress); provider.Aliases = ukrlpProvider?.ProviderAliases; } else { _log.Warn("Provider doesn't exist on UKRLP", new Dictionary <string, object> { { "UKPRN", roatProviderUkprn } }); continue; } if (courseDirectory != null) { provider.ContactDetails.Email = courseDirectory.Email ?? provider.ContactDetails.Email; provider.ContactDetails.Website = courseDirectory.Website ?? provider.ContactDetails.Website; provider.ContactDetails.Phone = courseDirectory.Phone ?? provider.ContactDetails.Phone; provider.MarketingInfo = courseDirectory.MarketingInfo; provider.IsLevyPayerOnly = !source.ActiveProviders.Providers.Contains(courseDirectory.Ukprn); } provider.IsEmployerProvider = roatpProvider.ProviderType == ProviderType.EmployerProvider; provider.IsHigherEducationInstitute = source.HeiProviders.Providers.Contains(provider.Ukprn.ToString()); provider.HasParentCompanyGuarantee = roatpProvider.ParentCompanyGuarantee; provider.IsNew = roatpProvider.NewOrganisationWithoutFinancialTrackRecord; provider.CurrentlyNotStartingNewApprentices = roatpProvider.NotStartingNewApprentices; _providerDataService.SetLearnerSatisfactionRate(source.LearnerSatisfactionRates, provider); _providerDataService.SetEmployerSatisfactionRate(source.EmployerSatisfactionRates, provider); _providerDataService.SetProviderFeedback(source.ProviderFeedback, provider); if (!provider.IsValid()) { _log.Warn( "API Provider is invalid", new Dictionary <string, object> { { "Body", JsonConvert.SerializeObject(provider, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }) }, { "UKPRN", provider.Ukprn } }); invalid++; } else { yield return(provider); } } if (invalid > 0) { _log.Warn("Invalid API Providers were found", new Dictionary <string, object> { { "TotalCount", invalid } }); } }