Пример #1
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.General.AllSettings, ModuleInfo.Id);

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Webhooks", Name = x
            }).ToArray());

            var webHookManager = appBuilder.ApplicationServices.GetService <IWebHookManager>();

            webHookManager.SubscribeToAllEvents();

            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <WebhookDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #2
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Cart",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicCartJsonConverter());

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                using (var dbContext = serviceScope.ServiceProvider.GetRequiredService <CartDbContext>())
                {
                    dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                    dbContext.Database.EnsureCreated();
                    dbContext.Database.Migrate();
                }
            }
        }
Пример #3
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var paymentMethodsRegistrar = appBuilder.ApplicationServices.GetRequiredService <IPaymentMethodsRegistrar>();

            paymentMethodsRegistrar.RegisterPaymentMethod <DefaultManualPaymentMethod>();
            settingsRegistrar.RegisterSettingsForType(Core.ModuleConstants.Settings.DefaultManualPaymentMethod.AllSettings, typeof(DefaultManualPaymentMethod).Name);

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicJsonConverter(paymentMethodsRegistrar));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <PaymentDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #4
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <FrontMatterHeaders>();

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ContentConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                                new Permission()
            {
                GroupName = "Content",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());


            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                using (var menuDbContext = serviceScope.ServiceProvider.GetRequiredService <MenuDbContext>())
                {
                    menuDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                    menuDbContext.Database.EnsureCreated();
                    menuDbContext.Database.Migrate();
                }
            }

            var dynamicPropertyService = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyService>();

            dynamicPropertyService.SaveDynamicPropertiesAsync(DynamicProperties.AllDynamicProperties.ToArray()).GetAwaiter().GetResult();
        }
Пример #5
0
        public void PostInitialize(IApplicationBuilder applicationBuilder)
        {
            _appBuilder = applicationBuilder;

            var settingsRegistrar = applicationBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(Core.ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var taxProviderRegistrar = applicationBuilder.ApplicationServices.GetRequiredService <ITaxProviderRegistrar>();

            taxProviderRegistrar.RegisterTaxProvider <FixedRateTaxProvider>();
            settingsRegistrar.RegisterSettingsForType(Core.ModuleConstants.Settings.FixedTaxProviderSettings.AllSettings, typeof(FixedRateTaxProvider).Name);

            var mvcJsonOptions = applicationBuilder.ApplicationServices.GetService <IOptions <MvcNewtonsoftJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicJsonConverter());

            using (var serviceScope = applicationBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <TaxDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #6
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Catalog", Name = x
            }).ToArray());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new SearchCriteriaJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <ProductChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <CategoryChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));


            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var catalogDbContext = serviceScope.ServiceProvider.GetRequiredService <CatalogDbContext>();
                catalogDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                catalogDbContext.Database.EnsureCreated();
                catalogDbContext.Database.Migrate();
            }
        }
Пример #7
0
        public void PostInitialize(IApplicationBuilder applicationBuilder)
        {
            var settingsRegistrar = applicationBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var permissionsProvider = applicationBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Licensing",
                Name      = x,
                ModuleId  = ModuleInfo.Id
            }).ToArray());

            //Force migrations
            using (var serviceScope = applicationBuilder.ApplicationServices.CreateScope())
            {
                var licenseDbContext = serviceScope.ServiceProvider.GetRequiredService <LicenseDbContext>();
                licenseDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                licenseDbContext.Database.EnsureCreated();
                licenseDbContext.Database.Migrate();
            }
        }
Пример #8
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            AbstractTypeFactory <ThumbnailOption> .RegisterType <ThumbnailOption>().MapToType <ThumbnailOptionEntity>();

            AbstractTypeFactory <ThumbnailTask> .RegisterType <ThumbnailTask>().MapToType <ThumbnailTaskEntity>();


            //Register module settings
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Thumbnail", Name = x
            }).ToArray());

            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var thumbnailDbContext = serviceScope.ServiceProvider.GetRequiredService <ThumbnailDbContext>();
                thumbnailDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                thumbnailDbContext.Database.EnsureCreated();
                thumbnailDbContext.Database.Migrate();
            }
        }
Пример #9
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <SitemapDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var allPermissions = ModuleConstants.Security.Permissions.AllPermissions.Select(permissionName => new Permission
            {
                Name      = permissionName,
                GroupName = "Sitemaps",
                ModuleId  = ModuleInfo.Id
            }).ToArray();
            var permissionsRegistrar = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsRegistrar.RegisterPermissions(allPermissions);
        }
