public static void ThrowOnInconsistentEventIds(IInOutEvent oe, IInOutLineEvent e) { if (!oe.InOutEventId.DocumentNumber.Equals(e.InOutLineEventId.InOutDocumentNumber)) { throw DomainError.Named("inconsistentEventIds", "Outer Id DocumentNumber {0} but inner id InOutDocumentNumber {1}", oe.InOutEventId.DocumentNumber, e.InOutLineEventId.InOutDocumentNumber); } }
public void Save(IInOutLineEvent stateEvent) { CurrentSession.Save(stateEvent); var saveable = stateEvent as ISaveable; if (saveable != null) { saveable.Save(); } }
protected void ThrowOnWrongEvent(IInOutLineEvent e) { var id = new System.Text.StringBuilder(); id.Append("[").Append("InOutLine|"); var stateEntityIdInOutDocumentNumber = (this as IGlobalIdentity <InOutLineId>).GlobalId.InOutDocumentNumber; var eventEntityIdInOutDocumentNumber = e.InOutLineEventId.InOutDocumentNumber; if (stateEntityIdInOutDocumentNumber != eventEntityIdInOutDocumentNumber) { throw DomainError.Named("mutateWrongEntity", "Entity Id InOutDocumentNumber {0} in state but entity id InOutDocumentNumber {1} in event", stateEntityIdInOutDocumentNumber, eventEntityIdInOutDocumentNumber); } id.Append(stateEntityIdInOutDocumentNumber).Append(","); var stateEntityIdLineNumber = (this as IGlobalIdentity <InOutLineId>).GlobalId.LineNumber; var eventEntityIdLineNumber = e.InOutLineEventId.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 IInOutLineStateEvent ? (IInOutLineStateEvent)e : null; if (e == null) { return; } stateEvent.Version = stateVersion; //var stateEventStateVersion = stateEvent.Version; //if (InOutLineState.VersionZero == stateEventStateVersion) //{ // stateEventStateVersion = stateEvent.Version = stateVersion; //} //if (stateVersion != stateEventStateVersion) //{ // throw OptimisticConcurrencyException.Create(stateVersion, stateEventStateVersion, id.ToString()); //} }
public void AddInOutLineEvent(IInOutLineEvent e) { _innerStateEvents.Add((InOutLineStateCreatedOrMergePatchedOrRemovedDto)e); }
void IInOutStateMergePatched.AddInOutLineEvent(IInOutLineEvent e) { this._inOutLineEvents.AddInOutLineEvent(e); }
protected virtual IInOutStateMergePatched Map(IMergePatchInOut c) { var stateEventId = new InOutEventId(c.DocumentNumber, c.Version); IInOutStateMergePatched e = NewInOutStateMergePatched(stateEventId); e.Posted = c.Posted; e.Processed = c.Processed; e.Processing = c.Processing; e.DocumentTypeId = c.DocumentTypeId; e.Description = c.Description; e.OrderId = c.OrderId; e.DateOrdered = c.DateOrdered; e.IsPrinted = c.IsPrinted; e.MovementTypeId = c.MovementTypeId; e.MovementDate = c.MovementDate; e.BusinessPartnerId = c.BusinessPartnerId; e.WarehouseId = c.WarehouseId; e.POReference = c.POReference; e.FreightAmount = c.FreightAmount; e.ShipperId = c.ShipperId; e.ChargeAmount = c.ChargeAmount; e.DatePrinted = c.DatePrinted; e.CreatedFrom = c.CreatedFrom; e.SalesRepresentativeId = c.SalesRepresentativeId; e.NumberOfPackages = c.NumberOfPackages; e.PickDate = c.PickDate; e.ShipDate = c.ShipDate; e.TrackingNumber = c.TrackingNumber; e.DateReceived = c.DateReceived; e.IsInTransit = c.IsInTransit; e.IsApproved = c.IsApproved; e.IsInDispute = c.IsInDispute; e.RmaDocumentNumber = c.RmaDocumentNumber; e.ReversalDocumentNumber = c.ReversalDocumentNumber; e.Active = c.Active; e.IsPropertyPostedRemoved = c.IsPropertyPostedRemoved; e.IsPropertyProcessedRemoved = c.IsPropertyProcessedRemoved; e.IsPropertyProcessingRemoved = c.IsPropertyProcessingRemoved; e.IsPropertyDocumentTypeIdRemoved = c.IsPropertyDocumentTypeIdRemoved; e.IsPropertyDescriptionRemoved = c.IsPropertyDescriptionRemoved; e.IsPropertyOrderIdRemoved = c.IsPropertyOrderIdRemoved; e.IsPropertyDateOrderedRemoved = c.IsPropertyDateOrderedRemoved; e.IsPropertyIsPrintedRemoved = c.IsPropertyIsPrintedRemoved; e.IsPropertyMovementTypeIdRemoved = c.IsPropertyMovementTypeIdRemoved; e.IsPropertyMovementDateRemoved = c.IsPropertyMovementDateRemoved; e.IsPropertyBusinessPartnerIdRemoved = c.IsPropertyBusinessPartnerIdRemoved; e.IsPropertyWarehouseIdRemoved = c.IsPropertyWarehouseIdRemoved; e.IsPropertyPOReferenceRemoved = c.IsPropertyPOReferenceRemoved; e.IsPropertyFreightAmountRemoved = c.IsPropertyFreightAmountRemoved; e.IsPropertyShipperIdRemoved = c.IsPropertyShipperIdRemoved; e.IsPropertyChargeAmountRemoved = c.IsPropertyChargeAmountRemoved; e.IsPropertyDatePrintedRemoved = c.IsPropertyDatePrintedRemoved; e.IsPropertyCreatedFromRemoved = c.IsPropertyCreatedFromRemoved; e.IsPropertySalesRepresentativeIdRemoved = c.IsPropertySalesRepresentativeIdRemoved; e.IsPropertyNumberOfPackagesRemoved = c.IsPropertyNumberOfPackagesRemoved; e.IsPropertyPickDateRemoved = c.IsPropertyPickDateRemoved; e.IsPropertyShipDateRemoved = c.IsPropertyShipDateRemoved; e.IsPropertyTrackingNumberRemoved = c.IsPropertyTrackingNumberRemoved; e.IsPropertyDateReceivedRemoved = c.IsPropertyDateReceivedRemoved; e.IsPropertyIsInTransitRemoved = c.IsPropertyIsInTransitRemoved; e.IsPropertyIsApprovedRemoved = c.IsPropertyIsApprovedRemoved; e.IsPropertyIsInDisputeRemoved = c.IsPropertyIsInDisputeRemoved; e.IsPropertyRmaDocumentNumberRemoved = c.IsPropertyRmaDocumentNumberRemoved; e.IsPropertyReversalDocumentNumberRemoved = c.IsPropertyReversalDocumentNumberRemoved; 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 (IInOutLineCommand innerCommand in c.InOutLineCommands) { ThrowOnInconsistentCommands(c, innerCommand); IInOutLineEvent innerEvent = Map(innerCommand, c, version, _state); e.AddInOutLineEvent(innerEvent); } return(e); }
public virtual void AddInOutLineEvent(IInOutLineEvent e) { ThrowOnInconsistentEventIds(e); this._inOutLineEvents[e.InOutLineEventId] = e; }
protected void ThrowOnInconsistentEventIds(IInOutLineEvent e) { ThrowOnInconsistentEventIds(this, e); }
public virtual InOutLineStateCreatedOrMergePatchedOrRemovedDto ToInOutLineStateEventDto(IInOutLineEvent stateEvent) { if (stateEvent.EventType == StateEventType.Created) { var e = (IInOutLineStateCreated)stateEvent; return(ToInOutLineStateCreatedDto(e)); } else if (stateEvent.EventType == StateEventType.MergePatched) { var e = (IInOutLineStateMergePatched)stateEvent; return(ToInOutLineStateMergePatchedDto(e)); } else if (stateEvent.EventType == StateEventType.Removed) { var e = (IInOutLineStateRemoved)stateEvent; return(ToInOutLineStateRemovedDto(e)); } throw DomainError.Named("invalidEventType", String.Format("Invalid state event type: {0}", stateEvent.EventType)); }