Example #1
0
        public static void StartUp(ILogger functionLogger, ExecutionContext context)
        {
            _logger = new AggregateLogger("das-assessor-service-func-externalapidatasync", functionLogger, context);

            var configuration = ConfigurationHelper.GetConfiguration();

            _logger.LogInformation("Initialising bootstrapper ....");
            _logger.LogInformation("Config Received");

            Container = new Container(configure =>
            {
                configure.Scan(x =>
                {
                    x.TheCallingAssembly();
                    x.WithDefaultConventions();
                });

                configure.For <IAggregateLogger>().Use(_logger).Singleton();
                configure.For <IWebConfiguration>().Use(configuration).Singleton();
                configure.For <IDbConnection>().Use(c => new SqlConnection(configuration.SqlConnectionString));
            });

            var language = "en-GB";

            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo(language);
        }
        public async Task Execute()
        {
            _aggregateLogger.LogInformation("External Api Data Sync Function Started");
            _aggregateLogger.LogInformation($"Process Environment = {EnvironmentVariableTarget.Process}");

            if (_allowDataSync)
            {
                try
                {
                    _aggregateLogger.LogInformation("Proceeding with External Api Data Sync...");

                    using (var destinationSqlConnection = new SqlConnection(_destinationConnectionString))
                    {
                        if (!destinationSqlConnection.State.HasFlag(ConnectionState.Open))
                        {
                            destinationSqlConnection.Open();
                        }

                        using (var transaction = destinationSqlConnection.BeginTransaction())
                        {
                            Step0_TearDown_Database(transaction);
                            Step1_Organisation_Data(transaction);
                            Step2_Contacts_Data(transaction);
                            Step3_Standard_Data(transaction);
                            Step4_OrganisationStandard_Data(transaction);
                            Step5_Obfuscate_Personal_Data(transaction);
                            Step6_Generate_Test_Data(transaction);

                            transaction.Commit();
                        }
                    }

                    _aggregateLogger.LogInformation("External Api Data Sync completed");
                }
                catch (TransactionAbortedException ex)
                {
                    _aggregateLogger.LogError(ex, "Transaction was aborted during External Api Data Sync");
                }
                catch (SqlException ex)
                {
                    _aggregateLogger.LogError(ex, "SqlException occurred during External Api Data Sync");
                }
                catch (Exception ex)
                {
                    _aggregateLogger.LogError(ex, "Unknown Error occurred during External Api Data Sync");
                }
            }
            else
            {
                _aggregateLogger.LogInformation("External Api Data Sync is disabled at this time");
            }

            await Task.CompletedTask;
        }