public void DoMigrations()
        {
            //if (String.IsNullOrEmpty(_config.SqlConnectionString.ProviderName) ||
            //    !_config.SqlConnectionString.ProviderName.Equals(SqlClient, StringComparison.OrdinalIgnoreCase))
            //{
            //    return;
            //}
            var settingsManager = new DataSettingsManager();

            try
            {
                //save settings
                //  var   connectionString = "mongodb://" + userNameandPassword + model.MongoDBServerName + "/" + model.MongoDBDatabaseName;
                var settings = new DataSettings
                {
                    DataProvider         = "mongodb",
                    DataConnectionString = " mongodb://localhost:27017/chatdb"
                };
                settingsManager.SaveSettings(settings);

                var dataProviderInstance = new MongoDBDataProviderManager(settingsManager.LoadSettings()).LoadDataProvider();
                dataProviderInstance.InitDatabase();
                //now resolve installation service
                var mongoDBDataProviderManager = new MongoDBDataProviderManager(settingsManager.LoadSettings());
                var dataProviderInstall        = mongoDBDataProviderManager.LoadDataProvider();
                CreateIndexes();
                InstallVersion();
            }
            catch (Exception exception)
            {
            }
        }
        private void RegisterDataLayer(ContainerBuilder builder)
        {
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            if (string.IsNullOrEmpty(dataProviderSettings.DataConnectionString))
            {
                builder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();
                builder.Register(x => new MongoDBDataProviderManager(x.Resolve <DataSettings>())).As <BaseDataProviderManager>().InstancePerDependency();
                builder.Register(x => x.Resolve <BaseDataProviderManager>().LoadDataProvider()).As <IDataProvider>().InstancePerDependency();
            }
            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                var connectionString = dataProviderSettings.DataConnectionString;
                var mongourl         = new MongoUrl(connectionString);
                var databaseName     = mongourl.DatabaseName;
                builder.Register(c => new MongoClient(mongourl).GetDatabase(databaseName)).InstancePerLifetimeScope();
                builder.Register <IMongoDBContext>(c => new MongoDBContext(connectionString)).InstancePerLifetimeScope();
            }
            else
            {
                builder.RegisterType <MongoDBContext>().As <IMongoDBContext>().InstancePerLifetimeScope();
            }

            //MongoDbRepository
            builder.RegisterGeneric(typeof(Repository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();
        }
Example #3
0
        /// <summary>
        /// Register dependencies
        /// </summary>
        /// <param name="config">Config</param>
        protected virtual void RegisterDependencies(DreamSaleConfig config)
        {
            var builder = new ContainerBuilder();

            //dependencies
            var typeFinder = new WebAppTypeFinder();

            builder.RegisterInstance(config).As <DreamSaleConfig>().SingleInstance();
            builder.RegisterInstance(this).As <IEngine>().SingleInstance();
            builder.RegisterInstance(typeFinder).As <ITypeFinder>().SingleInstance();

            //register dependencies provided by other assemblies
            var drTypes     = typeFinder.FindClassesOfType <IDependencyRegistrar>();
            var drInstances = new List <IDependencyRegistrar>();

            foreach (var drType in drTypes)
            {
                drInstances.Add((IDependencyRegistrar)Activator.CreateInstance(drType));
            }
            //sort
            drInstances = drInstances.AsQueryable().OrderBy(t => t.Order).ToList();
            foreach (var dependencyRegistrar in drInstances)
            {
                dependencyRegistrar.Register(builder, typeFinder, config);
            }

            //web helper
            //builder.RegisterType<WebHelper>().As<IWebHelper>().InstancePerLifetimeScope();



            //controllers
            builder.RegisterControllers(typeFinder.GetAssemblies().ToArray());

            //data layer
            var dataSettingsManager = new DataSettingsManager();

            var dataProviderSettings = dataSettingsManager.LoadSettings();

            builder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();

            var container = builder.Build();

            this._containerManager = new ContainerManager(container);

            // Set the dependency resolver for MVC.
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

            //HttpConfiguration config = new HttpConfiguration();

            // Set the dependency resolver for Web API.
            //var webApiResolver = new AutofacWebApiDependencyResolver(container);
            //config.DependencyResolver = webApiResolver;
        }
Example #4
0
        public void Register(ContainerBuilder builder, ITypeFinder typeFinder, IServiceProvider sp, AppConfig config)
        {
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();
            var dataProvider         = (new SusDataProviderManager(dataProviderSettings)).LoadDataProvider();

            //services.AddSingleton(typeof(DataSettings), dataProviderSettings);
            builder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();
            //services.AddSingleton(typeof(BaseDataProviderManager), new SusDataProviderManager(dataProviderSettings));
            builder.Register(x => new SusDataProviderManager(x.Resolve <DataSettings>())).As <BaseDataProviderManager>().InstancePerDependency();
            //services.AddSingleton(typeof(IDataProvider), s => s.GetService<BaseDataProviderManager>().LoadDataProvider());
            builder.Register(x => x.Resolve <BaseDataProviderManager>().LoadDataProvider()).As <IDataProvider>().InstancePerDependency();
            builder.Register(c =>
            {
                var contextBuilder = c.Resolve <IDataProvider>();
                return(new SusDbContext(contextBuilder.BuildOptions(dataProviderSettings.DataConnectionString)));
            }).As <IDbContext>().InstancePerLifetimeScope();
            //services.AddScoped(typeof(SusDbContext), s =>
            //{
            //    return new SusDbContext(s.GetService<IDataProvider>().BuildOptions(dataProviderSettings.DataConnectionString));
            //});

            //services.AddScoped(typeof(IRepository<>),typeof(SusRepository<>));
            builder.RegisterGeneric(typeof(SusRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();

            switch (config.CacheType)
            {
            case "Redis":
                //services.AddScoped<ICacheManager, RedisCacheManager>();
                builder.RegisterType <RedisCacheManager>().As <ICacheManager>().Named <ICacheManager>("nop_cache_static").InstancePerLifetimeScope();
                break;

            case "Memory":
                //services.AddSingleton<ICacheManager, MemoryCacheManager>();
                builder.RegisterType <MemoryCacheManager>().As <ICacheManager>().Named <ICacheManager>("nop_cache_static").SingleInstance();
                break;

            default:
                //services.AddScoped<ICacheManager, NullCache>();
                builder.RegisterType <NullCache>().As <ICacheManager>().Named <ICacheManager>("nop_cache_static").InstancePerLifetimeScope();
                break;
            }
            //builder.RegisterType<PerRequestCacheManager>().As<ICacheManager>().Named<ICacheManager>("nop_cache_per_request").InstancePerLifetimeScope();
            //services.AddSingleton<IRoutePublisher, RoutePublisher>();
            builder.RegisterType <RoutePublisher>().As <IRoutePublisher>().SingleInstance();
            //services.AddScoped<IPageHeadBuilder, PageHeadBuilder>();
            builder.RegisterType <PageHeadBuilder>().As <IPageHeadBuilder>().InstancePerLifetimeScope();
            builder.RegisterType <EncryptionService>().As <IEncryptionService>().InstancePerLifetimeScope();
            builder.RegisterType <UserIdentifyService>().As <IUserIdentifyService>().InstancePerLifetimeScope();
            builder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope();
            builder.RegisterType <AuthenticationService>().As <IAuthenticationService>().InstancePerLifetimeScope();
        }
        /// <summary>
        /// Register services and interfaces
        /// </summary>
        /// <param name="builder">Container builder</param>
        /// <param name="typeFinder">Type finder</param>
        /// <param name="config">Config</param>
        public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, VConfig config)
        {
            //HTTP context and other related stuff
            builder.Register(c =>
                             (new HttpContextWrapper(HttpContext.Current) as HttpContextBase))
            .As <HttpContextBase>()
            .InstancePerLifetimeScope();
            builder.Register(c => c.Resolve <HttpContextBase>().Request)
            .As <HttpRequestBase>()
            .InstancePerLifetimeScope();
            builder.Register(c => c.Resolve <HttpContextBase>().Response)
            .As <HttpResponseBase>()
            .InstancePerLifetimeScope();
            builder.Register(c => c.Resolve <HttpContextBase>().Server)
            .As <HttpServerUtilityBase>()
            .InstancePerLifetimeScope();
            builder.Register(c => c.Resolve <HttpContextBase>().Session)
            .As <HttpSessionStateBase>()
            .InstancePerLifetimeScope();

            //controllers
            builder.RegisterControllers(typeFinder.GetAssemblies().ToArray());

            //data layer
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            builder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();
            builder.Register(x => new EfDataProviderManager(x.Resolve <DataSettings>())).As <BaseDataProviderManager>().InstancePerDependency();
            builder.Register(x => x.Resolve <BaseDataProviderManager>().LoadDataProvider()).As <IDataProvider>().InstancePerDependency();
            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                var efDataProviderManager = new EfDataProviderManager(dataSettingsManager.LoadSettings());
                var dataProvider          = efDataProviderManager.LoadDataProvider();
                dataProvider.InitConnectionFactory();

                builder.Register <IDbContext>(c => new VObjectContext(dataProviderSettings.DataConnectionString)).InstancePerLifetimeScope();
            }
            else
            {
                builder.Register <IDbContext>(c => new VObjectContext(dataSettingsManager.LoadSettings().DataConnectionString)).InstancePerLifetimeScope();
            }

            //repository
            builder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();

            #region services
            builder.RegisterType <PostService>().As <IPostService>().InstancePerLifetimeScope();
            #endregion
        }
Example #6
0
        public void Register(ContainerBuilder containerBuilder, ITypeFinder typeFinder, AppConfig appConfig)
        {
            // Http Context
            containerBuilder.Register(c =>
                                      HttpContext.Current != null ?
                                      (new HttpContextWrapper(HttpContext.Current) as HttpContextBase) :
                                      (null))
            .As <HttpContextBase>()
            .InstancePerLifetimeScope();

            // Controllers
            containerBuilder.RegisterControllers(typeFinder.GetAssemblies().ToArray());

            // DAL
            DataSettingsManager dataSettingsManager = new DataSettingsManager();
            var dataSettings = dataSettingsManager.LoadSettings();

            containerBuilder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();
            containerBuilder.Register(c => new EfDataProviderManager(c.Resolve <DataSettings>()))
            .As <BaseDataProviderManager>().InstancePerDependency();

            containerBuilder.Register(c => c.Resolve <BaseDataProviderManager>().LoadDataProvider())
            .As <IDataProvider>().InstancePerDependency();

            if (dataSettings != null && dataSettings.IsValid())
            {
                var efDataProviderManager = new EfDataProviderManager(dataSettings);
                var dataProvider          = efDataProviderManager.LoadDataProvider();
                dataProvider.InitConnectionFactory();

                containerBuilder.Register <IDbContext>(c => new AppObjectContext(dataSettings.DataConnectionString)).InstancePerLifetimeScope();
            }
            else
            {
                containerBuilder.Register <IDbContext>(c => new AppObjectContext(dataSettingsManager.LoadSettings().DataConnectionString))
                .InstancePerLifetimeScope();
            }

            containerBuilder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();

            //Service
            containerBuilder.RegisterType <FormAuthenticationService>().As <IAuthenticationService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <StudentService>().As <IStudentService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <StudentRegistrationService>().As <IStudentRegistrationService>().InstancePerLifetimeScope();
            containerBuilder.RegisterType <EncryptionService>().As <IEncryptionService>().InstancePerLifetimeScope();

            //Route Publisher
            containerBuilder.RegisterType <RoutePublisher>().As <IRoutePublisher>().SingleInstance();
        }
        /// <summary>
        /// Register services and interfaces
        /// </summary>
        /// <param name="builder">Container builder</param>
        /// <param name="typeFinder">Type finder</param>
        /// <param name="config">Config</param>
        public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder, MSTConfig config)
        {
            //web helper
            builder.RegisterType <WebHelper>().As <IWebHelper>().InstancePerLifetimeScope();

            //data layer
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            builder.Register(c => dataSettingsManager.LoadSettings()).As <DataSettings>();
            builder.Register(x => new EfDataProviderManager(x.Resolve <DataSettings>())).As <BaseDataProviderManager>().InstancePerDependency();

            builder.Register(x => x.Resolve <BaseDataProviderManager>().LoadDataProvider()).As <IDataProvider>().InstancePerDependency();

            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                var efDataProviderManager = new EfDataProviderManager(dataSettingsManager.LoadSettings());
                var dataProvider          = efDataProviderManager.LoadDataProvider();
                dataProvider.InitConnectionFactory();

                builder.Register <IDbContext>(c => new MstDbContext(dataProviderSettings.DataConnectionString)).InstancePerLifetimeScope();
            }
            else
            {
                builder.Register <IDbContext>(c => new MstDbContext(dataSettingsManager.LoadSettings().DataConnectionString)).InstancePerLifetimeScope();
            }



            //repositories
            builder.RegisterGeneric(typeof(EfRepository <>)).As(typeof(IRepository <>)).InstancePerLifetimeScope();

            builder.RegisterType <RoutePublisher>().As <IRoutePublisher>().SingleInstance();
            //services
            builder.RegisterType <GenderService>().As <IGenderService>().InstancePerLifetimeScope();
            builder.RegisterType <CountryService>().As <ICountryService>().InstancePerLifetimeScope();
            builder.RegisterType <OrganizationService>().As <IOrganizationService>().InstancePerLifetimeScope();
            builder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope();
            builder.RegisterType <EmailService>().As <IEmailService>().InstancePerLifetimeScope();
            builder.RegisterType <PatientService>().As <IPatientService>().InstancePerLifetimeScope();
            builder.RegisterType <PatientVisitService>().As <IPatientVisitService>().InstancePerLifetimeScope();
            builder.RegisterType <OrganizationPharmacyService>().As <IOrganizationPharmacyService>().InstancePerLifetimeScope();
            builder.RegisterType <CheifComplainService>().As <ICheifComplainService>().InstancePerLifetimeScope();
            builder.RegisterType <AzureStorage>().As <IStorage>().InstancePerLifetimeScope();
            //installation service

            builder.RegisterType <CodeFirstInstallationService>().As <IInstallationService>().InstancePerLifetimeScope();
        }
        /// <summary>
        /// Add services to the application and configure service provider
        /// </summary>
        /// <param name="services">Collection of service descriptors</param>
        /// <param name="configuration">Configuration of the application</param>
        /// <returns>Configured service provider</returns>
        public static IServiceProvider ConfigureApplicationServices(this IServiceCollection services, IConfiguration configuration)
        {
            //add GSConfig configuration parameters
            services.ConfigureStartupConfig <GSConfig>(configuration.GetSection("GS"));
            //add hosting configuration parameters
            services.ConfigureStartupConfig <HostingConfig>(configuration.GetSection("Hosting"));
            //add accessor to HttpContext
            services.AddHttpContextAccessor();

            //create, initialize and configure the engine
            var engine = EngineContext.Create();

            engine.Initialize(services);
            var serviceProvider = engine.ConfigureServices(services, configuration);

            if (DataSettingsManager.DatabaseIsInstalled)
            {
                //implement schedule tasks
                //database is already installed, so start scheduled tasks
                TaskManager.Instance.Initialize();
                TaskManager.Instance.Start();

                //log application start
                EngineContext.Current.Resolve <ILogger>().Information("Application started", null, null);
                //phuc vu cho viec notification
                SqlDependency.Start(DataSettingsManager.LoadSettings().DataConnectionString);
            }

            return(serviceProvider);
        }
        public MotelProcessorAccessor(IEnumerable <IMigrationProcessor> processors)
        {
            var dataSettings = DataSettingsManager.LoadSettings();

            var procs = processors.ToList();

            if (procs.Count == 0)
            {
                throw new ProcessorFactoryNotFoundException("No migration processor registered.");
            }

            if (dataSettings is null)
            {
                Processor = procs.FirstOrDefault();
            }
            else
            {
                switch (dataSettings.DataProvider)
                {
                case DataProviderType.SqlServer:
                    Processor = FindGenerator(procs, "SqlServer");
                    break;

                case DataProviderType.MySql:
                    Processor = FindGenerator(procs, "MySQL");
                    break;

                default:
                    throw new ProcessorFactoryNotFoundException($@"A migration generator for Data provider type {dataSettings.DataProvider} couldn't be found.");
                }
            }
        }
