Example #1
0
        private static ContainerBuilder RegisterNcsService(this ContainerBuilder containerBuilder, INcsServiceConfiguration ncsServiceConfiguration)
        {
            // Tasks
            containerBuilder.RegisterType <FundingTask>().As <INcsDataTask>();
            containerBuilder.RegisterType <ReportingTask>().As <INcsDataTask>();
            containerBuilder.RegisterType <EntryPoint>().As <IEntryPoint>();

            // Services
            containerBuilder.RegisterType <FundingService>().As <IFundingService>();
            containerBuilder.RegisterType <MessageService>().As <IMessageService>();
            containerBuilder.RegisterType <StreamProviderService>().As <IStreamProviderService>();
            containerBuilder.RegisterType <StorageService>().As <IStorageService>().WithAttributeFiltering();
            containerBuilder.RegisterType <ExcelService>().As <IExcelService>().WithAttributeFiltering();
            containerBuilder.RegisterType <FileNameService>().As <IFilenameService>();
            containerBuilder.RegisterType <ZipService>().As <IZipService>().WithAttributeFiltering();
            containerBuilder.RegisterType <OccupancyReportMapperFactory>().As <IClassMapFactory <OccupancyReportModel> >();
            containerBuilder.RegisterType <BulkInsert>().As <IBulkInsert>();
            containerBuilder.Register(c =>
            {
                var csvFileService = new CsvFileService(c.ResolveKeyed <IFileService>(PersistenceStorageKeys.DctAzureStorage));
                return(csvFileService);
            }).As <ICsvFileService>();

            // Ncs database
            containerBuilder.RegisterType <NcsContext>().As <INcsContext>();
            containerBuilder.Register(container => new DbContextOptionsBuilder <NcsContext>()
                                      .UseSqlServer(ncsServiceConfiguration.NcsDbConnectionString)
                                      .UseQueryTrackingBehavior(QueryTrackingBehavior.NoTracking).Options).As <DbContextOptions <NcsContext> >().SingleInstance();

            // Data services
            containerBuilder.RegisterType <PersistenceService>().As <IPersistenceService>();
            containerBuilder.RegisterType <OutcomeRateQueryService>().As <IOutcomeRateQueryService>();
            containerBuilder.RegisterType <NcsSubmissionQueryService>().As <INcsSubmissionQueryService>();
            containerBuilder.RegisterType <FundingValueQueryService>().As <IFundingValueQueryService>();
            containerBuilder.RegisterType <SourceQueryService>().As <ISourceQueryService>();
            containerBuilder.RegisterType <ClearService>().As <IClearService>();

            containerBuilder.Register(c => new DataServiceConfiguration(ncsServiceConfiguration.NcsDbConnectionString)).As <IDataServiceConfiguration>();

            return(containerBuilder);
        }
Example #2
0
        private static ContainerBuilder RegisterQueuesAndTopics(this ContainerBuilder containerBuilder, INcsServiceConfiguration ncsServiceConfiguration)
        {
            var topicSubscriptionConfig = new TopicConfiguration(ncsServiceConfiguration.ServiceBusConnectionString, ncsServiceConfiguration.TopicName, ncsServiceConfiguration.SubscriptionName, 1, maximumCallbackTimeSpan: TimeSpan.FromMinutes(40));

            containerBuilder.Register(c => new TopicSubscriptionSevice <JobContextDto>(
                                          topicSubscriptionConfig,
                                          c.Resolve <IJsonSerializationService>(),
                                          c.Resolve <ILogger>())).As <ITopicSubscriptionService <JobContextDto> >();

            containerBuilder.Register(c =>
            {
                var topicPublishService =
                    new TopicPublishService <JobContextDto>(
                        topicSubscriptionConfig,
                        c.Resolve <IJsonSerializationService>());
                return(topicPublishService);
            }).As <ITopicPublishService <JobContextDto> >();

            containerBuilder.Register(c =>
            {
                var auditPublishConfig = new QueueConfiguration(ncsServiceConfiguration.ServiceBusConnectionString, ncsServiceConfiguration.AuditQueueName, 1);

                return(new QueuePublishService <AuditingDto>(
                           auditPublishConfig,
                           c.Resolve <IJsonSerializationService>()));
            }).As <IQueuePublishService <AuditingDto> >();

            containerBuilder.Register(c =>
            {
                var jobStatusPublishConfig = new QueueConfiguration(ncsServiceConfiguration.ServiceBusConnectionString, ncsServiceConfiguration.JobStatusQueueName, 1);

                return(new QueuePublishService <JobStatusDto>(
                           jobStatusPublishConfig,
                           c.Resolve <IJsonSerializationService>()));
            }).As <IQueuePublishService <JobStatusDto> >();

            return(containerBuilder);
        }