Пример #10
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _applicationBuilder = appBuilder;

            // Register module permissions
            var permissionsRegistrar = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();
            var permissions          = ModuleConstants.Security.Permissions.AllPermissions.Select(permissionName => new Permission
            {
                ModuleId  = ModuleInfo.Id,
                GroupName = "Subscription",
                Name      = permissionName
            });

            permissionsRegistrar.RegisterPermissions(permissions.ToArray());

            //Register setting in the store level
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);
            settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.StoreLevelSettings, typeof(Store).Name);

            //Registration welcome email notification.
            var handlerRegistrar = appBuilder.ApplicationServices.GetRequiredService <IHandlerRegistrar>();

            handlerRegistrar.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetRequiredService <CreateSubscriptionOrderChangedEventHandler>().Handle(message));
            handlerRegistrar.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetRequiredService <LogChangesSubscriptionChangedEventHandler>().Handle(message));
            handlerRegistrar.RegisterHandler <SubscriptionChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetRequiredService <LogChangesSubscriptionChangedEventHandler>().Handle(message));
            handlerRegistrar.RegisterHandler <SubscriptionChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.CreateScope().ServiceProvider.GetRequiredService <SendNotificationsSubscriptionChangedEventHandler>().Handle(message));

            //Subscribe for subscription processing job configuration changes
            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <ObjectSettingChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <ObjectSettingEntryChangedEventHandler>().Handle(message));

            //Schedule periodic subscription processing job
            var jobsRunner = appBuilder.ApplicationServices.GetService <BackgroundJobsRunner>();

            jobsRunner.ConfigureProcessSubscriptionJob().GetAwaiter().GetResult();
            jobsRunner.ConfigureProcessSubscriptionOrdersJob().GetAwaiter().GetResult();

            var notificationRegistrar     = appBuilder.ApplicationServices.GetService <INotificationRegistrar>();
            var defaultTemplatesDirectory = Path.Combine(ModuleInfo.FullPhysicalPath, "NotificationTemplates");

            notificationRegistrar.RegisterNotification <NewSubscriptionEmailNotification>().WithTemplatesFromPath(defaultTemplatesDirectory);
            notificationRegistrar.RegisterNotification <SubscriptionCanceledEmailNotification>().WithTemplatesFromPath(defaultTemplatesDirectory);

            //Next lines allow to use polymorph types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcNewtonsoftJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicSubscriptionJsonConverter());

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var subscriptionDbContext = serviceScope.ServiceProvider.GetRequiredService <SubscriptionDbContext>();
                subscriptionDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                subscriptionDbContext.Database.EnsureCreated();
                subscriptionDbContext.Database.Migrate();
            }
        }
Пример #11
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _applicationBuilder = appBuilder;

            var settingsManager = appBuilder.ApplicationServices.GetRequiredService <ISettingsManager>();
            var order_status    = settingsManager.GetObjectSettingAsync(VirtoCommerce.OrdersModule.Core.ModuleConstants.Settings.General.OrderStatus.Name).GetAwaiter().GetResult().AllowedValues;

            ModuleConstants.Settings.AllSettings.FirstOrDefault(x => x.Name == ModuleConstants.Settings.General.RequestReviewOrderInState.Name).AllowedValues = order_status;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var jobsettings   = ModuleConstants.Settings.JobSettings.Select(s => s.Name).ToList();
            var storeSettings = settingsRegistrar.AllRegisteredSettings.Where(x => x.ModuleId.EqualsInvariant(ModuleInfo.Id) && !jobsettings.Contains(x.Name)).ToList();

            storeSettings.Add(GetCalculatorStoreSetting());
            settingsRegistrar.RegisterSettingsForType(storeSettings, nameof(Store));
            settingsRegistrar.RegisterSettings(storeSettings, ConfigStoreModuleId);

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "CustomerReviews", Name = x
            }).ToArray());

            var notificationRegistrar = appBuilder.ApplicationServices.GetService <INotificationRegistrar>();

            notificationRegistrar.RegisterNotification <CustomerReviewEmailNotification>();


            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <ReviewStatusChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <ReviewStatusChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <OrderChangedEventHandler>().Handle(message));

            var recurringJobManager = appBuilder.ApplicationServices.GetService <IRecurringJobManager>();

            recurringJobManager.WatchJobSetting(
                settingsManager,
                new SettingCronJobBuilder()
                .SetEnablerSetting(ModuleConstants.Settings.General.RequestReviewEnableJob)
                .SetCronSetting(ModuleConstants.Settings.General.RequestReviewCronJob)
                .ToJob <RequestCustomerReviewJob>(x => x.Process())
                .Build());

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <CustomerReviewsDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #12
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;
            AbstractTypeFactory <Member> .RegisterType <Organization>().MapToType <OrganizationEntity>();

            AbstractTypeFactory <Member> .RegisterType <Contact>().MapToType <ContactEntity>();

            AbstractTypeFactory <Member> .RegisterType <Vendor>().MapToType <VendorEntity>();

            AbstractTypeFactory <Member> .RegisterType <Employee>().MapToType <EmployeeEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <ContactEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <OrganizationEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <VendorEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <EmployeeEntity>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <Organization>();
            dynamicPropertyRegistrar.RegisterType <Contact>();
            dynamicPropertyRegistrar.RegisterType <Vendor>();
            dynamicPropertyRegistrar.RegisterType <Employee>();


            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Customer", Name = x
            }).ToArray());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicMemberJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <MemberChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <CustomerDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #13
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Inventory", Name = x
            }).ToArray());

            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var inventoryDbContext = serviceScope.ServiceProvider.GetRequiredService <InventoryDbContext>();
                inventoryDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                inventoryDbContext.Database.EnsureCreated();
                inventoryDbContext.Database.Migrate();
            }

            //Register product availability indexation
            #region Search

            var productIndexingConfigurations = appBuilder.ApplicationServices.GetServices <IndexDocumentConfiguration>();
            if (productIndexingConfigurations != null)
            {
                var productAvaibilitySource = new IndexDocumentSource
                {
                    ChangesProvider = appBuilder.ApplicationServices.GetService <ProductAvailabilityChangesProvider>(),
                    DocumentBuilder = appBuilder.ApplicationServices.GetService <ProductAvailabilityDocumentBuilder>(),
                };

                foreach (var configuration in productIndexingConfigurations.Where(c => c.DocumentType == KnownDocumentTypes.Product))
                {
                    if (configuration.RelatedSources == null)
                    {
                        configuration.RelatedSources = new List <IndexDocumentSource>();
                    }
                    configuration.RelatedSources.Add(productAvaibilitySource);
                }
            }

            #endregion

            // enable polymorphic types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();
            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicInventoryJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();
            inProcessBus.RegisterHandler <InventoryChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));
        }
