Esempio n. 1
0
        public override void Init(IServiceContainer serviceContainer, IDictionary <string, string> jobArgsDictionary)
        {
            base.Init(serviceContainer, jobArgsDictionary);

            InitializationConfiguration = _serviceProvider.GetRequiredService <IOptionsSnapshot <InitializationConfiguration> >().Value;

            var serializer  = new ServiceBusMessageSerializer();
            var topicClient = new TopicClientWrapper(InitializationConfiguration.EmailPublisherConnectionString, InitializationConfiguration.EmailPublisherTopicName);
            var enqueuer    = new EmailMessageEnqueuer(topicClient, serializer, LoggerFactory.CreateLogger <EmailMessageEnqueuer>());

            EmailService = new AsynchronousEmailMessageService(
                enqueuer,
                LoggerFactory.CreateLogger <AsynchronousEmailMessageService>(),
                InitializationConfiguration);

            FromAddress = new MailAddress(InitializationConfiguration.MailFrom);

            var storageAccount = CloudStorageAccount.Parse(InitializationConfiguration.DataStorageAccount);
            var storageFactory = new AzureStorageFactory(
                storageAccount,
                InitializationConfiguration.ContainerName,
                LoggerFactory.CreateLogger <AzureStorage>());

            Storage = storageFactory.Create();
        }
        protected SupportRequestsNotificationScheduledTask(
            InitializationConfiguration configuration,
            Func <Task <SqlConnection> > openSupportRequestSqlConnectionAsync,
            ILoggerFactory loggerFactory)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            if (loggerFactory == null)
            {
                throw new ArgumentNullException(nameof(loggerFactory));
            }

            var serializer     = new ServiceBusMessageSerializer();
            var topicClient    = new TopicClientWrapper(configuration.EmailPublisherConnectionString, configuration.EmailPublisherTopicName);
            var enqueuer       = new EmailMessageEnqueuer(topicClient, serializer, loggerFactory.CreateLogger <EmailMessageEnqueuer>());
            var messageService = new AsynchronousEmailMessageService(
                enqueuer,
                loggerFactory.CreateLogger <AsynchronousEmailMessageService>(),
                configuration);

            _messagingService = new MessagingService(messageService, loggerFactory.CreateLogger <MessagingService>());

            _supportRequestRepository = new SupportRequestRepository(loggerFactory, openSupportRequestSqlConnectionAsync);
        }