示例#1
0
        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);
        }
示例#2
0
        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();
 }
示例#4
0
        public virtual void MergePatch(IMergePatchInventoryItem c)
        {
            IInventoryItemStateMergePatched e = Map(c);

            Apply(e);
        }
示例#5
0
        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);
        }