Пример #14
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <CustomerOrder>();
            dynamicPropertyRegistrar.RegisterType <LineItem>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.General.AllSettings, ModuleInfo.Id);
            //TODO: Register settings for store see example in subscriptions

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Orders",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <AdjustInventoryOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <CancelPaymentOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.CreateScope().ServiceProvider.GetService <SendNotificationsOrderChangedEventHandler>().Handle(message));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <OrderDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            var notificationRegistrar = appBuilder.ApplicationServices.GetService <INotificationRegistrar>();

            notificationRegistrar.RegisterNotification <CancelOrderEmailNotification>();
            notificationRegistrar.RegisterNotification <InvoiceEmailNotification>();
            notificationRegistrar.RegisterNotification <NewOrderStatusEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderCreateEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderPaidEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderSentEmailNotification>();

            // enable polymorphic types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(appBuilder.ApplicationServices.GetService <PolymorphicOperationJsonConverter>());
        }
Пример #15
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);


            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Core", Name = x
            }).ToArray());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicJsonConverter());
            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new ConditionJsonConverter());

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockConditionAndOr>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionAgeIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGenderIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionLanguageIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionStoreSearchedPhrase>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionUrlIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGeoCity>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGeoCountry>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGeoState>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGeoTimeZone>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionGeoZipCode>();

            AbstractTypeFactory <IConditionTree> .RegisterType <UserGroupsContainsCondition>();

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <CoreDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
        /// <summary>
        /// Apply platform migrations
        /// </summary>
        /// <param name="appBuilder"></param>
        /// <returns></returns>
        public static IApplicationBuilder UsePlatformMigrations(this IApplicationBuilder appBuilder)
        {
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var platformDbContext = serviceScope.ServiceProvider.GetRequiredService <PlatformDbContext>();
                platformDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Platform"));
                platformDbContext.Database.Migrate();

                var securityDbContext = serviceScope.ServiceProvider.GetRequiredService <SecurityDbContext>();
                securityDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Security"));
                securityDbContext.Database.Migrate();
            }

            return(appBuilder);
        }
Пример #17
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            AbstractTypeFactory <ThumbnailOption> .RegisterType <ThumbnailOption>().MapToType <ThumbnailOptionEntity>();

            AbstractTypeFactory <ThumbnailTask> .RegisterType <ThumbnailTask>().MapToType <ThumbnailTaskEntity>();

            //Register module settings
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Thumbnail", Name = x
            }).ToArray());



            //Schedule periodic image processing job
            //var processJobEnabled = settingsManager.GetValue("ImageTools.Thumbnails.EnableImageProcessjob", false);
            var settingsManager = appBuilder.ApplicationServices.GetService <ISettingsManager>();

            if (settingsManager.GetValue(ModuleConstants.Settings.General.EnableImageProcessJob.Name, false))
            {
                var cronExpression = settingsManager.GetValue(ModuleConstants.Settings.General.ImageProcessJobCronExpression.Name, "0 0 * * *");
                RecurringJob.AddOrUpdate <ThumbnailProcessJob>("ProcessAllImageTasksJob", x => x.ProcessAll(JobCancellationToken.Null), cronExpression);
            }
            else
            {
                RecurringJob.RemoveIfExists("ProcessAllImageTasksJob");
            }

            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var thumbnailDbContext = serviceScope.ServiceProvider.GetRequiredService <ThumbnailDbContext>();
                thumbnailDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                thumbnailDbContext.Database.EnsureCreated();
                thumbnailDbContext.Database.Migrate();
            }
        }
