public async Task <bool> Handle(T @event)
        {
            try
            {
                using (var scope = PhrasesCompositionRoot.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 [Phrase].[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}");
            }
        }
Example #2
0
        private void InitializeDbContext()
        {
            var context = PhrasesCompositionRoot.BeginLifetimeScope().Resolve <PhraseContext>();

            context.Database.Migrate();
            PhraseContextInitalizer.Initialize(context);
        }
Example #3
0
 internal static async Task Execute(ICommand command)
 {
     using (var scope = PhrasesCompositionRoot.BeginLifetimeScope())
     {
         var mediator = scope.Resolve <IMediator>();
         await mediator.Send(command);
     }
 }
Example #4
0
 internal static async Task <TResult> Execute <TResult>(ICommand <TResult> command)
 {
     using (var scope = PhrasesCompositionRoot.BeginLifetimeScope())
     {
         var mediator = scope.Resolve <IMediator>();
         return(await mediator.Send(command));
     }
 }
        public async Task <TResult> ExecuteQueryAsync <TResult>(IQuery <TResult> query)
        {
            using (var scope = PhrasesCompositionRoot.BeginLifetimeScope())
            {
                var mediator = scope.Resolve <IMediator>();

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

            SubscribeToIntegrationEvent <NewUserRegisteredIntegrationEvent>(eventBus, logger);
        }