public EkklesiaAppHost(AutofacIocAdapter autofacIocAdapter, IHostingEnvironment hostingEnvironment, IConfiguration configuration, ServerEventsFeature serverEventsFeature) : base("SoundWords", typeof(EkklesiaAppHost).Assembly) { _autofacIocAdapter = autofacIocAdapter; _hostingEnvironment = hostingEnvironment; _configuration = configuration; _serverEventsFeature = serverEventsFeature; }
protected override void Load(ContainerBuilder builder) { builder.RegisterAssemblyTypes(typeof(EkklesiaModule).Assembly) .Except <EkklesiaConfiguration>(register => register .As <IEkklesiaConfiguration>() .As <IAppSettings>() .SingleInstance()) .Except <EkklesiaAppHost>(register => register.As <AppHostBase>().SingleInstance()) .Except <BackgroundPool>(register => register.As <IBackgroundPool>().SingleInstance()) .AsDefaultInterface() .AsSelf(); builder.RegisterType <FileSystem>().As <IFileSystem>(); builder.RegisterType <MemoryCacheClient>().As <ICacheClient>().SingleInstance(); builder.Register(context => { OrmLiteConnectionFactory connectionFactory = new OrmLiteConnectionFactory( _configuration.GetConnectionString("DefaultConnection"), SqliteDialect.Provider); return(connectionFactory); }) .As <IDbConnectionFactory>() .SingleInstance(); builder.RegisterLogger(); builder.Register(c => _configuration).As <IConfiguration>(); builder.Register(c => new ServerEventsFeature()) .AsSelf() .SingleInstance(); builder.Register(c => { ServerEventsFeature serverEventsFeature = c.Resolve <ServerEventsFeature>(); return(new MemoryServerEvents { IdleTimeout = serverEventsFeature.IdleTimeout, HouseKeepingInterval = serverEventsFeature.HouseKeepingInterval, OnSubscribe = serverEventsFeature.OnSubscribe, OnUnsubscribe = serverEventsFeature.OnUnsubscribe, NotifyChannelOfSubscriptions = serverEventsFeature.NotifyChannelOfSubscriptions, OnError = serverEventsFeature.OnError }); }).As <IServerEvents>() .SingleInstance(); }
protected override void Load(ContainerBuilder builder) { builder.RegisterAssemblyTypes(typeof(SoundWordsModule).Assembly) .Except <SoundWordsConfiguration>(register => register .As <ISoundWordsConfiguration>() .As <IAppSettings>() .SingleInstance()) .Except <SoundWordsAppHost>(register => register.As <AppHostBase>().SingleInstance()) .Except <BackgroundPool>(register => register.As <IBackgroundPool>().SingleInstance()) .AsDefaultInterface() .AsSelf(); builder.RegisterAssemblyTypes(typeof(SoundWordsModule).Assembly) .AsSelf(); builder.RegisterType <FileSystem>().As <IFileSystem>(); builder.RegisterType <MemoryCacheClient>().As <ICacheClient>().SingleInstance(); //override the default registration validation with your own custom implementation builder.RegisterType <CustomRegistrationValidator>().As <IValidator <Register> >(); builder.Register(context => { IOrmLiteDialectProvider dialectProvider = GetDialectProvider(_configuration["DB_TYPE"]); string defaultConnectionString = _configuration["CONNECTION_STRING"]; OrmLiteConnectionFactory connectionFactory = new OrmLiteConnectionFactory( defaultConnectionString, dialectProvider); connectionFactory.RegisterConnection( "Users", _configuration["CONNECTION_STRING_USERS"] ?? defaultConnectionString, dialectProvider); return(connectionFactory); }) .As <IDbConnectionFactory>() .SingleInstance(); builder.Register(c => new CustomOrmLiteAuthRepository(c.Resolve <IDbConnectionFactory>(), "Users")) .As <IUserAuthRepository>() .As <IAuthRepository>() .AsSelf() .SingleInstance(); builder.Register(c => LogManager.LogFactory).As <ILogFactory>(); builder.Register(c => _configuration).As <IConfiguration>(); builder.Register(c => new ServerEventsFeature()) .AsSelf() .SingleInstance(); builder.Register(c => { ServerEventsFeature serverEventsFeature = c.Resolve <ServerEventsFeature>(); return(new MemoryServerEvents { IdleTimeout = serverEventsFeature.IdleTimeout, HouseKeepingInterval = serverEventsFeature.HouseKeepingInterval, OnSubscribe = serverEventsFeature.OnSubscribe, OnUnsubscribe = serverEventsFeature.OnUnsubscribe, NotifyChannelOfSubscriptions = serverEventsFeature.NotifyChannelOfSubscriptions, OnError = serverEventsFeature.OnError }); }).As <IServerEvents>() .SingleInstance(); }
/// <summary> /// Configure the given container with the /// registrations provided by the funqlet. /// </summary> /// <param name="container">Container to register.</param> public override void Configure(Funq.Container container) { ServiceStack.OrmLite.OrmLiteConfig.CommandTimeout = 60; WebEas.Log.WebEasNLogLogger.Application = "PFE"; base.Configure(container); // new EnumSerializerConfigurator().WithAssemblies(new List<Assembly> { typeof(HierarchyNode).Assembly }).WithNullableEnumSerializers().Configure(); this.SetConfig(new HostConfig { WsdlServiceNamespace = "http://schemas.dcom.sk/private/Egov/pfe/1.0", SoapServiceName = "EsamPfe", #if DEBUG || DEVELOP || INT || ITP DebugMode = true, EnableFeatures = Feature.All.Remove(this.disableFeaturesDebug), #else DebugMode = false, EnableFeatures = Feature.All.Remove(this.disableFeatures), #endif DefaultContentType = MimeTypes.Json, AllowJsonpRequests = true, #if DEVELOPCRM WebHostUrl = "https://esam-crm.datalan.sk/esam/api/pfe" #endif }); #if !DEBUG container.Register <IMessageService>(c => new RedisMqServer(c.Resolve <IRedisClientsManager>())); container.Resolve <IMessageService>().RegisterHandler <WebEas.ServiceModel.Dto.LongOperationStatus>(m => { using (var redisClient = base.Resolve <IRedisClientsManager>().GetClient()) { var longOperationStatus = m.GetBody(); ProcessLongOperationStatus(longOperationStatus, redisClient, base.Resolve <IServerEvents>()); } return(null); }); container.Resolve <IMessageService>().Start(); #endif container.RegisterAutoWiredAs <CfeRepository, IRepositoryBase>("cfe").ReusedWithin(ReuseScope.Request); container.RegisterAutoWiredAs <BdsRepository, IRepositoryBase>("bds").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<DapRepository, IRepositoryBase>("dap").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<DmsRepository, IRepositoryBase>("dms").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<FinRepository, IRepositoryBase>("fin").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<OsaRepository, IRepositoryBase>("osa").ReusedWithin(ReuseScope.Request); container.RegisterAutoWiredAs <RegRepository, IRepositoryBase>("reg").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<RzpRepository, IRepositoryBase>("rzp").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<UctRepository, IRepositoryBase>("uct").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<VykRepository, IRepositoryBase>("vyk").ReusedWithin(ReuseScope.Request); //container.RegisterAutoWiredAs<MajRepository, IRepositoryBase>("maj").ReusedWithin(ReuseScope.Request); container.AddScoped <IPfeRepository, PfeRepository>(); var mse = new ServerEventsFeature() { LimitToAuthenticatedUsers = true, NotifyChannelOfSubscriptions = false, OnCreated = (sub, req) => { var session = req.SessionAs <EsamSession>(); if (!session.IsAuthenticated) { return; } if (session.Roles != null) { var key = "SynchronizaciaDAPToast:" + session.TenantId + ":" + session.UserId; var showed = GetCacheClient().Get <bool>(key); if (!showed) { if (session.Roles.Any(x => x.StartsWith("DAP") || x.StartsWith("FIN") || x.StartsWith("UCT"))) { var repository = HostContext.Resolve <IPfeRepository>(); repository.Session = session; var eSAMRezim = repository.GetNastavenieI("cfe", "eSAMRezim"); var isoZdroj = repository.GetNastavenieI("cfe", "ISOZdroj"); if (repository.GetNastavenieB("cfe", "PohladavkyDAP") && (eSAMRezim == 1 || isoZdroj > 0)) { var datumSynchro = repository.GetNastavenieT("dap", "SynchronizaciaDAP"); if (datumSynchro.HasValue) { sub.ConnectArgs["SynchronizaciaDAP"] = datumSynchro.Value.ToString("o"); } GetCacheClient().Set(key, true, DateTime.Today.AddDays(1)); } } } } }, /* * TODO: Synchronizacia s ISO * OnSubscribe = (sub) => * { * if (sub.UserId == "00000000-0000-0000-0000-000000000002") * { * var subSessionKey = SessionFeature.GetSessionKey(sub.SessionId); * var subSession = HostContext.Cache.Get<EsamSession>(subSessionKey); * var syncManager = new IsoSynchronizationManager(Resolve<IServerEvents>(), Resolve<IRedisClientsManager>()); * syncManager.ProcessQueue(subSession.TenantId); * } * }*/ }; Plugins.Add(mse); }