protected virtual IInventoryItemStateMergePatched Map(IMergePatchInventoryItem c) { var stateEventId = new InventoryItemEventId(c.InventoryItemId, c.Version); IInventoryItemStateMergePatched e = NewInventoryItemStateMergePatched(stateEventId); e.CommandId = c.CommandId; e.CreatedBy = (string)c.RequesterId; e.CreatedAt = ApplicationContext.Current.TimestampService.Now <DateTime>(); var version = c.Version; decimal onHandQuantity = _state.OnHandQuantity; decimal inTransitQuantity = _state.InTransitQuantity; decimal reservedQuantity = _state.ReservedQuantity; decimal occupiedQuantity = _state.OccupiedQuantity; decimal virtualQuantity = _state.VirtualQuantity; foreach (IInventoryItemEntryCommand innerCommand in c.InventoryItemEntryCommands) { ThrowOnInconsistentCommands(c, innerCommand); IInventoryItemEntryEvent innerEvent = Map(innerCommand, c, version, _state); e.AddInventoryItemEntryEvent(innerEvent); // //////////////// if (!(innerEvent is IInventoryItemEntryStateCreated)) { continue; } var entryCreated = (IInventoryItemEntryStateCreated)innerEvent; onHandQuantity = onHandQuantity + (entryCreated.OnHandQuantity != null ? entryCreated.OnHandQuantity.GetValueOrDefault() : default(decimal)); inTransitQuantity = inTransitQuantity + (entryCreated.InTransitQuantity != null ? entryCreated.InTransitQuantity.GetValueOrDefault() : default(decimal)); reservedQuantity = reservedQuantity + (entryCreated.ReservedQuantity != null ? entryCreated.ReservedQuantity.GetValueOrDefault() : default(decimal)); occupiedQuantity = occupiedQuantity + (entryCreated.OccupiedQuantity != null ? entryCreated.OccupiedQuantity.GetValueOrDefault() : default(decimal)); virtualQuantity = virtualQuantity + (entryCreated.VirtualQuantity != null ? entryCreated.VirtualQuantity.GetValueOrDefault() : default(decimal)); // //////////////// } e.OnHandQuantity = onHandQuantity; e.InTransitQuantity = inTransitQuantity; e.ReservedQuantity = reservedQuantity; e.OccupiedQuantity = occupiedQuantity; e.VirtualQuantity = virtualQuantity; return(e); }
public virtual void When(IInventoryItemStateMergePatched e) { ThrowOnWrongEvent(e); if (e.OnHandQuantity == null) { if (e.IsPropertyOnHandQuantityRemoved) { this.OnHandQuantity = default(decimal); } } else { this.OnHandQuantity = (e.OnHandQuantity != null && e.OnHandQuantity.HasValue) ? e.OnHandQuantity.Value : default(decimal); } if (e.InTransitQuantity == null) { if (e.IsPropertyInTransitQuantityRemoved) { this.InTransitQuantity = default(decimal); } } else { this.InTransitQuantity = (e.InTransitQuantity != null && e.InTransitQuantity.HasValue) ? e.InTransitQuantity.Value : default(decimal); } if (e.ReservedQuantity == null) { if (e.IsPropertyReservedQuantityRemoved) { this.ReservedQuantity = default(decimal); } } else { this.ReservedQuantity = (e.ReservedQuantity != null && e.ReservedQuantity.HasValue) ? e.ReservedQuantity.Value : default(decimal); } if (e.OccupiedQuantity == null) { if (e.IsPropertyOccupiedQuantityRemoved) { this.OccupiedQuantity = default(decimal); } } else { this.OccupiedQuantity = (e.OccupiedQuantity != null && e.OccupiedQuantity.HasValue) ? e.OccupiedQuantity.Value : default(decimal); } if (e.VirtualQuantity == null) { if (e.IsPropertyVirtualQuantityRemoved) { this.VirtualQuantity = default(decimal); } } else { this.VirtualQuantity = (e.VirtualQuantity != null && e.VirtualQuantity.HasValue) ? e.VirtualQuantity.Value : default(decimal); } this.UpdatedBy = e.CreatedBy; this.UpdatedAt = e.CreatedAt; foreach (IInventoryItemEntryEvent innerEvent in e.InventoryItemEntryEvents) { IInventoryItemEntryState innerState = this.Entries.Get(innerEvent.GlobalId.EntrySeqId); innerState.Mutate(innerEvent); } }
void IInventoryItemState.When(IInventoryItemStateMergePatched e) { throw new NotSupportedException(); }
public virtual void MergePatch(IMergePatchInventoryItem c) { IInventoryItemStateMergePatched e = Map(c); Apply(e); }
public virtual InventoryItemStateMergePatchedDto ToInventoryItemStateMergePatchedDto(IInventoryItemStateMergePatched e) { var dto = new InventoryItemStateMergePatchedDto(); dto.InventoryItemEventId = e.InventoryItemEventId; dto.CreatedAt = e.CreatedAt; dto.CreatedBy = e.CreatedBy; dto.CommandId = e.CommandId; dto.OnHandQuantity = e.OnHandQuantity; dto.InTransitQuantity = e.InTransitQuantity; dto.ReservedQuantity = e.ReservedQuantity; dto.OccupiedQuantity = e.OccupiedQuantity; dto.VirtualQuantity = e.VirtualQuantity; dto.IsPropertyOnHandQuantityRemoved = e.IsPropertyOnHandQuantityRemoved; dto.IsPropertyInTransitQuantityRemoved = e.IsPropertyInTransitQuantityRemoved; dto.IsPropertyReservedQuantityRemoved = e.IsPropertyReservedQuantityRemoved; dto.IsPropertyOccupiedQuantityRemoved = e.IsPropertyOccupiedQuantityRemoved; dto.IsPropertyVirtualQuantityRemoved = e.IsPropertyVirtualQuantityRemoved; var inventoryItemEntryEvents = new List <InventoryItemEntryStateCreatedOrMergePatchedOrRemovedDto>(); foreach (var ee in e.InventoryItemEntryEvents) { InventoryItemEntryStateCreatedOrMergePatchedOrRemovedDto eeDto = InventoryItemEntryStateEventDtoConverter.ToInventoryItemEntryStateEventDto(ee); inventoryItemEntryEvents.Add(eeDto); } dto.InventoryItemEntryEvents = inventoryItemEntryEvents.ToArray(); return(dto); }