Ejemplo n.º 1
0
        public async Task Send <TCommand, TEvent>(ICommandWrapper <TCommand> parentCommand,
                                                  IReadOnlyCollection <TEvent> events) where TCommand : ICommand where TEvent : IEvent
        {
            var wrappedEvents = events
                                .Select(e => e.Wrap(parentCommand))
                                .ToArray();
            await _eventStore.Save(wrappedEvents);

            if (parentCommand.IsLinkToJob)
            {
                await _jobHandler.Associate(parentCommand, wrappedEvents);
            }
            foreach (var wrappedEvent in wrappedEvents)
            {
                await _eventQueue.Send(wrappedEvent);
            }
        }