Пример #18
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var taxProviderRegistrar = appBuilder.ApplicationServices.GetRequiredService <ITaxProviderRegistrar>();

            taxProviderRegistrar.RegisterTaxProvider(() =>
            {
                var avalaraOptions      = appBuilder.ApplicationServices.GetRequiredService <IOptions <AvaTaxSecureOptions> >();
                var logger              = appBuilder.ApplicationServices.GetRequiredService <ILogger <AvaTaxRateProvider> >();
                var avaTaxClientFactory = appBuilder.ApplicationServices.GetRequiredService <Func <IAvaTaxSettings, AvaTaxClient> >();
                return(new AvaTaxRateProvider(logger, avaTaxClientFactory, avalaraOptions));
            });
            settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.AllSettings, nameof(AvaTaxRateProvider));

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Avalara Tax", Name = x
            }).ToArray());

            var settingManager = appBuilder.ApplicationServices.GetRequiredService <ISettingsManager>();

            var processJobEnabled = settingManager.GetValue(ModuleConstants.Settings.ScheduledOrdersSynchronization.SynchronizationIsEnabled.Name, false);

            if (processJobEnabled)
            {
                var cronExpression = settingManager.GetValue(ModuleConstants.Settings.ScheduledOrdersSynchronization.SynchronizationCronExpression.Name, "0 0 * * *");
                RecurringJob.AddOrUpdate <OrdersSynchronizationJob>("SendOrdersToAvaTaxJob", x => x.RunScheduled(JobCancellationToken.Null, null), cronExpression);
            }
            else
            {
                RecurringJob.RemoveIfExists("SendOrdersToAvaTaxJob");
            }

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <AvaTaxDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
            }
        }
Пример #19
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);
            //Register settings for type Store
            settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.AllSettings, typeof(Store).Name);

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Store",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <StoreDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicStoreJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <StoreChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <StoreChangedEventHandler>().Handle(message));

            var registrar = appBuilder.ApplicationServices.GetService <INotificationRegistrar>();

            registrar.RegisterNotification <StoreDynamicEmailNotification>();
        }
Пример #20
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var paymentMethodsRegistrar = appBuilder.ApplicationServices.GetRequiredService <IPaymentMethodsRegistrar>();

            paymentMethodsRegistrar.RegisterPaymentMethod <DefaultManualPaymentMethod>();
            settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.DefaultManualPaymentMethod.AllSettings, typeof(DefaultManualPaymentMethod).Name);

            PolymorphJsonConverter.RegisterTypeForDiscriminator(typeof(PaymentMethod), nameof(PaymentMethod.TypeName));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <PaymentDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #21
