protected void ThrowOnWrongEvent(IInventoryItemEvent e) { var id = new System.Text.StringBuilder(); id.Append("[").Append("InventoryItem|"); var stateEntityId = this.InventoryItemId; // Aggregate Id var eventEntityId = e.InventoryItemEventId.InventoryItemId; 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.InventoryItemEventId.Version; if (stateVersion != eventVersion) { throw OptimisticConcurrencyException.Create(stateVersion, eventVersion, id.ToString()); } }
public InventoryItemEvent(IInventoryItemEvent inventoryItemEvent) { AggregateId = inventoryItemEvent.AggregateId; Timestamp = inventoryItemEvent.Timestamp; EventName = inventoryItemEvent.EventName; EventData = inventoryItemEvent.EventData; }
public static void ThrowOnInconsistentEventIds(IInventoryItemEvent oe, IInventoryItemEntryEvent e) { if (!oe.InventoryItemEventId.InventoryItemId.Equals(e.InventoryItemEntryEventId.InventoryItemId)) { throw DomainError.Named("inconsistentEventIds", "Outer Id InventoryItemId {0} but inner id InventoryItemId {1}", oe.InventoryItemEventId.InventoryItemId, e.InventoryItemEntryEventId.InventoryItemId); } }
public void EventAppended(AggregateEvent <IInventoryItemAggregate, IInventoryItemState> e) { if (!(e.Event != null && e.Event is IInventoryItemEvent)) { return; } IInventoryItemEvent inventoryItemEvent = (IInventoryItemEvent)e.Event; IEnumerable <IInventoryItemEntryStateCreated> itemEntriesCreated = null; if (inventoryItemEvent is IInventoryItemStateCreated) { itemEntriesCreated = ((IInventoryItemStateCreated)inventoryItemEvent).InventoryItemEntryEvents; } else if (inventoryItemEvent is IInventoryItemStateMergePatched) { itemEntriesCreated = ((IInventoryItemStateMergePatched)inventoryItemEvent).InventoryItemEntryEvents .Where(ie => ie is IInventoryItemEntryStateCreated).Cast <IInventoryItemEntryStateCreated>(); } if (itemEntriesCreated == null) { return; } foreach (var iie in itemEntriesCreated) { foreach (var pr in GetPostingRules(iie.InventoryItemEntryEventId.InventoryItemId)) { var outputQuantity = GetOutputQuantity(pr, iie); if (outputQuantity.Equals(0)) { continue; } var tid = GetOrCreateInventoryPRTriggered(pr, iie); var outputItemId = GetOutputInventoryItemId(pr, iie.InventoryItemEntryEventId.InventoryItemId); //_log.Debug(outputItemId.ProductId + ", " + outputItemId.LocatorId + ", " + outputItemId.AttributeSetInstanceId); CreateOrUpdateOutputAccount(pr.OutputAccountName, outputQuantity, tid, outputItemId); } } }
public void AddInventoryItemEvent(IInventoryItemEvent e) { _innerStateEvents.Add((InventoryItemStateCreatedOrMergePatchedOrDeletedDto)e); }
public virtual InventoryItemStateCreatedOrMergePatchedOrDeletedDto ToInventoryItemStateEventDto(IInventoryItemEvent stateEvent) { if (stateEvent.EventType == StateEventType.Created) { var e = (IInventoryItemStateCreated)stateEvent; return(ToInventoryItemStateCreatedDto(e)); } else if (stateEvent.EventType == StateEventType.MergePatched) { var e = (IInventoryItemStateMergePatched)stateEvent; return(ToInventoryItemStateMergePatchedDto(e)); } throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType)); }