示例#1
0
        protected virtual IAttributeStateMergePatched Map(IMergePatchAttribute c)
        {
            var stateEventId = new AttributeEventId(c.AttributeId, c.Version);
            IAttributeStateMergePatched e = NewAttributeStateMergePatched(stateEventId);

            e.AttributeName        = c.AttributeName;
            e.OrganizationId       = c.OrganizationId;
            e.Description          = c.Description;
            e.IsMandatory          = c.IsMandatory;
            e.AttributeValueType   = c.AttributeValueType;
            e.AttributeValueLength = c.AttributeValueLength;
            e.IsList      = c.IsList;
            e.FieldName   = c.FieldName;
            e.ReferenceId = c.ReferenceId;
            e.Active      = c.Active;
            e.IsPropertyAttributeNameRemoved        = c.IsPropertyAttributeNameRemoved;
            e.IsPropertyOrganizationIdRemoved       = c.IsPropertyOrganizationIdRemoved;
            e.IsPropertyDescriptionRemoved          = c.IsPropertyDescriptionRemoved;
            e.IsPropertyIsMandatoryRemoved          = c.IsPropertyIsMandatoryRemoved;
            e.IsPropertyAttributeValueTypeRemoved   = c.IsPropertyAttributeValueTypeRemoved;
            e.IsPropertyAttributeValueLengthRemoved = c.IsPropertyAttributeValueLengthRemoved;
            e.IsPropertyIsListRemoved      = c.IsPropertyIsListRemoved;
            e.IsPropertyFieldNameRemoved   = c.IsPropertyFieldNameRemoved;
            e.IsPropertyReferenceIdRemoved = c.IsPropertyReferenceIdRemoved;
            e.IsPropertyActiveRemoved      = c.IsPropertyActiveRemoved;

            e.CommandId = c.CommandId;


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

            var version = c.Version;

            foreach (IAttributeValueCommand innerCommand in c.AttributeValueCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IAttributeValueEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddAttributeValueEvent(innerEvent);
            }

            foreach (IAttributeAliasCommand innerCommand in c.AttributeAliasCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IAttributeAliasEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddAttributeAliasEvent(innerEvent);
            }


            return(e);
        }
示例#2
0
        public virtual AttributeStateMergePatchedDto ToAttributeStateMergePatchedDto(IAttributeStateMergePatched e)
        {
            var dto = new AttributeStateMergePatchedDto();

            dto.AttributeEventId     = e.AttributeEventId;
            dto.CreatedAt            = e.CreatedAt;
            dto.CreatedBy            = e.CreatedBy;
            dto.CommandId            = e.CommandId;
            dto.AttributeName        = e.AttributeName;
            dto.OrganizationId       = e.OrganizationId;
            dto.Description          = e.Description;
            dto.IsMandatory          = e.IsMandatory;
            dto.AttributeValueType   = e.AttributeValueType;
            dto.AttributeValueLength = e.AttributeValueLength;
            dto.IsList      = e.IsList;
            dto.FieldName   = e.FieldName;
            dto.ReferenceId = e.ReferenceId;
            dto.Active      = e.Active;
            dto.IsPropertyAttributeNameRemoved        = e.IsPropertyAttributeNameRemoved;
            dto.IsPropertyOrganizationIdRemoved       = e.IsPropertyOrganizationIdRemoved;
            dto.IsPropertyDescriptionRemoved          = e.IsPropertyDescriptionRemoved;
            dto.IsPropertyIsMandatoryRemoved          = e.IsPropertyIsMandatoryRemoved;
            dto.IsPropertyAttributeValueTypeRemoved   = e.IsPropertyAttributeValueTypeRemoved;
            dto.IsPropertyAttributeValueLengthRemoved = e.IsPropertyAttributeValueLengthRemoved;
            dto.IsPropertyIsListRemoved      = e.IsPropertyIsListRemoved;
            dto.IsPropertyFieldNameRemoved   = e.IsPropertyFieldNameRemoved;
            dto.IsPropertyReferenceIdRemoved = e.IsPropertyReferenceIdRemoved;
            dto.IsPropertyActiveRemoved      = e.IsPropertyActiveRemoved;
            var attributeValueEvents = new List <AttributeValueStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.AttributeValueEvents)
            {
                AttributeValueStateCreatedOrMergePatchedOrRemovedDto eeDto = AttributeValueStateEventDtoConverter.ToAttributeValueStateEventDto(ee);
                attributeValueEvents.Add(eeDto);
            }
            dto.AttributeValueEvents = attributeValueEvents.ToArray();

            var attributeAliasEvents = new List <AttributeAliasStateCreatedOrMergePatchedOrRemovedDto>();

            foreach (var ee in e.AttributeAliasEvents)
            {
                AttributeAliasStateCreatedOrMergePatchedOrRemovedDto eeDto = AttributeAliasStateEventDtoConverter.ToAttributeAliasStateEventDto(ee);
                attributeAliasEvents.Add(eeDto);
            }
            dto.AttributeAliasEvents = attributeAliasEvents.ToArray();


            return(dto);
        }