Example #10
0
        /// <summary>
        /// Register custom DataContext for a plugin
        /// </summary>
        /// <typeparam name="T">Class implementing IDbContext</typeparam>
        /// <param name="dependencyRegistrar">Dependency registrar</param>
        /// <param name="builder">Builder</param>
        /// <param name="contextName">Context name</param>
        public static void RegisterPluginDataContext <T>(this IDependencyRegistrar dependencyRegistrar,
                                                         ContainerBuilder builder, string contextName)
            where T : IDbContext
        {
            //data layer
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                //register named context
                builder.Register(c => (IDbContext)Activator.CreateInstance(typeof(T), new object[] { dataProviderSettings.DataConnectionString }))
                .Named <IDbContext>(contextName)
                .InstancePerLifetimeScope();

                builder.Register(c => (T)Activator.CreateInstance(typeof(T), new object[] { dataProviderSettings.DataConnectionString }))
                .InstancePerLifetimeScope();
            }
            else
            {
                //register named context
                builder.Register(c => (T)Activator.CreateInstance(typeof(T), new object[] { c.Resolve <DataSettings>().DataConnectionString }))
                .Named <IDbContext>(contextName)
                .InstancePerLifetimeScope();

                builder.Register(c => (T)Activator.CreateInstance(typeof(T), new object[] { c.Resolve <DataSettings>().DataConnectionString }))
                .InstancePerLifetimeScope();
            }
        }
