protected void ThrowOnWrongEvent(IInventoryItemRequirementEntryEvent e)
        {
            var id = new System.Text.StringBuilder();

            id.Append("[").Append("InventoryItemRequirementEntry|");

            var stateEntityIdInventoryItemRequirementId = (this as IGlobalIdentity <InventoryItemRequirementEntryId>).GlobalId.InventoryItemRequirementId;
            var eventEntityIdInventoryItemRequirementId = e.InventoryItemRequirementEntryEventId.InventoryItemRequirementId;

            if (stateEntityIdInventoryItemRequirementId != eventEntityIdInventoryItemRequirementId)
            {
                throw DomainError.Named("mutateWrongEntity", "Entity Id InventoryItemRequirementId {0} in state but entity id InventoryItemRequirementId {1} in event", stateEntityIdInventoryItemRequirementId, eventEntityIdInventoryItemRequirementId);
            }
            id.Append(stateEntityIdInventoryItemRequirementId).Append(",");

            var stateEntityIdEntrySeqId = (this as IGlobalIdentity <InventoryItemRequirementEntryId>).GlobalId.EntrySeqId;
            var eventEntityIdEntrySeqId = e.InventoryItemRequirementEntryEventId.EntrySeqId;

            if (stateEntityIdEntrySeqId != eventEntityIdEntrySeqId)
            {
                throw DomainError.Named("mutateWrongEntity", "Entity Id EntrySeqId {0} in state but entity id EntrySeqId {1} in event", stateEntityIdEntrySeqId, eventEntityIdEntrySeqId);
            }
            id.Append(stateEntityIdEntrySeqId).Append(",");

            id.Append("]");

            if (ForReapplying)
            {
                return;
            }
            var stateVersion = this.Version;
            var stateEvent   = e is IInventoryItemRequirementEntryStateEvent ? (IInventoryItemRequirementEntryStateEvent)e : null;

            if (e == null)
            {
                return;
            }
            stateEvent.Version = stateVersion;
            //var stateEventStateVersion = stateEvent.Version;
            //if (InventoryItemRequirementEntryState.VersionZero == stateEventStateVersion)
            //{
            //    stateEventStateVersion = stateEvent.Version = stateVersion;
            //}
            //if (stateVersion != stateEventStateVersion)
            //{
            //    throw OptimisticConcurrencyException.Create(stateVersion, stateEventStateVersion, id.ToString());
            //}
        }
Example #2
0
        protected virtual IInventoryItemRequirementStateMergePatched Map(IMergePatchInventoryItemRequirement c)
        {
            var stateEventId = new InventoryItemRequirementEventId(c.InventoryItemRequirementId, c.Version);
            IInventoryItemRequirementStateMergePatched e = NewInventoryItemRequirementStateMergePatched(stateEventId);


            e.CommandId = c.CommandId;


            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = ApplicationContext.Current.TimestampService.Now <DateTime>();

            var version = c.Version;

            decimal quantity = _state.Quantity;

            foreach (IInventoryItemRequirementEntryCommand innerCommand in c.InventoryItemRequirementEntryCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IInventoryItemRequirementEntryEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddInventoryItemRequirementEntryEvent(innerEvent);
                // ////////////////
                if (!(innerEvent is IInventoryItemRequirementEntryStateCreated))
                {
                    continue;
                }
                var entryCreated = (IInventoryItemRequirementEntryStateCreated)innerEvent;
                quantity = quantity + (entryCreated.Quantity != null ? entryCreated.Quantity.GetValueOrDefault() : default(decimal));
                // ////////////////
            }

            e.Quantity = quantity;

            return(e);
        }
 public virtual void AddInventoryItemRequirementEntryEvent(IInventoryItemRequirementEntryEvent e)
 {
     ThrowOnInconsistentEventIds(e);
     this._inventoryItemRequirementEntryEvents[e.InventoryItemRequirementEntryEventId] = e;
 }
 public static void ThrowOnInconsistentEventIds(IInventoryItemRequirementEvent oe, IInventoryItemRequirementEntryEvent e)
 {
     if (!oe.InventoryItemRequirementEventId.InventoryItemRequirementId.Equals(e.InventoryItemRequirementEntryEventId.InventoryItemRequirementId))
     {
         throw DomainError.Named("inconsistentEventIds", "Outer Id InventoryItemRequirementId {0} but inner id InventoryItemRequirementId {1}",
                                 oe.InventoryItemRequirementEventId.InventoryItemRequirementId, e.InventoryItemRequirementEntryEventId.InventoryItemRequirementId);
     }
 }
 protected void ThrowOnInconsistentEventIds(IInventoryItemRequirementEntryEvent e)
 {
     ThrowOnInconsistentEventIds(this, e);
 }
 public void AddInventoryItemRequirementEntryEvent(IInventoryItemRequirementEntryEvent e)
 {
     _innerStateEvents.Add((InventoryItemRequirementEntryStateCreatedOrMergePatchedOrRemovedDto)e);
 }
Example #7
0
 void IInventoryItemRequirementStateMergePatched.AddInventoryItemRequirementEntryEvent(IInventoryItemRequirementEntryEvent e)
 {
     this._inventoryItemRequirementEntryEvents.AddInventoryItemRequirementEntryEvent(e);
 }
 public virtual InventoryItemRequirementEntryStateCreatedOrMergePatchedOrRemovedDto ToInventoryItemRequirementEntryStateEventDto(IInventoryItemRequirementEntryEvent stateEvent)
 {
     if (stateEvent.EventType == StateEventType.Created)
     {
         var e = (IInventoryItemRequirementEntryStateCreated)stateEvent;
         return(ToInventoryItemRequirementEntryStateCreatedDto(e));
     }
     throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType));
 }