0
        public void PostInitialize(IApplicationBuilder applicationBuilder)
        {
            _appBuilder = applicationBuilder;

            var settingsRegistrar = applicationBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(Core.ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            PolymorphJsonConverter.RegisterTypeForDiscriminator(typeof(TaxProvider), nameof(TaxProvider.TypeName));

            var taxProviderRegistrar = applicationBuilder.ApplicationServices.GetRequiredService <ITaxProviderRegistrar>();

            taxProviderRegistrar.RegisterTaxProvider <FixedRateTaxProvider>();
            settingsRegistrar.RegisterSettingsForType(Core.ModuleConstants.Settings.FixedTaxProviderSettings.AllSettings, typeof(FixedRateTaxProvider).Name);

            using (var serviceScope = applicationBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <TaxDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #22
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <QuoteRequest>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(Core.ModuleConstants.Settings.AllSettings, ModuleInfo.Id);
            settingsRegistrar.RegisterSettingsForType(Core.ModuleConstants.Settings.StoreLevelSettings, nameof(Store));

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(Core.ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                                    new Permission()
            {
                GroupName = "Quotes",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());


            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <QuoteRequestChangeEvent>((message, token) => appBuilder.ApplicationServices.GetService <LogChangesEventHandler>().Handle(message));


            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <QuoteDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #23
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <CustomerOrder>();
            dynamicPropertyRegistrar.RegisterType <PaymentIn>();
            dynamicPropertyRegistrar.RegisterType <Shipment>();
            dynamicPropertyRegistrar.RegisterType <LineItem>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.General.AllSettings, ModuleInfo.Id);
            //Register store level settings
            settingsRegistrar.RegisterSettingsForType(ModuleConstants.Settings.StoreLevelSettings, nameof(Store));

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Orders",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());

            AbstractTypeFactory <PermissionScope> .RegisterType <OnlyOrderResponsibleScope>();

            AbstractTypeFactory <PermissionScope> .RegisterType <OrderSelectedStoreScope>();

            permissionsProvider.WithAvailabeScopesForPermissions(new[] {
                ModuleConstants.Security.Permissions.Read,
                ModuleConstants.Security.Permissions.Update,
                ModuleConstants.Security.Permissions.Delete,
            }, new OnlyOrderResponsibleScope(), new OrderSelectedStoreScope());


            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <OrderChangedEvent>((message, token) => appBuilder.ApplicationServices.GetService <AdjustInventoryOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>((message, token) => appBuilder.ApplicationServices.GetService <CancelPaymentOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>((message, token) => appBuilder.ApplicationServices.GetService <LogChangesOrderChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <OrderChangedEvent>((message, token) => appBuilder.ApplicationServices.CreateScope().ServiceProvider.GetService <SendNotificationsOrderChangedEventHandler>().Handle(message));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <OrderDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            var notificationRegistrar = appBuilder.ApplicationServices.GetService <INotificationRegistrar>();

            notificationRegistrar.RegisterNotification <CancelOrderEmailNotification>();
            notificationRegistrar.RegisterNotification <InvoiceEmailNotification>();
            notificationRegistrar.RegisterNotification <NewOrderStatusEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderCreateEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderPaidEmailNotification>();
            notificationRegistrar.RegisterNotification <OrderSentEmailNotification>();

            // enable polymorphic types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcNewtonsoftJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(appBuilder.ApplicationServices.GetService <PolymorphicOperationJsonConverter>());
        }
Пример #24
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            //Register module permissions
            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x => new Permission()
            {
                GroupName = "Catalog", Name = x
            }).ToArray());


            //Register Permission scopes
            AbstractTypeFactory <PermissionScope> .RegisterType <SelectedCatalogScope>();

            permissionsProvider.WithAvailabeScopesForPermissions(new[] {
                ModuleConstants.Security.Permissions.Read,
                ModuleConstants.Security.Permissions.Update,
                ModuleConstants.Security.Permissions.Delete,
            }, new SelectedCatalogScope());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcNewtonsoftJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new SearchCriteriaJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <ProductChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <CategoryChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <CategoryChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <IndexCategoryChangedEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <ProductChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <IndexProductChangedEventHandler>().Handle(message));

            //Force migrations
            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var catalogDbContext = serviceScope.ServiceProvider.GetRequiredService <CatalogDbContext>();
                catalogDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                catalogDbContext.Database.EnsureCreated();
                catalogDbContext.Database.Migrate();
            }

            var searchRequestBuilderRegistrar = appBuilder.ApplicationServices.GetService <ISearchRequestBuilderRegistrar>();

            searchRequestBuilderRegistrar.Register(KnownDocumentTypes.Product, appBuilder.ApplicationServices.GetService <ProductSearchRequestBuilder>);
            searchRequestBuilderRegistrar.Register(KnownDocumentTypes.Category, appBuilder.ApplicationServices.GetService <CategorySearchRequestBuilder>);

            // Ensure that required dynamic properties are always registered in the system
            var dynamicPropertyService = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyService>();

            dynamicPropertyService.SaveDynamicPropertiesAsync(new[] {
                new DynamicProperty
                {
                    Id         = BrowseFilterService.FilteredBrowsingPropertyId,
                    Name       = BrowseFilterService.FilteredBrowsingPropertyName,
                    ObjectType = typeof(Store).FullName,
                    ValueType  = DynamicPropertyValueType.LongText,
                    CreatedBy  = "Auto"
                }
            }).GetAwaiter().GetResult();

            #region Register types for generic Export

            var registrar = appBuilder.ApplicationServices.GetService <IKnownExportTypesRegistrar>();

            registrar.RegisterType(
                ExportedTypeDefinitionBuilder.Build <ExportableProduct, ProductExportDataQuery>()
                .WithDataSourceFactory(appBuilder.ApplicationServices.GetService <ICatalogExportPagedDataSourceFactory>())
                .WithMetadata(typeof(ExportableProduct).GetPropertyNames(
                                  nameof(ExportableProduct.Properties),
                                  $"{nameof(ExportableProduct.Properties)}.{nameof(Property.Values)}",
                                  $"{nameof(ExportableProduct.Properties)}.{nameof(Property.Attributes)}",
                                  $"{nameof(ExportableProduct.Properties)}.{nameof(Property.DisplayNames)}",
                                  $"{nameof(ExportableProduct.Properties)}.{nameof(Property.ValidationRules)}",
                                  nameof(ExportableProduct.Assets),
                                  nameof(ExportableProduct.Links),
                                  nameof(ExportableProduct.SeoInfos),
                                  nameof(ExportableProduct.Reviews),
                                  nameof(ExportableProduct.Associations),
                                  nameof(ExportableProduct.ReferencedAssociations),
                                  nameof(ExportableProduct.Outlines),
                                  nameof(ExportableProduct.Images)))
                .WithTabularMetadata(typeof(ExportableProduct).GetPropertyNames()));

            registrar.RegisterType(
                ExportedTypeDefinitionBuilder.Build <ExportableCatalogFull, CatalogFullExportDataQuery>()
                .WithDataSourceFactory(appBuilder.ApplicationServices.GetService <ICatalogExportPagedDataSourceFactory>())
                .WithMetadata(new ExportedTypeMetadata {
                PropertyInfos = Array.Empty <ExportedTypePropertyInfo>()
            })
                .WithRestrictDataSelectivity());

            #endregion

            #region BulkActions

            AbstractTypeFactory <BulkActionContext> .RegisterType <CategoryChangeBulkActionContext>();

            AbstractTypeFactory <BulkActionContext> .RegisterType <PropertiesUpdateBulkActionContext>();

            RegisterBulkAction(nameof(CategoryChangeBulkAction), nameof(CategoryChangeBulkActionContext));
            RegisterBulkAction(nameof(PropertiesUpdateBulkAction), nameof(PropertiesUpdateBulkActionContext));

            #endregion
        }
