Exemple #1
0
        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);
        }
Exemple #4
0
        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);
        }