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)); }
public EventHistoryItem Accept(IInvoiceEventVisitor visitor) { return(visitor.Visit(this)); }