Beispiel #1
0
        public IList <EventHistoryItem> Handle(GetInvoiceHistory message)
        {
            const string eventsQuery =
                @"  SELECT e.Id, e.CorrelationId, e.EventDate, e.EventType, e.IsDispatched, e.Json, e.StreamId
                    FROM EventStore.Event e
                    LEFT JOIN EventStore.EventMetadata emd ON e.Id = emd.EventId
                    WHERE e.CorrelationId = @InvoiceId
                        OR (emd.Name = 'InvoiceId' AND emd.Value = @InvoiceId)
                    ORDER BY e.EventDate;";

            var events = _UnitOfWork.Query <Domain.Entities.EventStore.Event>(eventsQuery, message).ToList();

            var visitable = _EventHydrator.Hydrate(events)
                            .Select(evt => evt as IVisitable <IInvoiceEventVisitor, EventHistoryItem>)
                            .Where(evt => evt != null)
                            .ToList();

            return(_InvoiceVisitor.Visit(visitable));
        }
Beispiel #2
0
 public EventHistoryItem Accept(IInvoiceEventVisitor visitor)
 {
     return(visitor.Visit(this));
 }