コード例 #1
0
 public OrganisationSearchController(ILogger <OrganisationSearchController> logger, IMediator mediator, RoatpApiClient roatpApiClient, ReferenceDataApiClient referenceDataApiClient, CompaniesHouseApiClient companiesHouseApiClient, CharityCommissionApiClient charityCommissionApiClient)
 {
     _logger                     = logger;
     _roatpApiClient             = roatpApiClient;
     _referenceDataApiClient     = referenceDataApiClient;
     _companiesHouseApiClient    = companiesHouseApiClient;
     _charityCommissionApiClient = charityCommissionApiClient;
     _mediator                   = mediator;
 }
        public void Before_each_test()
        {
            var httpClient = new HttpClient
            {
                BaseAddress = new Uri(RoatpApiBaseAddress),
            };

            httpClient.DefaultRequestHeaders.Add("Accept", "application/json");

            var logger = new Mock <ILogger <RoatpApiClient> >();

            var hostingEnvironment = new Mock <IHostingEnvironment>();

            _config = new ConfigurationService(hostingEnvironment.Object, "LOCAL", ConnectionString, Version, ServiceName);

            _config.GetConfig().GetAwaiter().GetResult().RoatpApiAuthentication.ApiBaseAddress = RoatpApiBaseAddress;

            _apiClient = new RoatpApiClient(httpClient, logger.Object, new RoatpTokenService(_config));
        }
コード例 #3
0
        public List <Provider> GetAllProvidersFromApi()
        {
            var roatpapiclient = new RoatpApiClient(_uri);

            return(roatpapiclient.FindAll().ToList());
        }
