protected void ThrowOnWrongEvent(IOrderEvent e) { var id = new System.Text.StringBuilder(); id.Append("[").Append("Order|"); var stateEntityId = this.OrderId; // Aggregate Id var eventEntityId = e.OrderEventId.OrderId; if (stateEntityId != eventEntityId) { throw DomainError.Named("mutateWrongEntity", "Entity Id {0} in state but entity id {1} in event", stateEntityId, eventEntityId); } id.Append(stateEntityId).Append(","); id.Append("]"); var stateVersion = this.Version; var eventVersion = e.OrderEventId.Version; if (stateVersion != eventVersion) { throw OptimisticConcurrencyException.Create(stateVersion, eventVersion, id.ToString()); } }
// Object state management private void AddEvent(IOrderEvent e, bool isNew) { _orderEvents.Add(e); if (isNew) { _newOrderEvents.Add(e); } }
public static void ThrowOnInconsistentEventIds(IOrderEvent oe, IOrderShipGroupEvent e) { if (!oe.OrderEventId.OrderId.Equals(e.OrderShipGroupEventId.OrderId)) { throw DomainError.Named("inconsistentEventIds", "Outer Id OrderId {0} but inner id OrderId {1}", oe.OrderEventId.OrderId, e.OrderShipGroupEventId.OrderId); } }
private static EventStoreItem ToEventStoreItem(IOrderEvent e, DateTimeOffset timestamp) { var serializedEvent = JsonConvert.SerializeObject(e); var eventType = OrderEvents.MessageTypeLookup[e.GetType()]; return(new EventStoreItem() { Id = e.OrderNumber, MessageType = eventType, SerializedMessage = serializedEvent, Version = e.Version, Timestamp = timestamp }); }
public void AddOrderEvent(IOrderEvent e) { _innerStateEvents.Add((OrderStateCreatedOrMergePatchedOrDeletedDto)e); }
public virtual OrderStateCreatedOrMergePatchedOrDeletedDto ToOrderStateEventDto(IOrderEvent stateEvent) { if (stateEvent.EventType == StateEventType.Created) { var e = (IOrderStateCreated)stateEvent; return(ToOrderStateCreatedDto(e)); } else if (stateEvent.EventType == StateEventType.MergePatched) { var e = (IOrderStateMergePatched)stateEvent; return(ToOrderStateMergePatchedDto(e)); } throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType)); }