public static void ThrowOnInconsistentEventIds(IMovementEvent oe, IMovementLineEvent e) { if (!oe.MovementEventId.DocumentNumber.Equals(e.MovementLineEventId.MovementDocumentNumber)) { throw DomainError.Named("inconsistentEventIds", "Outer Id DocumentNumber {0} but inner id MovementDocumentNumber {1}", oe.MovementEventId.DocumentNumber, e.MovementLineEventId.MovementDocumentNumber); } }
public void Save(IMovementLineEvent stateEvent) { CurrentSession.Save(stateEvent); var saveable = stateEvent as ISaveable; if (saveable != null) { saveable.Save(); } }
protected void ThrowOnWrongEvent(IMovementLineEvent e) { var id = new System.Text.StringBuilder(); id.Append("[").Append("MovementLine|"); var stateEntityIdMovementDocumentNumber = (this as IGlobalIdentity <MovementLineId>).GlobalId.MovementDocumentNumber; var eventEntityIdMovementDocumentNumber = e.MovementLineEventId.MovementDocumentNumber; if (stateEntityIdMovementDocumentNumber != eventEntityIdMovementDocumentNumber) { throw DomainError.Named("mutateWrongEntity", "Entity Id MovementDocumentNumber {0} in state but entity id MovementDocumentNumber {1} in event", stateEntityIdMovementDocumentNumber, eventEntityIdMovementDocumentNumber); } id.Append(stateEntityIdMovementDocumentNumber).Append(","); var stateEntityIdLineNumber = (this as IGlobalIdentity <MovementLineId>).GlobalId.LineNumber; var eventEntityIdLineNumber = e.MovementLineEventId.LineNumber; if (stateEntityIdLineNumber != eventEntityIdLineNumber) { throw DomainError.Named("mutateWrongEntity", "Entity Id LineNumber {0} in state but entity id LineNumber {1} in event", stateEntityIdLineNumber, eventEntityIdLineNumber); } id.Append(stateEntityIdLineNumber).Append(","); id.Append("]"); if (ForReapplying) { return; } var stateVersion = this.Version; var stateEvent = e is IMovementLineStateEvent ? (IMovementLineStateEvent)e : null; if (e == null) { return; } stateEvent.Version = stateVersion; //var stateEventStateVersion = stateEvent.Version; //if (MovementLineState.VersionZero == stateEventStateVersion) //{ // stateEventStateVersion = stateEvent.Version = stateVersion; //} //if (stateVersion != stateEventStateVersion) //{ // throw OptimisticConcurrencyException.Create(stateVersion, stateEventStateVersion, id.ToString()); //} }
public virtual void AddMovementLineEvent(IMovementLineEvent e) { ThrowOnInconsistentEventIds(e); this._movementLineEvents[e.MovementLineEventId] = e; }
protected void ThrowOnInconsistentEventIds(IMovementLineEvent e) { ThrowOnInconsistentEventIds(this, e); }
void IMovementStateMergePatched.AddMovementLineEvent(IMovementLineEvent e) { this._movementLineEvents.AddMovementLineEvent(e); }
public virtual MovementLineStateCreatedOrMergePatchedOrRemovedDto ToMovementLineStateEventDto(IMovementLineEvent stateEvent) { if (stateEvent.EventType == StateEventType.Created) { var e = (IMovementLineStateCreated)stateEvent; return(ToMovementLineStateCreatedDto(e)); } else if (stateEvent.EventType == StateEventType.MergePatched) { var e = (IMovementLineStateMergePatched)stateEvent; return(ToMovementLineStateMergePatchedDto(e)); } else if (stateEvent.EventType == StateEventType.Removed) { var e = (IMovementLineStateRemoved)stateEvent; return(ToMovementLineStateRemovedDto(e)); } throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType)); }
public void AddMovementLineEvent(IMovementLineEvent e) { _innerStateEvents.Add((MovementLineStateCreatedOrMergePatchedOrRemovedDto)e); }
protected virtual IMovementStateMergePatched Map(IMergePatchMovement c) { var stateEventId = new MovementEventId(c.DocumentNumber, c.Version); IMovementStateMergePatched e = NewMovementStateMergePatched(stateEventId); e.MovementDate = c.MovementDate; e.Posted = c.Posted; e.Processed = c.Processed; e.Processing = c.Processing; e.DateReceived = c.DateReceived; e.DocumentTypeId = c.DocumentTypeId; e.IsInTransit = c.IsInTransit; e.IsApproved = c.IsApproved; e.ApprovalAmount = c.ApprovalAmount; e.ShipperId = c.ShipperId; e.SalesRepresentativeId = c.SalesRepresentativeId; e.BusinessPartnerId = c.BusinessPartnerId; e.ChargeAmount = c.ChargeAmount; e.CreateFrom = c.CreateFrom; e.FreightAmount = c.FreightAmount; e.ReversalDocumentNumber = c.ReversalDocumentNumber; e.WarehouseIdFrom = c.WarehouseIdFrom; e.WarehouseIdTo = c.WarehouseIdTo; e.Description = c.Description; e.Active = c.Active; e.IsPropertyMovementDateRemoved = c.IsPropertyMovementDateRemoved; e.IsPropertyPostedRemoved = c.IsPropertyPostedRemoved; e.IsPropertyProcessedRemoved = c.IsPropertyProcessedRemoved; e.IsPropertyProcessingRemoved = c.IsPropertyProcessingRemoved; e.IsPropertyDateReceivedRemoved = c.IsPropertyDateReceivedRemoved; e.IsPropertyDocumentTypeIdRemoved = c.IsPropertyDocumentTypeIdRemoved; e.IsPropertyIsInTransitRemoved = c.IsPropertyIsInTransitRemoved; e.IsPropertyIsApprovedRemoved = c.IsPropertyIsApprovedRemoved; e.IsPropertyApprovalAmountRemoved = c.IsPropertyApprovalAmountRemoved; e.IsPropertyShipperIdRemoved = c.IsPropertyShipperIdRemoved; e.IsPropertySalesRepresentativeIdRemoved = c.IsPropertySalesRepresentativeIdRemoved; e.IsPropertyBusinessPartnerIdRemoved = c.IsPropertyBusinessPartnerIdRemoved; e.IsPropertyChargeAmountRemoved = c.IsPropertyChargeAmountRemoved; e.IsPropertyCreateFromRemoved = c.IsPropertyCreateFromRemoved; e.IsPropertyFreightAmountRemoved = c.IsPropertyFreightAmountRemoved; e.IsPropertyReversalDocumentNumberRemoved = c.IsPropertyReversalDocumentNumberRemoved; e.IsPropertyWarehouseIdFromRemoved = c.IsPropertyWarehouseIdFromRemoved; e.IsPropertyWarehouseIdToRemoved = c.IsPropertyWarehouseIdToRemoved; e.IsPropertyDescriptionRemoved = c.IsPropertyDescriptionRemoved; 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 (IMovementLineCommand innerCommand in c.MovementLineCommands) { ThrowOnInconsistentCommands(c, innerCommand); IMovementLineEvent innerEvent = Map(innerCommand, c, version, _state); e.AddMovementLineEvent(innerEvent); } return(e); }