示例#3
0
        protected virtual IAttributeStateMergePatched Map(IMergePatchAttribute c)
        {
            var stateEventId = new AttributeStateEventId(c.AttributeId, c.Version);
            IAttributeStateMergePatched e = NewAttributeStateMergePatched(stateEventId);

            e.Name                                  = c.Name;
            e.OrganizationId                        = c.OrganizationId;
            e.Description                           = c.Description;
            e.IsMandatory                           = c.IsMandatory;
            e.IsInstanceAttribute                   = c.IsInstanceAttribute;
            e.AttributeValueType                    = c.AttributeValueType;
            e.AttributeValueLength                  = c.AttributeValueLength;
            e.IsList                                = c.IsList;
            e.FieldName                             = c.FieldName;
            e.ReferenceId                           = c.ReferenceId;
            e.Active                                = c.Active;
            e.IsPropertyNameRemoved                 = c.IsPropertyNameRemoved;
            e.IsPropertyOrganizationIdRemoved       = c.IsPropertyOrganizationIdRemoved;
            e.IsPropertyDescriptionRemoved          = c.IsPropertyDescriptionRemoved;
            e.IsPropertyIsMandatoryRemoved          = c.IsPropertyIsMandatoryRemoved;
            e.IsPropertyIsInstanceAttributeRemoved  = c.IsPropertyIsInstanceAttributeRemoved;
            e.IsPropertyAttributeValueTypeRemoved   = c.IsPropertyAttributeValueTypeRemoved;
            e.IsPropertyAttributeValueLengthRemoved = c.IsPropertyAttributeValueLengthRemoved;
            e.IsPropertyIsListRemoved               = c.IsPropertyIsListRemoved;
            e.IsPropertyFieldNameRemoved            = c.IsPropertyFieldNameRemoved;
            e.IsPropertyReferenceIdRemoved          = c.IsPropertyReferenceIdRemoved;
            e.IsPropertyActiveRemoved               = c.IsPropertyActiveRemoved;

            ReflectUtils.CopyPropertyValue("CommandId", c, e);


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

            var version = c.Version;

            foreach (IAttributeValueCommand innerCommand in c.AttributeValueCommands)
            {
                ThrowOnInconsistentCommands(c, innerCommand);

                IAttributeValueStateEvent innerEvent = Map(innerCommand, c, version, _state);
                e.AddAttributeValueEvent(innerEvent);
            }


            return(e);
        }
示例#4
0
 void IAttributeState.When(IAttributeStateMergePatched e)
 {
     throw new NotSupportedException();
 }
示例#5
0
        public virtual void MergePatch(IMergePatchAttribute c)
        {
            IAttributeStateMergePatched e = Map(c);

            Apply(e);
        }
示例#6
0
        public virtual void When(IAttributeStateMergePatched e)
        {
            ThrowOnWrongEvent(e);

            if (e.Name == null)
            {
                if (e.IsPropertyNameRemoved)
                {
                    this.Name = default(string);
                }
            }
            else
            {
                this.Name = e.Name;
            }

            if (e.OrganizationId == null)
            {
                if (e.IsPropertyOrganizationIdRemoved)
                {
                    this.OrganizationId = default(string);
                }
            }
            else
            {
                this.OrganizationId = e.OrganizationId;
            }

            if (e.Description == null)
            {
                if (e.IsPropertyDescriptionRemoved)
                {
                    this.Description = default(string);
                }
            }
            else
            {
                this.Description = e.Description;
            }

            if (e.IsMandatory == null)
            {
                if (e.IsPropertyIsMandatoryRemoved)
                {
                    this.IsMandatory = default(bool);
                }
            }
            else
            {
                this.IsMandatory = (e.IsMandatory != null && e.IsMandatory.HasValue) ? e.IsMandatory.Value : default(bool);
            }

            if (e.IsInstanceAttribute == null)
            {
                if (e.IsPropertyIsInstanceAttributeRemoved)
                {
                    this.IsInstanceAttribute = default(bool);
                }
            }
            else
            {
                this.IsInstanceAttribute = (e.IsInstanceAttribute != null && e.IsInstanceAttribute.HasValue) ? e.IsInstanceAttribute.Value : default(bool);
            }

            if (e.AttributeValueType == null)
            {
                if (e.IsPropertyAttributeValueTypeRemoved)
                {
                    this.AttributeValueType = default(string);
                }
            }
            else
            {
                this.AttributeValueType = e.AttributeValueType;
            }

            if (e.AttributeValueLength == null)
            {
                if (e.IsPropertyAttributeValueLengthRemoved)
                {
                    this.AttributeValueLength = default(int?);
                }
            }
            else
            {
                this.AttributeValueLength = e.AttributeValueLength;
            }

            if (e.IsList == null)
            {
                if (e.IsPropertyIsListRemoved)
                {
                    this.IsList = default(bool);
                }
            }
            else
            {
                this.IsList = (e.IsList != null && e.IsList.HasValue) ? e.IsList.Value : default(bool);
            }

            if (e.FieldName == null)
            {
                if (e.IsPropertyFieldNameRemoved)
                {
                    this.FieldName = default(string);
                }
            }
            else
            {
                this.FieldName = e.FieldName;
            }

            if (e.ReferenceId == null)
            {
                if (e.IsPropertyReferenceIdRemoved)
                {
                    this.ReferenceId = default(string);
                }
            }
            else
            {
                this.ReferenceId = e.ReferenceId;
            }

            if (e.Active == null)
            {
                if (e.IsPropertyActiveRemoved)
                {
                    this.Active = default(bool);
                }
            }
            else
            {
                this.Active = (e.Active != null && e.Active.HasValue) ? e.Active.Value : default(bool);
            }


            this.UpdatedBy = e.CreatedBy;
            this.UpdatedAt = e.CreatedAt;


            foreach (IAttributeValueStateEvent innerEvent in e.AttributeValueEvents)
            {
                IAttributeValueState innerState = this.AttributeValues.Get(innerEvent.GlobalId.Value);

                innerState.Mutate(innerEvent);
                var removed = innerEvent as IAttributeValueStateRemoved;
                if (removed != null)
                {
                    this.AttributeValues.Remove(innerState);
                }
            }
        }