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"); } }
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); }
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); }
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)); }