protected bool IsRepeatedCommand(IAttributeSetInstanceExtensionFieldGroupCommand command, IEventStoreAggregateId eventStoreAggregateId, IAttributeSetInstanceExtensionFieldGroupState state)
        {
            bool repeated = false;

            if (((IAttributeSetInstanceExtensionFieldGroupStateProperties)state).Version > command.AggregateVersion)
            {
                var lastEvent = EventStore.FindLastEvent(typeof(IAttributeSetInstanceExtensionFieldGroupStateEvent), eventStoreAggregateId, command.AggregateVersion);
                if (lastEvent != null && lastEvent.CommandId == command.CommandId)
                {
                    repeated = true;
                }
            }
            return(repeated);
        }
        protected void ThrowOnInconsistentCommands(IAttributeSetInstanceExtensionFieldGroupCommand command, IAttributeSetInstanceExtensionFieldCommand innerCommand)
        {
            var properties      = command as ICreateOrMergePatchOrDeleteAttributeSetInstanceExtensionFieldGroup;
            var innerProperties = innerCommand as ICreateOrMergePatchOrRemoveAttributeSetInstanceExtensionField;

            if (properties == null || innerProperties == null)
            {
                return;
            }
            var outerIdName       = "Id";
            var outerIdValue      = properties.Id;
            var innerGroupIdName  = "GroupId";
            var innerGroupIdValue = innerProperties.GroupId;

            SetNullInnerIdOrThrowOnInconsistentIds(innerProperties, innerGroupIdName, innerGroupIdValue, outerIdName, outerIdValue);
        }// END ThrowOnInconsistentCommands /////////////////////
        protected virtual void Update(IAttributeSetInstanceExtensionFieldGroupCommand c, Action <IAttributeSetInstanceExtensionFieldGroupAggregate> action)
        {
            var aggregateId = c.AggregateId;
            var state       = StateRepository.Get(aggregateId, false);
            var aggregate   = GetAttributeSetInstanceExtensionFieldGroupAggregate(state);

            var eventStoreAggregateId = ToEventStoreAggregateId(aggregateId);

            var repeated = IsRepeatedCommand(c, eventStoreAggregateId, state);

            if (repeated)
            {
                return;
            }

            aggregate.ThrowOnInvalidStateTransition(c);
            action(aggregate);
            EventStore.AppendEvents(eventStoreAggregateId, ((IAttributeSetInstanceExtensionFieldGroupStateProperties)state).Version, aggregate.Changes, () => { StateRepository.Save(state); });
        }
Example #4
0
        protected virtual void Update(IAttributeSetInstanceExtensionFieldGroupCommand c, Action <IAttributeSetInstanceExtensionFieldGroupAggregate> action)
        {
            var aggregateId = c.AggregateId;
            var state       = StateRepository.Get(aggregateId, false);
            var aggregate   = GetAttributeSetInstanceExtensionFieldGroupAggregate(state);

            var eventStoreAggregateId = ToEventStoreAggregateId(aggregateId);

            var repeated = IsRepeatedCommand(c, eventStoreAggregateId, state);

            if (repeated)
            {
                return;
            }

            aggregate.ThrowOnInvalidStateTransition(c);
            action(aggregate);
            Persist(eventStoreAggregateId, aggregate, state);
        }
