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(); } }
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(); } } }
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(); } }
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(); }
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(); } }
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(); } }
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(); } }
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(); } }
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); }
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(); } }
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(); } }
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(); } }
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)); }
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>()); }
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); }
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(); } }
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)); } }
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>(); }
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(); } }
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(); } }
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(); } }
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>()); }
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 }
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(); } }
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>(); }
// 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(); }
public void GetUpdateV2MigrationName_GetNameForVirtoCommerce(string moduleName, string expectedMigrationName) { var actualMigrationName = MigrationName.GetUpdateV2MigrationName(moduleName); Assert.Equal(expectedMigrationName, actualMigrationName); }
// 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(); }
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() } }; }