Example #11
0
        public virtual void Register(ContainerBuilder builder, ITypeFinder typeFinder)
        {
            builder.RegisterType <ShippingByWeightService>().As <IShippingByWeightService>().InstancePerHttpRequest();

            //data layer
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                //register named context
                builder.Register <IDbContext>(c => new ShippingByWeightObjectContext(dataProviderSettings.DataConnectionString))
                .Named <IDbContext>("Nas_object_context_shipping_weight_zip")
                .InstancePerHttpRequest();

                builder.Register <ShippingByWeightObjectContext>(c => new ShippingByWeightObjectContext(dataProviderSettings.DataConnectionString))
                .InstancePerHttpRequest();
            }
            else
            {
                //register named context
                builder.Register <IDbContext>(c => new ShippingByWeightObjectContext(c.Resolve <DataSettings>().DataConnectionString))
                .Named <IDbContext>("Nas_object_context_shipping_weight_zip")
                .InstancePerHttpRequest();

                builder.Register <ShippingByWeightObjectContext>(c => new ShippingByWeightObjectContext(c.Resolve <DataSettings>().DataConnectionString))
                .InstancePerHttpRequest();
            }

            //override required repository with our custom context
            builder.RegisterType <EfRepository <ShippingByWeightRecord> >()
            .As <IRepository <ShippingByWeightRecord> >()
            .WithParameter(ResolvedParameter.ForNamed <IDbContext>("Nas_object_context_shipping_weight_zip"))
            .InstancePerHttpRequest();
        }
        /// <summary>
        /// Configure processor
        /// </summary>
        /// <param name="processors">Collection of migration processors</param>
        protected virtual void ConfigureProcessor(IList <IMigrationProcessor> processors)
        {
            var dataSettings = DataSettingsManager.LoadSettings();

            if (processors.Count == 0)
            {
                throw new ProcessorFactoryNotFoundException("No migration processor registered.");
            }

            if (dataSettings is null)
            {
                Processor = processors.FirstOrDefault();
            }
            else
            {
                Processor = dataSettings.DataProvider switch
                {
                    DataProviderType.SqlServer => FindGenerator(processors, "SqlServer"),
                    DataProviderType.MySql => FindGenerator(processors, "MySQL"),
                    DataProviderType.PostgreSQL => FindGenerator(processors, "Postgres"),
                    _ => throw new ProcessorFactoryNotFoundException(
                              $@"A migration generator for Data provider type {dataSettings.DataProvider} couldn't be found.")
                }
            };
        }
