コード例 #1
0
ファイル: InventoryItemState.cs プロジェクト: uwitec/wms-8
        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());
            }
        }
コード例 #2
0
 public InventoryItemEvent(IInventoryItemEvent inventoryItemEvent)
 {
     AggregateId = inventoryItemEvent.AggregateId;
     Timestamp   = inventoryItemEvent.Timestamp;
     EventName   = inventoryItemEvent.EventName;
     EventData   = inventoryItemEvent.EventData;
 }
コード例 #3
0
 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);
     }
 }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
 public void AddInventoryItemEvent(IInventoryItemEvent e)
 {
     _innerStateEvents.Add((InventoryItemStateCreatedOrMergePatchedOrDeletedDto)e);
 }
コード例 #6
0
 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));
 }