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); }
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); }