Example #13
0
        /// <summary>
        /// SQL Server specific extension method for Microsoft.EntityFrameworkCore.DbContextOptionsBuilder
        /// </summary>
        /// <param name="optionsBuilder">Database context options builder</param>
        /// <param name="services">Collection of service descriptors</param>
        public static void UseSqlServerWithLazyLoading(this DbContextOptionsBuilder optionsBuilder, IServiceCollection services)
        {
            var dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            var provider  = services.BuildServiceProvider();
            var nopConfig = provider.GetRequiredService <NopConfig>();

            var optionsBuilderHelpers = provider.GetServices <IDbContextOptionsBuilderHelper>();
            var optionsBuilderHelper  = optionsBuilderHelpers?.FirstOrDefault(h => h.DataProvider == dataSettings.DataProvider);

            if (optionsBuilderHelper != null)
            {
                optionsBuilderHelper.Configure(optionsBuilder, services, nopConfig, dataSettings);
                return;
            }

            var dbContextOptionsBuilder = optionsBuilder.UseLazyLoadingProxies();

            if (nopConfig.UseRowNumberForPaging)
            {
                dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString, option => option.UseRowNumberForPaging());
            }
            else
            {
                dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString);
            }
        }
        private void AddTokenGenerationPipeline(IServiceCollection services)
        {
            RsaSecurityKey signingKey = CryptoHelper.CreateRsaSecurityKey();

            DataSettings dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            string connectionStringFromNop = dataSettings.DataConnectionString;

            var migrationsAssembly = typeof(ApiStartup).GetTypeInfo().Assembly.GetName().Name;

            services.AddIdentityServer()
            .AddSigningCredential(signingKey)
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = builder =>
                                             builder.UseSqlServer(connectionStringFromNop,
                                                                  sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = builder =>
                                             builder.UseSqlServer(connectionStringFromNop,
                                                                  sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            .AddAuthorizeInteractionResponseGenerator <NopApiAuthorizeInteractionResponseGenerator>()
            .AddEndpoint <AuthorizeCallbackEndpoint>("Authorize", "/oauth/authorize/callback")
            .AddEndpoint <AuthorizeEndpoint>("Authorize", "/oauth/authorize")
            .AddEndpoint <TokenEndpoint>("Token", "/oauth/token");
        }
Example #15
0
        private string GetEmailFromPaymentInvoice(int PaymentId)
        {
            var datasettings = DataSettingsManager.LoadSettings();
            var connstring   = datasettings.ConnectionString;

            var            conn = new SqlConnection(connstring);
            SqlDataAdapter da   = new SqlDataAdapter();

            conn.Open();
            var cmd = new SqlCommand("SELECT Email FROM PaymentInvoice where id=" + PaymentId + "", conn);

            cmd.CommandType    = CommandType.Text;
            cmd.CommandTimeout = 0;

            da = new SqlDataAdapter(cmd);
            var dt = new DataTable();

            da.Fill(dt);
            try
            {
                return(dt.Rows[0]["Email"].ToString());
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
            finally
            {
                da.Dispose();
                conn.Close();
            }
        }
Example #16
0
        public DemoObjectContext()
        {
            DataSettingsManager manager     = new DataSettingsManager();
            DataSettings        dataSetting = manager.LoadSettings();

            base.Database.Connection.ConnectionString = dataSetting.DataConnectionString;
        }
Example #17
0
        public ActionResult GenerateSqlException()
        {
            var    dataSettings     = DataSettingsManager.LoadSettings();
            string connectionString = dataSettings.DataConnectionString;

            var telemetry = new TelemetryClient();

            string queryString = "EXECUTE NonExistantStoredProcedure";

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                try
                {
                    command.Connection.Open();
                    command.ExecuteNonQuery();
                }
                catch (SqlException ex)
                {
                    telemetry.TrackException(ex);
                    Console.WriteLine("You have entered the SQL neighbourhood boy! Watch out for dem craaazy Exceptions (つ◉益◉)つ");

                    return(new RedirectResult("~/Admin/MiscApplicationInsights/Configure"));
                }
            }
            return(new RedirectResult("~/Admin/MiscApplicationInsights/Configure"));
        }
Example #18
0
        private void UseAutofac()
        {
            var builder = new ContainerBuilder();

            builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
            builder.RegisterWebApiFilterProvider(config);

            // data
            var dataSettingsManager = new DataSettingsManager();

            builder.Register(x => dataSettingsManager.LoadSettings()).As <DataSettings>();
            builder.RegisterGeneric(typeof(MongoDbRepository <>)).As(typeof(IRepository <>));

            // caching
            builder.RegisterType <RedisCacheManager>().As <ICacheManager>().SingleInstance();
            // mq
            builder.RegisterType <MSMessageQueueManager>().As <IMessageQueueManager>().InstancePerLifetimeScope();

            // Services
            builder.RegisterType <FileLogger>().As <ILogger>().InstancePerLifetimeScope();
            builder.RegisterType <UserService>().As <IUserService>().InstancePerLifetimeScope();

            var container = builder.Build();

            config.DependencyResolver = new AutofacWebApiDependencyResolver(container);

            app.UseAutofacMiddleware(container);
            app.UseAutofacWebApi(config);
        }
        public static void UseSqlServerWithLazyLoading(this DbContextOptionsBuilder optionsBuilder,
                                                       IServiceCollection services)
        {
            var defaultConfig = services.BuildServiceProvider().GetRequiredService <DefaultConfig>();

            var dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            var dbContextOptionsBuilder = optionsBuilder.UseLazyLoadingProxies();

            if (defaultConfig.UseRowNumberForPaging)
            {
                dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString,
                                                     option => option.UseRowNumberForPaging());
            }
            else
            {
                dbContextOptionsBuilder.UseSqlServer(dataSettings.DataConnectionString);
            }

            //.UseSqlServer(dataSettings.DataConnectionString, builder => builder.MigrationsAssembly("StockManagementSystem"));
        }
        public virtual void RegisterNotification()
        {
            if (string.IsNullOrEmpty(connectionString))
            {
                connectionString = DataSettingsManager.LoadSettings().DataConnectionString;
            }

            using (var connection = new SqlConnection(connectionString))
            {
                connection.Open();

                if (connection.State == ConnectionState.Closed)
                {
                    connection.Open();
                }

                using (var command = new SqlCommand("SELECT Id FROM [dbo].[Notification]", connection))
                {
                    command.Notification = null;
                    if (dependency == null)
                    {
                        dependency           = new SqlDependency(command);
                        dependency.OnChange += new OnChangeEventHandler(Dependency_OnChange);
                    }
                    //do nothing
                    command.ExecuteReader();
                }
            }
        }
        public MobSocialObjectContext Create()
        {
            var          dataSettingsManager = new DataSettingsManager();
            DataSettings dataSettings        = dataSettingsManager.LoadSettings();

            return(new MobSocialObjectContext(dataSettings.DataConnectionString));
        }
        /// <summary>
        /// Token generator
        /// </summary>
        /// <param name="services"></param>
        public static void AddTokenGenerationPipeline(this IServiceCollection services)
        {
            var signingKey   = CryptoHelper.CreateRsaSecurityKey();
            var dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            var migrationsAssembly = typeof(ApiStartup).GetTypeInfo().Assembly.GetName().Name;

            services.AddIdentityServer(options => options.UserInteraction.LoginUrl = "/login")
            .AddSigningCredential(signingKey)
            .AddConfigurationStore(options =>
            {
                options.ConfigureDbContext = builder =>
                                             builder.UseSqlServer(dataSettings.DataConnectionString,
                                                                  sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            .AddOperationalStore(options =>
            {
                options.ConfigureDbContext = builder =>
                                             builder.UseSqlServer(dataSettings.DataConnectionString,
                                                                  sql => sql.MigrationsAssembly(migrationsAssembly));
            })
            .AddAuthorizeInteractionResponseGenerator <ApiAuthorizeInteractionResponseGenerator>();
        }
        public void Register(ContainerBuilder builder, Core.Infrastructure.ITypeFinder typeFinder)
        {
            //   builder.RegisterType<MyProductService>().As<IMyProductService>().InstancePerHttpRequest();

            //data layer
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            if (dataProviderSettings != null && dataProviderSettings.IsValid())
            {
                //register named context
                builder.Register <IDbContext>(c => new PluginObjectContext(dataProviderSettings.DataConnectionString))
                .Named <IDbContext>(ContextName)
                .InstancePerHttpRequest();

                builder.Register(
                    c => new PluginObjectContext(dataProviderSettings.DataConnectionString))
                .InstancePerHttpRequest();
            }
            else
            {
                //register named context
                builder.Register <IDbContext>(
                    c => new PluginObjectContext(c.Resolve <DataSettings>().DataConnectionString))
                .Named <IDbContext>(ContextName)
                .InstancePerHttpRequest();
                builder.Register(
                    c => new PluginObjectContext(c.Resolve <DataSettings>().DataConnectionString))
                .InstancePerHttpRequest();
            }
            builder.RegisterType <MyProductService>().As <IMyProductService>().InstancePerHttpRequest();
        }
Example #24
0
        private void UpdatePaymentInvoiceFail(int PaymentId)
        {
            var datasettings = DataSettingsManager.LoadSettings();
            var connstring   = datasettings.ConnectionString;

            var            conn = new SqlConnection(connstring);
            SqlDataAdapter da   = new SqlDataAdapter();

            try
            {
                conn.Open();
                var cmd = new SqlCommand("Update PaymentInvoice SET IsPostToSAP = 0 where Id = " + PaymentId + "", conn);
                cmd.CommandType    = CommandType.Text;
                cmd.CommandTimeout = 0;
                var retval = cmd.ExecuteNonQuery();
            }
            catch (Exception exc)
            {
                _logger.Error(exc.Message, exc);
            }
            finally
            {
                da.Dispose();
                conn.Close();
            }
        }
Example #25
0
        public KoreIdentityDbContext()
            : base()
        {
            var settings = DataSettingsManager.LoadSettings();

            this.Database.Connection.ConnectionString = settings.ConnectionString;
            this.Init();
        }
        /// <summary>
        /// 配置数据库初始化操作
        /// </summary>
        public virtual void SetDatabaseInitializer()
        {
            var dataSettingsManager  = new DataSettingsManager();
            var dataProviderSettings = dataSettingsManager.LoadSettings();

            //依据model更新数据库
            Database.SetInitializer(new EfInitializer <EfDbContext, EfConfiguration>(dataProviderSettings.DataConnectionString));
        }
        /// <summary>
        /// Creates a connection to a database
        /// </summary>
        /// <param name="connectionString">Connection string</param>
        /// <returns>Connection to a database</returns>
        public virtual IDbConnection CreateDbConnection(string connectionString = null)
        {
            _connection ??= new SqliteConnection(string.IsNullOrEmpty(connectionString)
                ? DataSettingsManager.LoadSettings().ConnectionString
                : connectionString);

            return(_connection);
        }
        public static void ConfigureJambopayServices(this IServiceCollection services, IWebHostEnvironment webHostEnvironment, IConfiguration configuration)
        {
            #region Authentication

            services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
            .AddJwtBearer(options =>
            {
                options.TokenValidationParameters = new TokenValidationParameters
                {
                    ValidateIssuer           = true,
                    ValidateAudience         = true,
                    ValidateLifetime         = true,
                    ValidateIssuerSigningKey = true,
                    ValidIssuer      = configuration["Jwt:Issuer"],
                    ValidAudience    = configuration["Jwt:Issuer"],
                    IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["Jwt:Key"]))
                };
            });

            #endregion

            #region Repository

            services.AddScoped(typeof(IRepository <>), typeof(EfRepository <>));

            #endregion

            #region File Provider

            CommonHelper.DefaultFileProvider = new JambopayFileProvider(webHostEnvironment);

            #endregion

            #region Data Provider

            var dataSettings = DataSettingsManager.LoadSettings();
            services.AddDbContext <IJambopayDataProvider, JambopayDataProvider>(options => options.UseSqlServer(dataSettings.ConnectionString));

            #endregion

            #region Services

            services.AddTransient <ICustomerService, CustomerService>();
            services.AddTransient <ICommissionWithdrawalService, CommissionWithdrawalService>();
            services.AddTransient <IServiceService, ServiceService>();
            services.AddTransient <IServiceTransactionService, ServiceTransactionService>();

            #endregion

            #region Factories

            services.AddTransient <IJsonWebTokenService, JsonWebTokenService>();

            services.AddTransient <INetworkMarketingFactory, NetworkMarketingFactory>();

            #endregion
        }
Example #29
0
        public void Configure(IApplicationBuilder app)
        {
            // During a clean install we should not register any middlewares i.e IdentityServer as it won't be able to create its
            // tables without a connection string and will throw an exception
            var dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            // The default route templates for the Swagger docs and swagger - ui are "swagger/docs/{apiVersion}" and "swagger/ui/index#/{assetPath}" respectively.
            //app.UseSwagger();
            //app.UseSwaggerUI(options =>
            //    {
            //        //var currentAssembly = Assembly.GetAssembly(this.GetType());
            //        //var currentAssemblyName = currentAssembly.GetName().Name;

            //        //Needeed for removing the "Try It Out" button from the post and put methods.
            //        //http://stackoverflow.com/questions/36772032/swagger-5-2-3-supportedsubmitmethods-removed/36780806#36780806

            //        //options.InjectOnCompleteJavaScript($"{currentAssemblyName}.Scripts.swaggerPostPutTryItOutButtonsRemoval.js");

            //        options.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            //    }
            //);

            //TODO: IDP
            // This needs to be called here because in the plugin install method identity server is not yet registered.
            //ApplyIdentityServerMigrations(app);
            //TODO: IDP
            //SeedData(app);


            var rewriteOptions = new RewriteOptions()
                                 .AddRewrite("oauth/(.*)", "connect/$1", true)
                                 .AddRewrite("api/token", "connect/token", true);

            app.UseRewriter(rewriteOptions);

            app.UseMiddleware <IdentityServerScopeParameterMiddleware>();

            ////uncomment only if the client is an angular application that directly calls the oauth endpoint
            //// app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
            UseIdentityServer(app);

            //need to enable rewind so we can read the request body multiple times (this should eventually be refactored, but both JsonModelBinder and all of the DTO validators need to read this stream)
            app.Use(async(context, next) =>
            {
                context.Request.EnableBuffering();
                await next();
            });

            app.UseStaticFiles();
            app.UseMvc();
        }
Example #30
0
        private void AddTokenGenerationPipeline(IServiceCollection services)
        {
            RsaSecurityKey signingKey = CryptoHelper.CreateRsaSecurityKey();

            DataSettings dataSettings = DataSettingsManager.LoadSettings();

            if (!dataSettings?.IsValid ?? true)
            {
                return;
            }

            string connectionStringFromNop = dataSettings.DataConnectionString;

            var migrationsAssembly = typeof(ApiStartup).GetTypeInfo().Assembly.GetName().Name;

            services.AddIdentityServer()
            .AddSigningCredential(signingKey)
            .AddInMemoryClients(ConfigureIdentityServer.GetClients())
            .AddInMemoryIdentityResources(ConfigureIdentityServer.GetIdentityResources())
            .AddProfileService <UserProfileService>()
            //.AddConfigurationStore(options =>
            //{
            //    options.ConfigureDbContext = builder =>
            //        builder.UseSqlServer(connectionStringFromNop,
            //            sql => sql.MigrationsAssembly(migrationsAssembly));
            //})
            //.AddOperationalStore(options =>
            //{
            //    options.ConfigureDbContext = builder =>
            //        builder.UseSqlServer(connectionStringFromNop,
            //            sql => sql.MigrationsAssembly(migrationsAssembly));
            //})
            .AddAuthorizeInteractionResponseGenerator <NopApiAuthorizeInteractionResponseGenerator>()
            .AddEndpoint <AuthorizeCallbackEndpoint>("Authorize", "/oauth/authorize/callback")
            .AddEndpoint <AuthorizeEndpoint>("Authorize", "/oauth/authorize")
            .AddEndpoint <TokenEndpoint>("Token", "/oauth/token");

            services.AddSingleton <ICustomerService, CustomerService>();
            services.AddSingleton <ICustomerRegistrationService, CustomerRegistrationService>();

            services.AddTransient <IPersistedGrantStore, PersistedGrantStore>();

            services.AddAuthentication()
            .AddGoogle("Google", options =>
            {
                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                options.ClientId     = "434483408261-55tc8n0cs4ff1fe21ea8df2o443v2iuc.apps.googleusercontent.com";
                options.ClientSecret = "3gcoTrEDPPJ0ukn_aYYT6PWo";
            })
            .AddFacebook("Facebook", options =>
            {
                options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
                options.ClientId     = "";
                options.ClientSecret = "";
            });
        }
 /// <summary>
 /// Kiểm tra xem database đã được khởi tạo chưa bằng cách đọc vào file setting.txt. Quá trình đọc này chỉ được thực hiện duy nhất 1 lần
 /// bởi kết quả sẽ được cache vào 1 biến static
 /// </summary>
 /// <returns></returns>
 public static bool DatabaseIsInstalled()
 {
     if (!_databaseIsInstalled.HasValue) //// khác chỗ này ( thiết lập lock để ngăn truy cập đồng thời ? )
     {
         lock(_lockObj)
         {
             if (_databaseIsInstalled == null)
             {
                 var manager = new DataSettingsManager();
                 var setting = manager.LoadSettings();
                 _databaseIsInstalled = setting != null && setting.IsValid(); //// khác ở đây
             }
         }
     }
     return _databaseIsInstalled.Value;
 }