private static void AddDatabaseDependencies(ContainerBuilder builder, DependencyInstanceType type = DependencyInstanceType.None) { switch (type) { case DependencyInstanceType.InstancePerLifetimeScope: builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerLifetimeScope(); break; case DependencyInstanceType.InstancePerRequest: builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerRequest(); break; case DependencyInstanceType.SingleInstance: builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().SingleInstance(); break; case DependencyInstanceType.InstancePerDependency: builder.RegisterType <UnitOfWork>().As <IUnitOfWork>().InstancePerDependency(); break; default: builder.RegisterType <UnitOfWork>().As <IUnitOfWork>(); break; } }
public static ContainerBuilder GetTestsContainer(DependencyInstanceType type = DependencyInstanceType.SingleInstance) { ContainerBuilder builder = new ContainerBuilder(); AutofacDependencyMapProvider.BuildBaselineDependencies(builder, type); return(builder); }
public static ContainerBuilder GetMonitorSvcContainer(DependencyInstanceType type = DependencyInstanceType.InstancePerLifetimeScope) { ContainerBuilder builder = new ContainerBuilder(); AutofacDependencyMapProvider.BuildBaselineDependencies(builder, type); AutofacDependencyMapProvider.AddOtherMonitorServiceDependencies(builder); return(builder); }
internal static void BuildBaselineDependencies(ContainerBuilder builder, DependencyInstanceType type = DependencyInstanceType.InstancePerLifetimeScope) { /////////////////////////////////////////////////////////////////////////////// // Repositories /////////////////////////////////////////////////////////////////////////////// // Dapper connection builder.Register(ctx => new DapperDatabaseConnection(Configuration.BEKDBConnectionString)) .As <IDapperDatabaseConnection>() .InstancePerRequest(); // Azure connection builder.Register(ctx => new AzureContainerConnection(Configuration.AzureConnectionString)) .As <IAzureContainerConnection>() .InstancePerRequest(); builder.RegisterType <AzureContainerRepositoryImpl>().As <IAzureContainerRepository>(); // cart builder.RegisterType <BasketRepositoryImpl>().As <IBasketRepository>(); builder.RegisterType <ShipDateRepositoryImpl>().As <IShipDateRepository>(); // catalog builder.RegisterType <BranchSupportRepositoryImpl>().As <IBranchSupportRepository>(); builder.RegisterType <BrandRepositoryImpl>().As <IBrandRepository>().InstancePerRequest(); builder.RegisterType <CategoryImageRepository>().As <ICategoryImageRepository>(); builder.RegisterType <ElasticSearchCatalogRepositoryImpl>().As <ICatalogRepository>().InstancePerRequest(); builder.RegisterType <ProductImageRepositoryImpl>().As <IProductImageRepository>().InstancePerRequest(); builder.RegisterType <PriceRepositoryImpl>().As <IPriceRepository>(); builder.RegisterType <ExternalCatalogRepositoryImpl>().As <IExternalCatalogRepository>(); // catalog campaign builder.RegisterType <CatalogCampaignHeaderRepositoryImpl>().As <ICatalogCampaignHeaderRepository>(); builder.RegisterType <CatalogCampaignItemsRepositoryImpl>().As <ICatalogCampaignItemRepository>(); // customer builder.RegisterType <AccountRepository>().As <IAccountRepository>(); builder.RegisterType <CustomerRepository>().As <ICustomerRepository>(); builder.RegisterType <InternalUserAccessRepository>().As <IInternalUserAccessRepository>(); builder.RegisterType <RecommendedItemsRepositoryImpl>().As <IRecommendedItemsRepository>(); builder.RegisterType <GrowthAndRecoveriesRepositoryImpl>().As <IGrowthAndRecoveriesRepository>(); builder.RegisterType <MinimumOrderAmountRepositoryImpl>().As <IMinimumOrderAmountRepository>(); // division builder.RegisterType <DivisionRepositoryImpl>().As <IDivisionRepository>(); // DSR builder.RegisterType <DsrRepositoryImpl>().As <IDsrRepository>(); // invoices builder.RegisterType <CustomerBankRepositoryImpl>().As <ICustomerBankRepository>(); builder.RegisterType <KPayInvoiceRepositoryImpl>().As <IKPayInvoiceRepository>(); builder.RegisterType <KPayLogRepositoryImpl>().As <IKPayLogRepository>(); builder.RegisterType <KPayPaymentTransactionRepositoryImpl>().As <IKPayPaymentTransactionRepository>(); builder.RegisterType <TermRepositoryImpl>().As <ITermRepository>(); builder.RegisterType <KPayDBContext>().As <IKPayDBContext>(); // lists builder.RegisterType <ListItemRepositoryImpl>().As <IListItemRepository>(); builder.RegisterType <FavoriteListHeaderRepositoryImpl>().As <IFavoriteListHeadersRepository>(); builder.RegisterType <FavoriteListDetailRepositoryImpl>().As <IFavoriteListDetailsRepository>(); builder.RegisterType <NotesHeadersRepositoryImpl>().As <INotesHeadersListRepository>(); builder.RegisterType <NotesDetailsRepositoryImpl>().As <INotesDetailsListRepository>(); builder.RegisterType <RecentlyViewedListHeadersRepositoryImpl>().As <IRecentlyViewedListHeadersRepository>(); builder.RegisterType <RecentlyViewedListDetailsRepositoryImpl>().As <IRecentlyViewedListDetailsRepository>(); builder.RegisterType <RecentlyOrderedListHeadersRepositoryImpl>().As <IRecentlyOrderedListHeadersRepository>(); builder.RegisterType <RecentlyOrderedListDetailsRepositoryImpl>().As <IRecentlyOrderedListDetailsRepository>(); builder.RegisterType <InventoryValuationListHeadersRepositoryImpl>().As <IInventoryValuationListHeadersRepository>(); builder.RegisterType <InventoryValuationListDetailsRepositoryImpl>().As <IInventoryValuationListDetailsRepository>(); builder.RegisterType <HistoryListHeaderRepositoryImpl>().As <IHistoryListHeaderRepository>(); builder.RegisterType <HistoryListDetailRepositoryImpl>().As <IHistoryListDetailRepository>(); builder.RegisterType <ContractListHeadersRepositoryImpl>().As <IContractListHeadersRepository>(); builder.RegisterType <ContractListDetailsRepositoryImpl>().As <IContractListDetailsRepository>(); builder.RegisterType <ReminderItemsListDetailsRepositoryImpl>().As <IRemindersListDetailsRepository>(); builder.RegisterType <ReminderItemsListHeadersRepositoryImpl>().As <IRemindersListHeadersRepository>(); builder.RegisterType <MandatoryItemsListHeadersRepositoryImpl>().As <IMandatoryItemsListHeadersRepository>(); builder.RegisterType <MandatoryItemsListDetailsRepositoryImpl>().As <IMandatoryItemsListDetailsRepository>(); builder.RegisterType <CustomListHeadersRepositoryImpl>().As <ICustomListHeadersRepository>(); builder.RegisterType <CustomListDetailsRepositoryImpl>().As <ICustomListDetailsRepository>(); builder.RegisterType <ListRepositoryImpl>().As <IListRepository>(); builder.RegisterType <ListShareRepositoryImpl>().As <IListShareRepository>(); builder.RegisterType <CustomInventoryItemsRepositoryImpl>().As <ICustomInventoryItemsRepository>(); builder.RegisterType <CustomListSharesRepositoryImpl>().As <ICustomListSharesRepository>(); builder.RegisterType <ContractChangesRepositoryImpl>().As <IContractChangesRepository>(); // marketing builder.RegisterType <ContentManagementExternalRepositoryImpl>().As <IContentManagementExternalRepository>(); builder.RegisterType <CampaignCustomerRepositoryImpl>() .AsImplementedInterfaces(); // messaging builder.RegisterType <UserMessageRepositoryImpl>().As <IUserMessageRepository>(); builder.RegisterType <UserMessagingPreferenceRepositoryImpl>().As <IUserMessagingPreferenceRepository>(); builder.RegisterType <UserPushNotificationDeviceRepositoryImpl>().As <IUserPushNotificationDeviceRepository>(); builder.RegisterType <AmazonPushNotificationMessageProvider>().As <IPushNotificationMessageProvider>(); builder.RegisterType <MessageTemplateRepositoryImpl>().As <IMessageTemplateRepository>(); builder.RegisterType <PushMessageConsumerImpl>().As <IPushMessageConsumer>(); // order builder.RegisterType <ImagingRepositoryImpl>().As <IImagingRepository>(); builder.RegisterType <ItemHistoryRepositoryImpl>().As <IItemHistoryRepository>(); builder.RegisterType <PurchaseOrderRepositoryImpl>().As <IPurchaseOrderRepository>(); builder.RegisterType <OrderHistoyrHeaderRepositoryImpl>().As <IOrderHistoryHeaderRepsitory>(); builder.RegisterType <OrderHistoryDetailRepositoryImpl>().As <IOrderHistoryDetailRepository>(); builder.RegisterType <OrderedFromListRepositoryImpl>().As <IOrderedFromListRepository>(); builder.RegisterType <OrderedItemsFromListRepositoryImpl>().As <IOrderedItemsFromListRepository>(); builder.RegisterType <OrderSocketConnectionRepositoryImpl>().As <IOrderSocketConnectionRepository>(); builder.RegisterType <OrderUpdateRequestSocketRepositoryImpl>().As <IOrderUpdateSocketConnectionRepository>(); builder.RegisterType <UserActiveCartRepositoryImpl>().As <IUserActiveCartRepository>(); builder.RegisterType <SpecialOrderLogicImpl>().As <ISpecialOrderLogic>(); builder.RegisterType <SpecialOrderRepositoryImpl>().As <ISpecialOrderRepository>(); builder.RegisterType <SpecialOrderDBContext>().As <ISpecialOrderDBContext>(); builder.RegisterType <OrderHistoryWriterImpl>().As <IOrderHistoryWriter>(); builder.RegisterType <RecommendedItemsOrderedAnalyticsRepositoryImpl>().As <IRecommendedItemsOrderedAnalyticsRepository>(); // other builder.RegisterType <AuditLogRepositoryImpl>().As <IAuditLogRepository>(); builder.RegisterType <DBAppSettingsRepositoryImpl>().As <IDBAppSettingsRepository>(); builder.RegisterType <EmailClientImpl>().As <IEmailClient>(); builder.Register(l => new EventLogQueueRepositoryImpl(Configuration.ApplicationName)).As <IEventLogRepository>(); builder.RegisterType <ExportSettingRepositoryImpl>().As <IExportSettingRepository>(); builder.RegisterType <PowerMenuRepositoryImpl>().As <IPowerMenuRepository>(); builder.RegisterType <ReportRepository>().As <IReportRepository>(); builder.RegisterType <SocketListenerRepositoryImpl>().As <ISocketListenerRepository>(); builder.RegisterType <ApplicationHealthLogicImpl>().As <IApplicationHealthLogic>(); builder.RegisterType <TemplatesRepositoryImpl>().As <ITemplatesRepository>(); builder.RegisterType <ItemBarcodeImageRepositoryImpl>().As <IItemBarcodeImageRepository>(); // profile builder.RegisterType <AvatarRepositoryImpl>().As <IAvatarRepository>(); builder.RegisterType <CustomerContainerRepository>().As <ICustomerContainerRepository>(); builder.RegisterType <DsrAliasRepositoryImpl>().As <IDsrAliasRepository>(); builder.RegisterType <MarketingPreferencesRepositoryImpl>().As <IMarketingPreferencesRepository>(); builder.RegisterType <PasswordResetRequestRepositoryImpl>().As <IPasswordResetRequestRepository>(); builder.RegisterType <InternalUserDomainRepository>().As <IUserDomainRepository>(); builder.RegisterType <SettingsRepositoryImpl>().As <ISettingsRepository>(); builder.RegisterType <UserMessagingPreferenceRepositoryImpl>().As <IUserMessagingPreferenceRepository>(); builder.RegisterType <UserProfileRepository>().As <IUserProfileRepository>(); // user feedback builder.RegisterType <UserFeedbackRepository>().As <IUserFeedbackRepository>(); // FlipSnack API client builder.RegisterType <FlipSnackApiClient>().As <FlipSnackApiClient>(); /////////////////////////////////////////////////////////////////////////////// // Logic Classes /////////////////////////////////////////////////////////////////////////////// // cart builder.RegisterType <BasketLogicImpl>().As <IBasketLogic>(); builder.RegisterType <ShoppingCartLogicImpl>().As <IShoppingCartLogic>(); // catalog builder.RegisterType <ElasticSearchRepositoryImpl>().As <IElasticSearchRepository>(); builder.RegisterType <ElasticSearchCatalogRepositoryImpl>().As <ICatalogRepository>(); builder.RegisterType <SiteCatalogLogicImpl>().As <KeithLink.Svc.Core.Interface.SiteCatalog.ICatalogLogic>(); builder.RegisterType <PriceLogicImpl>().As <IPriceLogic>(); builder.RegisterType <ProductImageRepositoryImpl>().As <IProductImageRepository>(); builder.RegisterType <UnfiImageProcessing>().As <IExternalImageProcessorUnfi>(); // catalog campaign builder.RegisterType <CatalogCampaignLogicImpl>().As <ICatalogCampaignLogic>(); // customer builder.RegisterType <CustomerLogicImpl>().As <ICustomerLogic>(); // division builder.RegisterType <DivisionLogicImpl>().As <IDivisionLogic>(); // DSR builder.RegisterType <DsrLogic>().As <IDsrLogic>(); // invoices builder.RegisterType <ImagingLogicImpl>().As <IImagingLogic>(); builder.RegisterType <OnlinePaymentLogicImpl>().As <IOnlinePaymentsLogic>(); builder.RegisterType <TermLogicImpl>().As <ITermLogic>(); // lists builder.RegisterType <FavoritesListLogicImpl>().As <IFavoritesListLogic>(); builder.RegisterType <NotesListLogicImpl>().As <INotesListLogic>(); builder.RegisterType <ReminderItemsListLogicImpl>().As <IRemindersListLogic>(); builder.RegisterType <MandatoryItemsListLogicImpl>().As <IMandatoryItemsListLogic>(); builder.RegisterType <RecentlyViewedListLogicImpl>().As <IRecentlyViewedListLogic>(); builder.RegisterType <RecentlyOrderedListLogicImpl>().As <IRecentlyOrderedListLogic>(); builder.RegisterType <InventoryValuationListLogicImpl>().As <IInventoryValuationListLogic>(); builder.RegisterType <ContractListLogicImpl>().As <IContractListLogic>(); builder.RegisterType <ContractListChangesLogicImpl>().As <IContractListChangesLogic>(); builder.RegisterType <HistoryListLogicImpl>().As <IHistoryListLogic>(); builder.RegisterType <CustomListLogicImpl>().As <ICustomListLogic>(); builder.RegisterType <HistoryLogic>().As <IHistoryLogic>(); builder.RegisterType <ListLogicImpl>().As <IListLogic>(); builder.RegisterType <NoteLogicImpl>().As <INoteLogic>(); //marketing builder.RegisterType <ContentManagementLogicImpl>().As <IContentManagementLogic>(); // messaging builder.RegisterType <MessagingLogicImpl>().As <IMessagingLogic>(); builder.RegisterType <MessageTemplateLogicImpl>().As <IMessageTemplateLogic>(); builder.RegisterType <NotificationQueueConsumerImpl>().As <INotificationQueueConsumer>(); builder.RegisterType <OrderConfirmationNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.OrderConfirmation); builder.RegisterType <InvoiceNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.InvoiceAttention); builder.RegisterType <EtaNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.Eta); builder.RegisterType <PaymentConfirmationNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.PaymentConfirmation); builder.RegisterType <HasNewsNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.HasNews); builder.RegisterType <UserFeedbackNotificationHandlerImpl>().Keyed <INotificationHandler>(NotificationType.UserFeedback); builder.Register <Func <NotificationType, INotificationHandler> >( c => { var handlers = c.Resolve <IIndex <NotificationType, INotificationHandler> >(); return(request => handlers[request]); }); // keyed types - message providers builder.RegisterType <WebMessageProvider>().Keyed <IMessageProvider>(Channel.Web); builder.RegisterType <EmailMessageProvider>().Keyed <IMessageProvider>(Channel.Email); builder.RegisterType <PushMessagePublisherImpl>().Keyed <IMessageProvider>(Channel.MobilePush); builder.Register <Func <Channel, IMessageProvider> >( c => { var handlers = c.Resolve <IIndex <Channel, IMessageProvider> >(); return(request => handlers[request]); }); // order builder.RegisterType <ConfirmationLogicImpl>().As <IConfirmationLogic>(); builder.RegisterType <ExportSettingLogicImpl>().As <IExportSettingLogic>(); builder.RegisterType <OrderConversionLogicImpl>().As <IOrderConversionLogic>(); builder.RegisterType <OrderHistoryRequestLogicImpl>().As <IOrderHistoryRequestLogic>(); builder.RegisterType <OrderHistoryLogicImpl>().As <IOrderHistoryLogic>(); builder.RegisterType <OrderLogicImpl>().As <IOrderLogic>(); builder.RegisterType <OrderQueueLogicImpl>().As <IOrderQueueLogic>(); builder.RegisterType <UserActiveCartLogicImpl>().As <IUserActiveCartLogic>(); // other builder.RegisterType <AppSettingLogicImpl>().As <IAppSettingLogic>(); builder.RegisterType <ImportLogicImpl>().As <IImportLogic>(); builder.RegisterGeneric(typeof(ModelExportLogicImpl <>)).As(typeof(IModelExportLogic <>)); builder.RegisterType <PowerMenuLogicImpl>().As <IPowerMenuLogic>(); // profile builder.RegisterType <DsrAliasLogicImpl>().As <IDsrAliasLogic>(); builder.RegisterType <MarketingPreferencesLogicImpl>().As <IMarketingPreferencesLogic>(); builder.RegisterType <PasswordResetLogicImpl>().As <IPasswordResetLogic>(); builder.RegisterType <SettingsLogicImpl>().As <ISettingsLogic>(); builder.RegisterType <UserProfileLogicImpl>().As <IUserProfileLogic>(); // reports builder.RegisterType <InventoryValuationReportLogicImpl>().As <IInventoryValuationReportLogic>(); builder.RegisterType <ReportLogic>().As <IReportLogic>(); // user feedback builder.RegisterType <UserFeedbackLogicImpl>().As <IUserFeedbackLogic>(); /////////////////////////////////////////////////////////////////////////////// // Service Classes /////////////////////////////////////////////////////////////////////////////// // catalog campaign builder.RegisterType <CatalogCampaignServiceImpl>().As <ICatalogCampaignService>(); builder.RegisterType <SiteCatalogServiceImpl>().As <ISiteCatalogService>(); // invoices builder.RegisterType <ExportInvoicesServiceImpl>().As <IExportInvoicesService>(); builder.RegisterType <ListServiceImpl>().As <IListService>(); builder.RegisterType <ImportServiceImpl>().As <IImportService>(); /////////////////////////////////////////////////////////////////////////////// // Environment Specific Classes /////////////////////////////////////////////////////////////////////////////// #if DEMO builder.RegisterType <DemoExternalUserDomainRepositoryImpl>().As <ICustomerDomainRepository>(); builder.RegisterType <DemoGenericQueueRepositoryImpl>().As <IGenericQueueRepository>(); #else builder.RegisterType <ExternalUserDomainRepository>().As <ICustomerDomainRepository>(); builder.RegisterType <GenericQueueRepositoryImpl>().As <IGenericQueueRepository>(); builder.RegisterType <GenericSubscriptionQueueRepositoryImpl>().As <IGenericSubscriptionQueueRepository>(); #endif // Services8 // Shopping Cart builder.RegisterType <ShoppingCartServiceImpl>().As <IShoppingCartService>(); builder.RegisterType <CacheListLogicImpl>().As <ICacheListLogic>(); AddDatabaseDependencies(builder, type); }