コード例 #4
0
        public static void ImportRoATPData(Object stateInfo)
        {
            Boolean automatedTaskStarted = false;

            try
            {
                if (String.IsNullOrEmpty(Constants.ConfigSettings.RoATPAPIImportTime))
                {
                    // Log Warning about RoATPAPIImportTime not being set
                    AppGlobal.Log.WriteError(AppGlobal.Language.GetText("Automation_RoATPAPIImport_ImportTimeNotConfigured", "Error Importing RoATP Data.  RoATPAPIImportTime Not Configured", false, languageId));
                    return;
                }

                if (DateTime.Now.ToString("HH:mm") == Constants.ConfigSettings.RoATPAPIImportTime)
                {
                    // Ensure that another server hasn't picked this up
                    if (!CanRunAutomatedTask(AutomatedTaskName.RoATPAPI))
                    {
                        AppGlobal.Log.WriteLog(AppGlobal.Language.GetText("Automation_RoATPImport_Running", "Automated RoATP API data import running on a different server", false, languageId));
                        return;
                    }

                    automatedTaskStarted = true;

                    // Do the import
                    new Thread(() =>
                    {
                        try
                        {
                            using (ProviderPortalEntities db = new ProviderPortalEntities())
                            {
                                List <Int32> ukprns = new List <Int32>();
                                using (RoatpApiClient client = new RoatpApiClient())
                                {
                                    foreach (SFA.Roatp.Api.Types.Provider apiProvider in client.FindAll())
                                    {
                                        if (apiProvider.ProviderType == SFA.Roatp.Api.Types.ProviderType.MainProvider)
                                        {
                                            if (apiProvider.Ukprn <= Int32.MaxValue) // Should always be but just incase
                                            {
                                                ukprns.Add(Convert.ToInt32(apiProvider.Ukprn));
                                            }
                                        }

                                        List <Provider> providers = db.Providers.Where(x => x.Ukprn == apiProvider.Ukprn && x.RecordStatusId == (Int32)Constants.RecordStatus.Live).ToList();
                                        if (providers.Count > 0)
                                        {
                                            foreach (Provider provider in providers)
                                            {
                                                RoATPProviderType providerType = db.RoATPProviderTypes.Find((Int32)apiProvider.ProviderType);
                                                if (providerType != null)
                                                {
                                                    if (provider.RoATPProviderType != providerType || provider.RoATPStartDate != apiProvider.StartDate || provider.ApprenticeshipContract != (apiProvider.ProviderType == SFA.Roatp.Api.Types.ProviderType.MainProvider))
                                                    {
                                                        // Provider found and updated - log it.
                                                        AppGlobal.Log.WriteLog(String.Format(AppGlobal.Language.GetText("Automation_RoATPImport_ProviderUpdated", "Automated RoATP API data import updated provider {0} for ukprn {1}", false, languageId), provider.ProviderId, provider.Ukprn));

                                                        provider.RoATPProviderType      = providerType;
                                                        provider.RoATPStartDate         = apiProvider.StartDate;
                                                        provider.ApprenticeshipContract = apiProvider.ProviderType == SFA.Roatp.Api.Types.ProviderType.MainProvider;
                                                        db.Entry(provider).State        = EntityState.Modified;
                                                    }
                                                }
                                            }
                                        }
                                        else
                                        {
                                            // Provider not found - log it
                                            AppGlobal.Log.WriteLog(String.Format(AppGlobal.Language.GetText("Automation_RoATPImport_ProviderNotFound", "Automated RoATP API data import no provider found for ukprn {0}", false, languageId), apiProvider.Ukprn));
                                        }
                                    }
                                }

                                // Get current apprenticeship provers who are not in the API
                                foreach (Provider provider in db.Providers.Where(x => x.ApprenticeshipContract == true && !ukprns.Contains(x.Ukprn)))
                                {
                                    // Log it
                                    AppGlobal.Log.WriteLog(String.Format(AppGlobal.Language.GetText("Automation_RoATPImport_RemovedProviderFromRoATP", "Automated RoATP API data import removed provider {0} from RoATP, ukprn {1}", false, languageId), provider.ProviderId, provider.Ukprn));

                                    provider.ApprenticeshipContract = false;
                                    db.Entry(provider).State        = EntityState.Modified;
                                }

                                // Save the changes
                                db.SaveChanges();
                            }

                            // Complete the task
                            CompleteAutomatedTask(AutomatedTaskName.RoATPAPI);
                        }
                        catch (Exception ex)
                        {
                            // Send Email
                            foreach (String address in Constants.ConfigSettings.RoATPImportErrorEmailAddress.Split(';'))
                            {
                                //AppGlobal.EmailQueue.AddToSendQueue(
                                //    TemplatedEmail.EmailMessage(
                                //        new MailAddress(address),
                                //        null,
                                //        new MailAddress(Constants.ConfigSettings.AutomatedFromEmailAddress, Constants.ConfigSettings.AutomatedFromEmailName),
                                //        Constants.EmailTemplates.RoATPImportError,
                                //        new List<EmailParameter>
                                //        {
                                //            new EmailParameter("%EXCEPTION%", ex.Message),
                                //            new EmailParameter("%STACKTRACE%", ex.StackTrace)
                                //        },
                                //        AppGlobal.Language.GetText("TemplatedEmail_EmailOverride_FormatString", "<p>This email was originally sent to {0}:<p>{1}", false, languageId)));

                                var emailMessage = TemplatedEmail.EmailMessage(
                                    new MailAddress(address),
                                    null,
                                    new MailAddress(Constants.ConfigSettings.AutomatedFromEmailAddress, Constants.ConfigSettings.AutomatedFromEmailName),
                                    Constants.EmailTemplates.RoATPImportError,
                                    new List <EmailParameter>
                                {
                                    new EmailParameter("%EXCEPTION%", ex.Message),
                                    new EmailParameter("%STACKTRACE%", ex.StackTrace)
                                },
                                    AppGlobal.Language.GetText("TemplatedEmail_EmailOverride_FormatString", "<p>This email was originally sent to {0}:<p>{1}", false, languageId));

                                var response = SfaSendGridClient.SendGridEmailMessage(emailMessage, null);
                            }

                            AppGlobal.Log.WriteError(String.Format(AppGlobal.Language.GetText("Automation_RoATPImport_GenericError", "Automated RoATP API Data Importer Failed With Error: {0}", false, languageId), ex.Message));
                            if (automatedTaskStarted)
                            {
                                CompleteAutomatedTask(AutomatedTaskName.RoATPAPI);
                            }
                        }
                    }).Start();
                }
            }
            catch (Exception ex)
            {
                AppGlobal.Log.WriteError(String.Format(AppGlobal.Language.GetText("Automation_RoATPImport_GenericError", "Automated RoATP API Data Importer Failed With Error: {0}", false, languageId), ex.Message));
                if (automatedTaskStarted)
                {
                    CompleteAutomatedTask(AutomatedTaskName.RoATPAPI);
                }
            }
        }