Пример #25
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;
            AbstractTypeFactory <Member> .RegisterType <Organization>().MapToType <OrganizationEntity>();

            AbstractTypeFactory <Member> .RegisterType <Contact>().MapToType <ContactEntity>();

            AbstractTypeFactory <Member> .RegisterType <Vendor>().MapToType <VendorEntity>();

            AbstractTypeFactory <Member> .RegisterType <Employee>().MapToType <EmployeeEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <ContactEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <OrganizationEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <VendorEntity>();

            AbstractTypeFactory <MemberEntity> .RegisterType <EmployeeEntity>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var dynamicPropertyRegistrar = appBuilder.ApplicationServices.GetRequiredService <IDynamicPropertyRegistrar>();

            dynamicPropertyRegistrar.RegisterType <Organization>();
            dynamicPropertyRegistrar.RegisterType <Contact>();
            dynamicPropertyRegistrar.RegisterType <Vendor>();
            dynamicPropertyRegistrar.RegisterType <Employee>();


            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Customer", Name = x
            }).ToArray());

            AbstractTypeFactory <PermissionScope> .RegisterType <AssociatedOrganizationsOnlyScope>();

            permissionsProvider.WithAvailabeScopesForPermissions(new[] {
                ModuleConstants.Security.Permissions.Create,
                ModuleConstants.Security.Permissions.Access,
                ModuleConstants.Security.Permissions.Read,
                ModuleConstants.Security.Permissions.Update
            }, new AssociatedOrganizationsOnlyScope());

            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcNewtonsoftJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicMemberJsonConverter());

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <MemberChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesEventHandler>().Handle(message));
            inProcessBus.RegisterHandler <UserChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <SecurtityAccountChangesEventHandler>().Handle(message));

            var settingsManager = appBuilder.ApplicationServices.GetService <ISettingsManager>();

            if (settingsManager.GetValue(ModuleConstants.Settings.General.EventBasedIndexation.Name, false))
            {
                inProcessBus.RegisterHandler <MemberChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <IndexMemberChangedEventHandler>().Handle(message));
            }

            var searchRequestBuilderRegistrar = appBuilder.ApplicationServices.GetService <ISearchRequestBuilderRegistrar>();

            searchRequestBuilderRegistrar.Register(KnownDocumentTypes.Member, appBuilder.ApplicationServices.GetService <MemberSearchRequestBuilder>);

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <CustomerDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }
        }
Пример #26
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _appBuilder = appBuilder;

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.General.AllSettings, ModuleInfo.Id);

            var permissionsProvider = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsProvider.RegisterPermissions(ModuleConstants.Security.Permissions.AllPermissions.Select(x =>
                                                                                                               new Permission()
            {
                GroupName = "Marketing",
                ModuleId  = ModuleInfo.Id,
                Name      = x
            }).ToArray());

            var eventHandlerRegistrar = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            //Create order observer. record order coupon usage
            eventHandlerRegistrar.RegisterHandler <DynamicContentItemChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <DynamicContentItemEventHandlers>().Handle(message));

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <MarketingDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            var dynamicContentService = appBuilder.ApplicationServices.GetService <IDynamicContentService>();

            foreach (var id in new[] { ModuleConstants.MarketingConstants.ContentPlacesRootFolderId, ModuleConstants.MarketingConstants.CotentItemRootFolderId })
            {
                var folders    = dynamicContentService.GetFoldersByIdsAsync(new[] { id }).GetAwaiter().GetResult();
                var rootFolder = folders.FirstOrDefault();
                if (rootFolder == null)
                {
                    rootFolder = new DynamicContentFolder
                    {
                        Id   = id,
                        Name = id
                    };
                    dynamicContentService.SaveFoldersAsync(new[] { rootFolder }).GetAwaiter().GetResult();
                }
            }

            //Create standard dynamic properties for dynamic content item
            var dynamicPropertyService  = appBuilder.ApplicationServices.GetService <IDynamicPropertyService>();
            var contentItemTypeProperty = new DynamicProperty
            {
                Id           = "Marketing_DynamicContentItem_Type_Property",
                IsDictionary = true,
                Name         = "Content type",
                ObjectType   = typeof(DynamicContentItem).FullName,
                ValueType    = DynamicPropertyValueType.ShortText,
                CreatedBy    = "Auto",
            };

            dynamicPropertyService.SaveDynamicPropertiesAsync(new[] { contentItemTypeProperty }).GetAwaiter().GetResult();

            var extensionManager = appBuilder.ApplicationServices.GetService <IMarketingExtensionManager>();

            extensionManager.PromotionCondition = new PromotionConditionAndRewardTree {
                Children = GetConditionsAndRewards()
            };
            extensionManager.ContentCondition = new DynamicContentConditionTree()
            {
                Children = GetDynamicContentConditions()
            };

            //Next lines allow to use polymorph types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new PolymorphicMarketingJsonConverter(appBuilder.ApplicationServices.GetService <IMarketingExtensionManager>()));
            mvcJsonOptions.Value.SerializerSettings.Converters.Add(new RewardJsonConverter());

            AbstractTypeFactory <IConditionTree> .RegisterType <PromotionConditionAndRewardTree>();

            AbstractTypeFactory <IConditionTree> .RegisterType <DynamicContentConditionTree>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockContentCondition>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockCustomerCondition>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionIsRegisteredUser>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionIsEveryone>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionIsFirstTimeBuyer>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockCatalogCondition>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionAtNumItemsInCart>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionAtNumItemsInCategoryAreInCart>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionAtNumItemsOfEntryAreInCart>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionCartSubtotalLeast>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockCartCondition>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionCategoryIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionCodeContains>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionCurrencyIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionEntryIs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <ConditionInStockQuantity>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockReward>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardCartGetOfAbsSubtotal>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardCartGetOfRelSubtotal>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGetFreeNumItemOfProduct>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGetOfAbs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGetOfAbsForNum>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGetOfRel>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGetOfRelForNum>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemGiftNumItem>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardShippingGetOfAbsShippingMethod>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardShippingGetOfRelShippingMethod>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardPaymentGetOfAbs>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardPaymentGetOfRel>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemForEveryNumInGetOfRel>();

            AbstractTypeFactory <IConditionTree> .RegisterType <RewardItemForEveryNumOtherItemInGetOfRel>();

            AbstractTypeFactory <PromotionReward> .RegisterType <GiftReward>();

            AbstractTypeFactory <PromotionReward> .RegisterType <CartSubtotalReward>();

            AbstractTypeFactory <PromotionReward> .RegisterType <CatalogItemAmountReward>();

            AbstractTypeFactory <PromotionReward> .RegisterType <PaymentReward>();

            AbstractTypeFactory <PromotionReward> .RegisterType <ShipmentReward>();

            AbstractTypeFactory <PromotionReward> .RegisterType <SpecialOfferReward>();
        }
