コード例 #1
0
        private IMarketingExtensionManager GetPromotionExtensionManager()
        {
            var retVal = new DefaultMarketingExtensionManagerImpl();

            retVal.PromotionDynamicExpressionTree = GetDynamicExpression();
            return(retVal);
        }
コード例 #2
0
        private static IPromotionService GetMarketingService()
        {
            Func <IMarketingRepository> foundationRepositoryFactory = () => new MarketingRepositoryImpl("VirtoCommerce", new EntityPrimaryKeyGeneratorInterceptor(), new AuditableInterceptor());
            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();
            var retVal = new PromotionServiceImpl(foundationRepositoryFactory, promotionExtensionManager);

            return(retVal);
        }
コード例 #3
0
        private IPromotionService GetMarketingService()
        {
            Func <IMarketingRepository> foundationRepositoryFactory = () => GetRepository();
            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();
            var retVal = new PromotionServiceImpl(foundationRepositoryFactory, promotionExtensionManager);

            return(retVal);
        }
コード例 #4
0
        private IPromotionService GetMarketingService()
        {
            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();
            var cacheManager = new Moq.Mock <ICacheManager <object> >();
            var retVal       = new PromotionServiceImpl(GetRepository);

            return(retVal);
        }
コード例 #5
0
        private IPromotionService GetMarketingService()
        {
            Func <IMarketingRepository> foundationRepositoryFactory = () => GetRepository();
            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();
            var cacheManager = new Moq.Mock <ICacheManager <object> >();
            var retVal       = new PromotionServiceImpl(foundationRepositoryFactory, promotionExtensionManager, cacheManager.Object);

            return(retVal);
        }
コード例 #6
0
        public override void Initialize()
        {
            _container.RegisterType <IMarketingRepository>(new InjectionFactory(c => new MarketingRepositoryImpl("VirtoCommerce", new EntityPrimaryKeyGeneratorInterceptor(), new AuditableInterceptor())));

            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();

            _container.RegisterInstance <IMarketingExtensionManager>(promotionExtensionManager);
            _container.RegisterType <IPromotionService, PromotionServiceImpl>();
            _container.RegisterType <IMarketingDynamicContentEvaluator, DefaultDynamicContentEvaluatorImpl>();
            _container.RegisterType <IDynamicContentService, DynamicContentServiceImpl>();
            _container.RegisterType <IMarketingSearchService, MarketingSearchServiceImpl>();
            _container.RegisterType <IMarketingPromoEvaluator, DefaultPromotionEvaluatorImpl>();
        }
コード例 #7
0
        public void Initialize(IServiceCollection serviceCollection)
        {
            var configuration    = serviceCollection.BuildServiceProvider().GetRequiredService <IConfiguration>();
            var connectionString = configuration.GetConnectionString("VirtoCommerce.Marketing") ?? configuration.GetConnectionString("VirtoCommerce");

            serviceCollection.AddTransient <IMarketingRepository, MarketingRepositoryImpl>();
            serviceCollection.AddDbContext <MarketingDbContext>(options => options.UseSqlServer(connectionString));
            serviceCollection.AddSingleton <Func <IMarketingRepository> >(provider => () => provider.CreateScope().ServiceProvider.GetRequiredService <IMarketingRepository>());

            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();

            serviceCollection.AddSingleton <IMarketingExtensionManager>(promotionExtensionManager);
            serviceCollection.AddSingleton <IPromotionService, PromotionServiceImpl>();
            serviceCollection.AddSingleton <ICouponService, CouponService>();
            serviceCollection.AddSingleton <IPromotionUsageService, PromotionUsageService>();
            serviceCollection.AddSingleton <IMarketingDynamicContentEvaluator, DefaultDynamicContentEvaluatorImpl>();
            serviceCollection.AddSingleton <IDynamicContentService, DynamicContentServiceImpl>();

            serviceCollection.AddSingleton <IPromotionSearchService, MarketingSearchServiceImpl>();
            serviceCollection.AddSingleton <ICouponService, CouponService>();
            serviceCollection.AddSingleton <IDynamicContentSearchService, MarketingSearchServiceImpl>();
            serviceCollection.AddSingleton <CsvCouponImporter>();


            serviceCollection.AddSingleton <IMarketingPromoEvaluator>(provider =>
            {
                var settingsManager        = provider.GetService <ISettingsManager>();
                var promotionService       = provider.GetService <IPromotionSearchService>();
                var promotionCombinePolicy = settingsManager.GetValue(ModuleConstants.Settings.General.CombinePolicy.Name, "BestReward");
                if (promotionCombinePolicy.EqualsInvariant("CombineStackable"))
                {
                    return(new CombineStackablePromotionPolicy(promotionService));
                }
                else
                {
                    return(new BestRewardPromotionPolicy(promotionService));
                }
            });

            AbstractTypeFactory <DynamicPromotion> .RegisterType <DynamicPromotion>().WithFactory(() =>
            {
                var couponService         = serviceCollection.BuildServiceProvider().GetService <ICouponService>();
                var promotionUsageService = serviceCollection.BuildServiceProvider().GetService <IPromotionUsageService>();
                return(new DynamicPromotion(couponService, promotionUsageService));
            });

            serviceCollection.AddSingleton <DynamicContentItemEventHandlers>();
            serviceCollection.AddSingleton <MarketingExportImport>();
        }
コード例 #8
0
        public override void Initialize()
        {
            _container.RegisterType <IMarketingRepository>(new InjectionFactory(c => new MarketingRepositoryImpl(_connectionString, new EntityPrimaryKeyGeneratorInterceptor(), _container.Resolve <AuditableInterceptor>())));

            var promotionExtensionManager = new DefaultMarketingExtensionManagerImpl();

            _container.RegisterInstance <IMarketingExtensionManager>(promotionExtensionManager);
            _container.RegisterType <IPromotionService, PromotionServiceImpl>();
            _container.RegisterType <ICouponService, CouponService>();
            _container.RegisterType <IPromotionUsageService, PromotionUsageService>();
            _container.RegisterType <IMarketingDynamicContentEvaluator, DefaultDynamicContentEvaluatorImpl>();
            _container.RegisterType <IDynamicContentService, DynamicContentServiceImpl>();

            _container.RegisterType <IPromotionSearchService, MarketingSearchServiceImpl>();
            _container.RegisterType <ICouponService, CouponService>();
            _container.RegisterType <IDynamicContentSearchService, MarketingSearchServiceImpl>();


            var settingsManager        = _container.Resolve <ISettingsManager>();
            var promotionCombinePolicy = settingsManager.GetValue("Marketing.Promotion.CombinePolicy", "BestReward");

            if (promotionCombinePolicy.EqualsInvariant("CombineStackable"))
            {
                _container.RegisterType <IMarketingPromoEvaluator, CombineStackablePromotionPolicy>();
            }
            else
            {
                _container.RegisterType <IMarketingPromoEvaluator, BestRewardPromotionPolicy>();
            }

            var eventHandlerRegistrar = _container.Resolve <IHandlerRegistrar>();

            //Create order observer. record order coupon usage
            eventHandlerRegistrar.RegisterHandler <OrderChangedEvent>(async(message, token) => await _container.Resolve <CouponUsageRecordHandler>().Handle(message));

            AbstractTypeFactory <DynamicPromotion> .RegisterType <DynamicPromotion>().WithFactory(() => _container.Resolve <DynamicPromotion>());

            AbstractTypeFactory <MarketingExportImport> .RegisterType <MarketingExportImport>().WithFactory(() => _container.Resolve <MarketingExportImport>());
        }