Example #5
0
 private static bool IsCommandCreate(IAttributeSetInstanceExtensionFieldGroupCommand c)
 {
     return(c.Version == AttributeSetInstanceExtensionFieldGroupState.VersionZero);
 }
        }// END Map(IMergePatch... ////////////////////////////

        protected virtual IAttributeSetInstanceExtensionFieldStateRemoved MapRemove(IRemoveAttributeSetInstanceExtensionField c, IAttributeSetInstanceExtensionFieldGroupCommand outerCommand, long version)
        {
            c.RequesterId = outerCommand.RequesterId;
            var stateEventId = new AttributeSetInstanceExtensionFieldStateEventId(c.GroupId, c.Index, version);
            IAttributeSetInstanceExtensionFieldStateRemoved e = NewAttributeSetInstanceExtensionFieldStateRemoved(stateEventId);


            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = DateTime.Now;

            return(e);
        }// END Map(IRemove... ////////////////////////////
        }// END Map(ICreate... ////////////////////////////

        protected virtual IAttributeSetInstanceExtensionFieldStateMergePatched MapMergePatch(IMergePatchAttributeSetInstanceExtensionField c, IAttributeSetInstanceExtensionFieldGroupCommand outerCommand, long version, IAttributeSetInstanceExtensionFieldGroupState outerState)
        {
            c.RequesterId = outerCommand.RequesterId;
            var stateEventId = new AttributeSetInstanceExtensionFieldStateEventId(c.GroupId, c.Index, version);
            IAttributeSetInstanceExtensionFieldStateMergePatched e = NewAttributeSetInstanceExtensionFieldStateMergePatched(stateEventId);
            var s = outerState.Fields.Get(c.Index);

            e.Name                         = c.Name;
            e.Type                         = c.Type;
            e.Length                       = c.Length;
            e.Alias                        = c.Alias;
            e.Description                  = c.Description;
            e.Active                       = c.Active;
            e.IsPropertyNameRemoved        = c.IsPropertyNameRemoved;
            e.IsPropertyTypeRemoved        = c.IsPropertyTypeRemoved;
            e.IsPropertyLengthRemoved      = c.IsPropertyLengthRemoved;
            e.IsPropertyAliasRemoved       = c.IsPropertyAliasRemoved;
            e.IsPropertyDescriptionRemoved = c.IsPropertyDescriptionRemoved;
            e.IsPropertyActiveRemoved      = c.IsPropertyActiveRemoved;

            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = DateTime.Now;
            return(e);
        }// END Map(IMergePatch... ////////////////////////////
        }// END ThrowOnInconsistentCommands /////////////////////

        protected virtual IAttributeSetInstanceExtensionFieldStateEvent Map(IAttributeSetInstanceExtensionFieldCommand c, IAttributeSetInstanceExtensionFieldGroupCommand outerCommand, long version, IAttributeSetInstanceExtensionFieldGroupState outerState)
        {
            var create = (c.CommandType == CommandType.Create) ? (c as ICreateAttributeSetInstanceExtensionField) : null;

            if (create != null)
            {
                return(MapCreate(create, outerCommand, version, outerState));
            }

            var merge = (c.CommandType == CommandType.MergePatch) ? (c as IMergePatchAttributeSetInstanceExtensionField) : null;

            if (merge != null)
            {
                return(MapMergePatch(merge, outerCommand, version, outerState));
            }

            var remove = (c.CommandType == CommandType.Remove) ? (c as IRemoveAttributeSetInstanceExtensionField) : null;

            if (remove != null)
            {
                return(MapRemove(remove, outerCommand, version));
            }
            throw new NotSupportedException();
        }
        protected virtual IAttributeSetInstanceExtensionFieldStateCreated MapCreate(ICreateAttributeSetInstanceExtensionField c, IAttributeSetInstanceExtensionFieldGroupCommand outerCommand, long version, IAttributeSetInstanceExtensionFieldGroupState outerState)
        {
            c.RequesterId = outerCommand.RequesterId;
            var stateEventId = new AttributeSetInstanceExtensionFieldStateEventId(c.GroupId, c.Index, version);
            IAttributeSetInstanceExtensionFieldStateCreated e = NewAttributeSetInstanceExtensionFieldStateCreated(stateEventId);
            var s = outerState.Fields.Get(c.Index, true);

            e.Name        = c.Name;
            e.Type        = c.Type;
            e.Length      = c.Length;
            e.Alias       = c.Alias;
            e.Description = c.Description;
            e.Active      = c.Active;

            e.CreatedBy = (string)c.RequesterId;
            e.CreatedAt = DateTime.Now;
            return(e);
        }// END Map(ICreate... ////////////////////////////