public StateChangeCommand FromTransitionType(GoodsItem item, GoodsItemStatus status, string reasoning = "", int areaId = 0)
        {
            var log = new TransitionLog(_repository, item);

            switch (status)
            {
            case GoodsItemStatus.Arrived:
                return(new ArriveCommand(item, log));

            case GoodsItemStatus.Accepted:
                return(new AcceptCommand(item, log));

            case GoodsItemStatus.Storing:
                return(new StoreCommand(item, log, areaId));

            case GoodsItemStatus.WaitingForUnloading:
                return(new WaitingForUnloadCommand(item, log));

            case GoodsItemStatus.Unloaded:
                return(new UnloadCommand(item, log));

            case GoodsItemStatus.Removed:
                return(new RemoveCommand(item, log));

            case GoodsItemStatus.Rejected:
                return(new RejectCommand(item, log, reasoning));

            default:
                throw new ArgumentException("Incorrect target state");
            }
        }
Esempio n. 2
0
 public GoodsTransition(GoodsItemStatus @from, GoodsItemStatus to, int goodsItemId)
 {
     From        = from;
     To          = to;
     TimeStamp   = DateTime.UtcNow;
     GoodsItemId = goodsItemId;
 }
        public GoodsTransition Add(GoodsItemStatus from, GoodsItemStatus to, int goodsItemId, string note)
        {
            var transition = new GoodsTransition(from, to, goodsItemId, note);

            _context.GoodsTransitions.Add(transition);
            _context.SaveChanges();
            return(transition);
        }
        public void ChangeState(GoodsItemStatus target, int itemId, int areaId = 0, string reasoning = null)
        {
            var item    = GetItemById(itemId);
            var command = _factory.FromTransitionType(item, target, reasoning, areaId);

            command.Execute();
            _repository.Update(item);
        }
Esempio n. 5
0
 public GoodsTransition(GoodsItemStatus @from, GoodsItemStatus to, int goodsItemId, string note)
 {
     From        = from;
     To          = to;
     TimeStamp   = DateTime.UtcNow;
     GoodsItemId = goodsItemId;
     Note        = note;
 }
 private void ChangeState(GoodsItemStatus state)
 {
     Item.Status          = state;
     Item.LastTransition  = DateTime.UtcNow;
     Item.TransitionState = _factory.FromGoods(Item);
 }
Esempio n. 7
0
 public void Log(GoodsItemStatus to, string note)
 {
     _repository.Add(_item.Status, to, _item.Id, note);
     _item.LastTransition = DateTime.UtcNow;
 }
 private IEnumerable <GoodsItem> ByStatus(GoodsItemStatus status)
 {
     return(_repository.FindAll().Where(gi => gi.Status == status));
 }