public async Task Handle(T @event)
        {
            using (var scope = UserAccessCompositionRoot.BeginLifetimeScope())
            {
                using (var connection = scope.Resolve <ISqlConnectionFactory>().GetOpenConnection())
                {
                    string type = @event.GetType().FullName;
                    var    data = JsonConvert.SerializeObject(@event, new JsonSerializerSettings
                    {
                        ContractResolver = new AllPropertiesContractResolver()
                    });

                    var sql = "INSERT INTO [users].[InboxMessages] (Id, OccurredOn, Type, Data) " +
                              "VALUES (@Id, @OccurredOn, @Type, @Data)";

                    await connection.ExecuteScalarAsync(sql, new
                    {
                        @event.Id,
                        @event.OccurredOn,
                        type,
                        data
                    });
                }
            }
        }
Example #2
0
        private void InitializeDbContext()
        {
            var context = UserAccessCompositionRoot.BeginLifetimeScope().Resolve <UserAccessContext>();

            context.Database.Migrate();
            UserAccessContextInitializer.Initialize(context);
        }
        public async Task <bool> Handle(T @event)
        {
            try
            {
                using (var scope = UserAccessCompositionRoot.BeginLifetimeScope())
                {
                    using (var connection = scope.Resolve <ISqlConnectionFactory>().GetOpenConnection())
                    {
                        var type = @event.GetType().FullName;
                        var data = JsonConvert.SerializeObject(@event, new JsonSerializerSettings
                        {
                            ContractResolver = new AllPropertiesContractResolver()
                        });

                        var sql = "INSERT INTO [Users].[InboxMessages] (Id, OccurredOn, Type, Data) " +
                                  "VALUES (@Id, @OccurredOn, @Type, @Data)";

                        await connection.ExecuteScalarAsync(sql, new
                        {
                            @event.Id,
                            @event.OccurredOn,
                            type,
                            data
                        });

                        return(true);
                    }
                }
            }
            catch (Exception e)
            {
                throw new ApplicationException($"Unable to process message {@event}. Exception : {e.Message}");
            }
        }
        private static void SubscribeToIntegrationEvents(ILogger logger)
        {
            var eventBus = UserAccessCompositionRoot.BeginLifetimeScope().Resolve <IEventsBus>();

            SubscribeToIntegrationEvent <NewUserRegisteredIntegrationEvent>(eventBus, logger);
            SubscribeToIntegrationEvent <MemberGeneralAttributesEditedIntegrationEvent>(eventBus, logger);
        }
 internal static async Task ExecuteAsync(ICommand command)
 {
     using (var scope = UserAccessCompositionRoot.BeginLifetimeScope())
     {
         var mediator = scope.Resolve <IMediator>();
         await mediator.Send(command);
     }
 }
 internal static async Task <TResult> ExecuteAsync <TResult>(ICommand <TResult> command)
 {
     using (var scope = UserAccessCompositionRoot.BeginLifetimeScope())
     {
         var mediator = scope.Resolve <IMediator>();
         return(await mediator.Send(command));
     }
 }
Example #7
0
        public async Task <TResult> ExecuteQueryAsync <TResult>(IQuery <TResult> query)
        {
            using (var scope = UserAccessCompositionRoot.BeginLifetimeScope())
            {
                var mediator = scope.Resolve <IMediator>();

                return(await mediator.Send(query));
            }
        }
        private static void SubscribeToIntegrationEvents(ILogger logger)
        {
            var eventBus = UserAccessCompositionRoot.BeginLifetimeScope().Resolve <IEventsBus>();

            SubscribeToIntegrationEvent <MemberCreatedIntegrationEvent>(eventBus, logger);
        }