Пример #27
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
                app.UseDatabaseErrorPage();
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            //Return all errors as Json response
            app.UseMiddleware <ApiErrorWrappingMiddleware>();

            var requireHttps = bool.Parse(Configuration.GetSection("VirtoCommerce:RequireHttps").Value ?? false.ToString());

            if (requireHttps)
            {
                app.UseHttpsRedirection();
            }
            app.UseStaticFiles();
            app.UseCookiePolicy();

            //Handle all requests like a $(Platform) and Modules/$({ module.ModuleName }) as static files in correspond folder
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(env.MapPath("~/js")),
                RequestPath  = new PathString($"/$(Platform)/Scripts")
            });
            var localModules = app.ApplicationServices.GetRequiredService <ILocalModuleCatalog>().Modules;

            foreach (var module in localModules.OfType <ManifestModuleInfo>())
            {
                app.UseStaticFiles(new StaticFileOptions()
                {
                    FileProvider = new PhysicalFileProvider(module.FullPhysicalPath),
                    RequestPath  = new PathString($"/Modules/$({ module.ModuleName })")
                });
            }

            app.UseDefaultFiles();

            app.UseAuthentication();

            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });

            //Force migrations
            using (var serviceScope = app.ApplicationServices.CreateScope())
            {
                var platformDbContext = serviceScope.ServiceProvider.GetRequiredService <PlatformDbContext>();
                platformDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Platform"));
                platformDbContext.Database.Migrate();

                var securityDbContext = serviceScope.ServiceProvider.GetRequiredService <SecurityDbContext>();
                securityDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Security"));
                securityDbContext.Database.Migrate();
            }


            // Enable middleware to serve generated Swagger as a JSON endpoint.
            app.UseSwagger();

            app.UseHangfireDashboard("/hangfire", new DashboardOptions {
                Authorization = new[] { new HangfireAuthorizationHandler() }
            });
            app.UseHangfireServer(new BackgroundJobServerOptions
            {
                // Create some queues for job prioritization.
                // Normal equals 'default', because Hangfire depends on it.
                Queues = new[] { JobPriority.High, JobPriority.Normal, JobPriority.Low }
            });

            app.UseDbTriggers();
            //Register platform settings
            app.UsePlatformSettings();
            app.UseModules();
            //Register platform permissions
            app.UsePlatformPermissions();

            //Setup SignalR hub
            app.UseSignalR(routes =>
            {
                routes.MapHub <PushNotificationHub>("/pushNotificationHub");
            });

            //Seed default users
            app.UseDefaultUsersAsync().GetAwaiter().GetResult();
        }
Пример #28
0
        public void GetUpdateV2MigrationName_GetNameForVirtoCommerce(string moduleName, string expectedMigrationName)
        {
            var actualMigrationName = MigrationName.GetUpdateV2MigrationName(moduleName);

            Assert.Equal(expectedMigrationName, actualMigrationName);
        }
Пример #29
0
        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
                app.UseDatabaseErrorPage();
#if DEBUG
                TelemetryDebugWriter.IsTracingDisabled = true;
