public PurchaseContext(string currentState) { PurchaseStates purchaseStates = (PurchaseStates)Enum.Parse(typeof(PurchaseStates), currentState); switch (purchaseStates) { case PurchaseStates.Created: State = new Requested(purchaseStates); break; case PurchaseStates.Accepted: State = new Accepted(purchaseStates); break; case PurchaseStates.ReadyToShip: State = new ReadyToDepart(purchaseStates); break; case PurchaseStates.ConfirmShip: State = new ConfirmDepart(purchaseStates); break; case PurchaseStates.Shipped: State = new Shipped(purchaseStates); break; case PurchaseStates.Received: State = new Received(purchaseStates); break; default: throw new ArgumentOutOfRangeException(nameof(purchaseStates), purchaseStates, null); } }
public Received(PurchaseStates state) : base(state) { DisplayText = "Received"; CommandText = "Receive products"; NextState = null; }
public Shipped(PurchaseStates state) : base(state) { DisplayText = "Shipped"; CommandText = "Ship"; NextState = new Received(PurchaseStates.Received); }
public ConfirmDepart(PurchaseStates state) : base(state) { DisplayText = "Shipment confirmed"; CommandText = "Confirm Shipment"; NextState = new Shipped(PurchaseStates.Shipped); }
public ReadyToDepart(PurchaseStates state) : base(state) { DisplayText = "Ready to ship"; CommandText = "Ready to ship"; NextState = new ConfirmDepart(PurchaseStates.ConfirmShip); }
public Accepted(PurchaseStates state) : base(state) { NextState = new ReadyToDepart(PurchaseStates.ReadyToShip); DisplayText = "Accepted"; CommandText = "Accept Request"; }
public Requested(PurchaseStates state) : base(state) { NextState = new Accepted(PurchaseStates.Accepted); DisplayText = "Created"; CommandText = "Create"; }
protected PurchaseState(PurchaseStates state) { CurrentState = state; }
public Canceled(PurchaseStates state) : base(state) { DisplayText = "Canceled"; CommandText = "Cancel request"; NextState = null; }