Example #1
0
 public EkklesiaAppHost(AutofacIocAdapter autofacIocAdapter, IHostingEnvironment hostingEnvironment, IConfiguration configuration, ServerEventsFeature serverEventsFeature) : base("SoundWords", typeof(EkklesiaAppHost).Assembly)
 {
     _autofacIocAdapter   = autofacIocAdapter;
     _hostingEnvironment  = hostingEnvironment;
     _configuration       = configuration;
     _serverEventsFeature = serverEventsFeature;
 }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        /// <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);
        }