コード例 #1
0
        /// <summary>
        /// Compiles the domain event properties onto a dictionary
        /// </summary>
        /// <param name="event">The domain event</param>
        /// <returns>The event details as a dictionary</returns>
        private Dictionary <string, string> CompileEventProperties
        (
            IDomainEvent @event
        )
        {
            Validate.IsNotNull(@event);

            var properties = new Dictionary <string, string>()
            {
                { "EventTypeName", @event.GetType().Name },
                { "EventDescription", @event.ToString() }
            };

            var eventLog = DomainEventLog.CreateLog
                           (
                @event
                           );

            foreach (var detail in eventLog.Details)
            {
                AppendDetail
                (
                    ref properties,
                    detail
                );
            }

            return(properties);
        }
コード例 #2
0
        public async Task <Result> LogEventAsync(string aggregateKey, Type aggregateType, IDomainEvent @event, CancellationToken cancellationToken = default)
        {
            var log       = DomainEventLog.CreateLog(aggregateKey, aggregateType, @event);
            var addResult = await _logRepository.AddLogAsync(log).ConfigureAwait(false);

            return(await addResult.Tap(async() => await _dbContext.SaveChangesAsync()));
        }
コード例 #3
0
        /// <summary>
        /// Logs the domain event specified
        /// </summary>
        /// <param name="event">The domain event</param>
        public void LogEvent
        (
            IDomainEvent @event
        )
        {
            Validate.IsNotNull(@event);

            var log = DomainEventLog.CreateLog
                      (
                @event
                      );

            _logRepository.AddLog(log);
            _dbContext.SaveChanges();
        }
コード例 #4
0
        /// <summary>
        /// Logs the domain event specified
        /// </summary>
        /// <param name="aggregateKey">The aggregate key</param>
        /// <param name="aggregateType">The aggregate type</param>
        /// <param name="event">The domain event</param>
        public void LogEvent
        (
            string aggregateKey,
            Type aggregateType,
            IDomainEvent @event
        )
        {
            Validate.IsNotEmpty(aggregateKey);
            Validate.IsNotNull(aggregateType);
            Validate.IsNotNull(@event);

            var log = DomainEventLog.CreateLog
                      (
                aggregateKey,
                aggregateType,
                @event
                      );

            _logRepository.AddLog(log);
            _dbContext.SaveChanges();
        }
コード例 #5
0
        public Result LogEvent(string aggregateKey, Type aggregateType, IDomainEvent @event)
        {
            var log = DomainEventLog.CreateLog(aggregateKey, aggregateType, @event);

            return(_logRepository.AddLog(log).Tap(() => _dbContext.SaveChanges()));
        }
コード例 #6
0
        public Result LogEvent(IDomainEvent @event)
        {
            var log = DomainEventLog.CreateLog(@event);

            return(_logRepository.AddLog(log).Tap(() => _dbContext.SaveChanges()));
        }