public override void PreInitialize()
        {
            Configuration.Auditing.IsEnabledForAnonymousUsers = true;

            Configuration.Modules.AbpAutoMapper().Configurators.Add(config =>
            {
                #region Trade
                config.CreateMap <Trade, TradeDto>()
                .ForMember(u => u.Market, options => options.MapFrom(input => input.Market.Symbol))
                //.ForMember(u => u.Stock, options => options.MapFrom(input => input.Stock.Symbol))
                //.ForMember(u => u.CoveredCallOption, options => options.MapFrom(input => input.CoveredCallOption.Name))
                //.ForMember(u => u.BullPutSpreadShortOption, options => options.MapFrom(input => input.BullPutSpreadShortOption.Name))
                //.ForMember(u => u.BullPutSpreadLongOption, options => options.MapFrom(input => input.BullPutSpreadLongOption.Name))
                .ForMember(u => u.EntrySetups, options => options.MapFrom(input => EnumExtensions.FlaggedEnumToList <TradingSetups>(input.EntrySetups)))
                .ForMember(u => u.EntryScreenshotDbId, options => options.MapFrom(input => input.EntryScreenshotDbId.HasValue ? input.EntryScreenshotDbId.Value : 0))
                .ForMember(u => u.ExitScreenshotDbId, options => options.MapFrom(input => input.ExitScreenshotDbId.HasValue ? input.ExitScreenshotDbId.Value : 0));

                config.CreateMap <TradeDto, Trade>()
                .ForMember(u => u.EntrySetups, options => options.MapFrom(input => EnumExtensions.ListToFlaggedEnum <TradingSetups>(input.EntrySetups)))
                .ForMember(u => u.EntryScreenshotDbId, options => options.MapFrom(input => Extensions.GetNullableValue(input.EntryScreenshotDbId)))
                .ForMember(u => u.ExitScreenshotDbId, options => options.MapFrom(input => Extensions.GetNullableValue(input.ExitScreenshotDbId)));
                #endregion

                #region MarketLogEntry
                config.CreateMap <MarketLogEntry, MarketLogEntryDto>()
                .ForMember(u => u.Market, options => options.MapFrom(input => input.Market.Symbol))
                .ForMember(u => u.ScreenshotDbId, options => options.MapFrom(input => input.ScreenshotDbId.HasValue ? input.ScreenshotDbId.Value : 0));

                config.CreateMap <MarketLogEntryDto, MarketLogEntry>();
                #endregion

                #region MonteCarloSimulation
                config.CreateMap <MonteCarloSimulation, MonteCarloSimulationDto>()
                .ForMember(u => u.TradingAccount, options => options.MapFrom(input => input.TradingAccount.Name))
                .ForMember(u => u.MarketMaxContractsList, options => options.MapFrom(input => JsonConvert.DeserializeObject <List <MarketMaxContracts> >(input.MarketMaxContractsJson)));

                config.CreateMap <MonteCarloSimulationDto, MonteCarloSimulation>()
                .ForMember(u => u.TradingAccount, options => options.Ignore())
                .ForMember(u => u.MarketMaxContractsJson, options => options.MapFrom(input => JsonConvert.SerializeObject(input.MarketMaxContractsList)));
                #endregion

                #region Market
                config.CreateMap <Market, TosMarketDto>()
                .ForMember(u => u.Id, options => options.MapFrom(input => input.Id))
                .ForMember(u => u.TickValue, options => options.MapFrom(input => input.TickValue))
                .ForAllOtherMembers(options => options.Ignore());

                config.CreateMap <TosMarketDto, Market>()
                .ForMember(u => u.TickSize, options => options.Ignore())
                .ForMember(u => u.TickValue, options => options.Ignore())
                .ForMember(u => u.InitialMargin, options => options.Ignore());
                #endregion

                //Configuration.Settings.Providers.Add<MySettingProvider>();
            });

            //Declare entity types
            Configuration.Modules.Zero().EntityTypes.Tenant = typeof(Tenant);
            Configuration.Modules.Zero().EntityTypes.Role = typeof(Role);
            Configuration.Modules.Zero().EntityTypes.User = typeof(User);

            //Remove the following line to disable multi-tenancy.
            Configuration.MultiTenancy.IsEnabled = GuerillaTraderConsts.MultiTenancyEnabled;

            //Add/remove localization sources here
            Configuration.Localization.Sources.Add(
                new DictionaryBasedLocalizationSource(
                    GuerillaTraderConsts.LocalizationSourceName,
                    new XmlEmbeddedFileLocalizationDictionaryProvider(
                        Assembly.GetExecutingAssembly(),
                        "GuerillaTrader.Localization.Source"
                        )
                    )
                );

            AppRoleConfig.Configure(Configuration.Modules.Zero().RoleManagement);

            Configuration.Authorization.Providers.Add <GuerillaTraderAuthorizationProvider>();
        }
        public override void PreInitialize()
        {
            //workaround for issue: https://github.com/aspnet/EntityFrameworkCore/issues/9825
            //related github issue: https://github.com/aspnet/EntityFrameworkCore/issues/10407
            AppContext.SetSwitch("Microsoft.EntityFrameworkCore.Issue9825", true);

            Configuration.Auditing.IsEnabledForAnonymousUsers = true;

            //Declare entity types
            Configuration.Modules.Zero().EntityTypes.Tenant = typeof(Tenant);
            Configuration.Modules.Zero().EntityTypes.Role = typeof(Role);
            Configuration.Modules.Zero().EntityTypes.User = typeof(User);

            ProjectsNGLocalizationConfigurer.Configure(Configuration.Localization);

            //Adding feature providers
            Configuration.Features.Providers.Add <AppFeatureProvider>();

            //Adding setting providers
            Configuration.Settings.Providers.Add <AppSettingProvider>();

            //Adding notification providers
            Configuration.Notifications.Providers.Add <AppNotificationProvider>();

            //Adding webhook definition providers
            Configuration.Webhooks.Providers.Add <AppWebhookDefinitionProvider>();
            Configuration.Webhooks.TimeoutDuration = TimeSpan.FromMinutes(1);
            Configuration.Webhooks.IsAutomaticSubscriptionDeactivationEnabled = false;

            //Enable this line to create a multi-tenant application.
            Configuration.MultiTenancy.IsEnabled = ProjectsNGConsts.MultiTenancyEnabled;

            //Enable LDAP authentication
            //Configuration.Modules.ZeroLdap().Enable(typeof(AppLdapAuthenticationSource));

            //Twilio - Enable this line to activate Twilio SMS integration
            //Configuration.ReplaceService<ISmsSender,TwilioSmsSender>();

            //Adding DynamicEntityParameters definition providers
            Configuration.DynamicEntityParameters.Providers.Add <AppDynamicEntityParameterDefinitionProvider>();

            // MailKit configuration
            Configuration.Modules.AbpMailKit().SecureSocketOption = SecureSocketOptions.Auto;
            Configuration.ReplaceService <IMailKitSmtpBuilder, ProjectsNGMailKitSmtpBuilder>(DependencyLifeStyle.Transient);

            //Configure roles
            AppRoleConfig.Configure(Configuration.Modules.Zero().RoleManagement);

            if (DebugHelper.IsDebug)
            {
                //Disabling email sending in debug mode
                Configuration.ReplaceService <IEmailSender, NullEmailSender>(DependencyLifeStyle.Transient);
            }

            Configuration.ReplaceService(typeof(IEmailSenderConfiguration), () =>
            {
                Configuration.IocManager.IocContainer.Register(
                    Component.For <IEmailSenderConfiguration, ISmtpEmailSenderConfiguration>()
                    .ImplementedBy <ProjectsNGSmtpEmailSenderConfiguration>()
                    .LifestyleTransient()
                    );
            });

            Configuration.Caching.Configure(FriendCacheItem.CacheName, cache =>
            {
                cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(30);
            });

            IocManager.Register <DashboardConfiguration>();
        }
        public override void PreInitialize()
        {
            //workaround for issue: https://github.com/aspnet/EntityFrameworkCore/issues/9825
            //related github issue: https://github.com/aspnet/EntityFrameworkCore/issues/10407
            AppContext.SetSwitch("Microsoft.EntityFrameworkCore.Issue9825", true);

            Configuration.Auditing.IsEnabledForAnonymousUsers = true;

            //Declare entity types
            Configuration.Modules.Zero().EntityTypes.Tenant = typeof(Tenant);
            Configuration.Modules.Zero().EntityTypes.Role = typeof(Role);
            Configuration.Modules.Zero().EntityTypes.User = typeof(User);

            FloodCitiSenseLocalizationConfigurer.Configure(Configuration.Localization);

            //Adding feature providers
            Configuration.Features.Providers.Add <AppFeatureProvider>();

            //Adding setting providers
            Configuration.Settings.Providers.Add <AppSettingProvider>();

            //Adding notification providers
            Configuration.Notifications.Providers.Add <AppNotificationProvider>();

            //Enable this line to create a multi-tenant application.
            Configuration.MultiTenancy.IsEnabled = FloodCitiSenseConsts.MultiTenancyEnabled;

            //Enable LDAP authentication (It can be enabled only if MultiTenancy is disabled!)
            //Configuration.Modules.ZeroLdap().Enable(typeof(AppLdapAuthenticationSource));

            //Configure roles
            AppRoleConfig.Configure(Configuration.Modules.Zero().RoleManagement);

            //TODO: Remove this after smpt is configured
            //Disabling email sending
            //Configuration.ReplaceService<IEmailSender, NullEmailSender>(DependencyLifeStyle.Transient);



            //TODO: Enable this after smpt is configured
            //if (DebugHelper.IsDebug)
            //{
            //    //Disabling email sending in debug mode
            //    Configuration.ReplaceService<IEmailSender, NullEmailSender>(DependencyLifeStyle.Transient);
            //}

            Configuration.ReplaceService(typeof(IEmailSenderConfiguration), () =>
            {
                Configuration.IocManager.IocContainer.Register(
                    Component.For <IEmailSenderConfiguration, ISmtpEmailSenderConfiguration>()
                    .ImplementedBy <FloodCitiSenseSmtpEmailSenderConfiguration>()
                    .LifestyleTransient()
                    );
            });

            Configuration.Caching.Configure(FriendCacheItem.CacheName, cache =>
            {
                cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(30);
            });

            Configuration.Caching.Configure(PaymentCacheItem.CacheName, cache =>
            {
                cache.DefaultSlidingExpireTime = TimeSpan.FromMinutes(FloodCitiSenseConsts.PaymentCacheDurationInMinutes);
            });
        }