#endif
            }
            else
            {
                app.UseExceptionHandler("/Error");
                app.UseHsts();
            }

            //Return all errors as Json response
            app.UseMiddleware <ApiErrorWrappingMiddleware>();

            // Engages the forwarded header support in the pipeline  (see description above)
            app.UseForwardedHeaders();

            app.UseHttpsRedirection();

            // Add default MimeTypes with additional bindings
            var fileExtensionsBindings = new Dictionary <string, string>()
            {
                { ".liquid", "text/html" },
                { ".md", "text/html" }
            };

            // Create default provider (with default Mime types)
            var fileExtensionContentTypeProvider = new FileExtensionContentTypeProvider();

            // Add custom bindings
            foreach (var binding in fileExtensionsBindings)
            {
                fileExtensionContentTypeProvider.Mappings[binding.Key] = binding.Value;
            }

            app.UseStaticFiles(new StaticFileOptions
            {
                ContentTypeProvider = fileExtensionContentTypeProvider
            });

            app.UseRouting();
            app.UseCookiePolicy();

            //Handle all requests like a $(Platform) and Modules/$({ module.ModuleName }) as static files in correspond folder
            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(WebHostEnvironment.MapPath("~/js")),
                RequestPath  = new PathString($"/$(Platform)/Scripts")
            });

            var localModules = app.ApplicationServices.GetRequiredService <ILocalModuleCatalog>().Modules;
            foreach (var module in localModules.OfType <ManifestModuleInfo>())
            {
                app.UseStaticFiles(new StaticFileOptions()
                {
                    FileProvider = new PhysicalFileProvider(module.FullPhysicalPath),
                    RequestPath  = new PathString($"/modules/$({ module.ModuleName })")
                });
            }

            app.UseDefaultFiles();

            app.UseAuthentication();
            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });

            //Force migrations
            using (var serviceScope = app.ApplicationServices.CreateScope())
            {
                var platformDbContext = serviceScope.ServiceProvider.GetRequiredService <PlatformDbContext>();
                platformDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Platform"));
                platformDbContext.Database.Migrate();

                var securityDbContext = serviceScope.ServiceProvider.GetRequiredService <SecurityDbContext>();
                securityDbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName("Security"));
                securityDbContext.Database.Migrate();
            }

            app.UseDbTriggers();
            //Register platform settings
            app.UsePlatformSettings();

            // Complete hangfire init
            app.UseHangfire(Configuration);

            app.UseModules();

            //Register platform permissions
            app.UsePlatformPermissions();

            //Setup SignalR hub
            app.UseEndpoints(routes =>
            {
                routes.MapHub <PushNotificationHub>("/pushNotificationHub");
            });

            //Seed default users
            app.UseDefaultUsersAsync().GetAwaiter().GetResult();

            // Enable middleware to serve generated Swagger as a JSON endpoint.
            app.UseSwagger();
        }
Пример #30
0
        public void PostInitialize(IApplicationBuilder appBuilder)
        {
            _applicationBuilder = appBuilder;
            var settingsManager = _serviceProvider.GetService <ISettingsManager>();

            var settingsRegistrar = appBuilder.ApplicationServices.GetRequiredService <ISettingsRegistrar>();

            settingsRegistrar.RegisterSettings(ModuleConstants.Settings.AllSettings, ModuleInfo.Id);

            var modulePermissions = ModuleConstants.Security.Permissions.AllPermissions.Select(p => new Permission
            {
                Name      = p,
                GroupName = "Pricing",
                ModuleId  = ModuleInfo.Id
            }).ToArray();
            var permissionsRegistrar = appBuilder.ApplicationServices.GetRequiredService <IPermissionsRegistrar>();

            permissionsRegistrar.RegisterPermissions(modulePermissions);

            using (var serviceScope = appBuilder.ApplicationServices.CreateScope())
            {
                var dbContext = serviceScope.ServiceProvider.GetRequiredService <PricingDbContext>();
                dbContext.Database.MigrateIfNotApplied(MigrationName.GetUpdateV2MigrationName(ModuleInfo.Id));
                dbContext.Database.EnsureCreated();
                dbContext.Database.Migrate();
            }

            // Next lines allow to use polymorph types in API controller methods
            var mvcJsonOptions = appBuilder.ApplicationServices.GetService <IOptions <MvcJsonOptions> >();

            mvcJsonOptions.Value.SerializerSettings.Converters.Add(appBuilder.ApplicationServices.GetService <PolymorphicPricingJsonConverter>());

            var priceIndexingEnabled = settingsManager.GetValue(ModuleConstants.Settings.General.PricingIndexing.Name, true);

            if (priceIndexingEnabled)
            {
                // Add price document source to the product indexing configuration
                var productIndexingConfigurations = _serviceProvider.GetService <IndexDocumentConfiguration[]>();

                if (productIndexingConfigurations != null)
                {
                    var productPriceDocumentSource = new IndexDocumentSource
                    {
                        ChangesProvider = _serviceProvider.GetService <IIndexDocumentChangesProvider>(),
                        DocumentBuilder = _serviceProvider.GetService <ProductPriceDocumentBuilder>(),
                    };

                    foreach (var configuration in productIndexingConfigurations.Where(c =>
                                                                                      c.DocumentType == KnownDocumentTypes.Product))
                    {
                        if (configuration.RelatedSources == null)
                        {
                            configuration.RelatedSources = new List <IndexDocumentSource>();
                        }

                        configuration.RelatedSources.Add(productPriceDocumentSource);
                    }
                }
            }

            var inProcessBus = appBuilder.ApplicationServices.GetService <IHandlerRegistrar>();

            inProcessBus.RegisterHandler <PriceChangedEvent>(async(message, token) => await appBuilder.ApplicationServices.GetService <LogChangesChangedEventHandler>().Handle(message));

            //Pricing expression
            AbstractTypeFactory <IConditionTree> .RegisterType <PriceConditionTree>();

            AbstractTypeFactory <IConditionTree> .RegisterType <BlockPricingCondition>();

            var pricingExtensionManager = appBuilder.ApplicationServices.GetRequiredService <IPricingExtensionManager>();

            pricingExtensionManager.PriceConditionTree = new PriceConditionTree
            {
                Children = new List <IConditionTree>()
                {
                    GetPricingDynamicExpression()
                }
            };
        }