예제 #1
0
        public Envio(Guid id, string stateKey, Guid?servicioId, EnvioPersona remitente, EnvioPersona destinatario, Direccion direccionEntrega, Direccion direccionRecogida, IEnumerable <Bulto> bultos) : this(id)
        {
            myState = stateKey == null ? EnvioState.Creado : Enumeration.FromValue <EnvioState>(stateKey);

            if (servicioId.HasValue)
            {
                this.ServicioId = new ServicioId(servicioId.Value);
            }

            Remitente         = remitente;
            Destinatario      = destinatario;
            DireccionEntrega  = direccionEntrega;
            DireccionRecogida = direccionRecogida;
            _bultos           = new List <Bulto>(bultos ?? Enumerable.Empty <Bulto>());
        }
예제 #2
0
        public Envio(Guid id) : base(new EnvioId(id))
        {
            _stateMachine = new Stateless.StateMachine <EnvioState, Trigger>(() => myState,
                                                                             s => myState = s);

            _stateMachine.Configure(EnvioState.Creado)
            .Permit(Trigger.AsignarDireccionRecogida, EnvioState.DireccionRecogidaAsignada)
            .Permit(Trigger.AsignarDireccionEntrega, EnvioState.DireccionEntregaAsignada);

            _stateMachine.Configure(EnvioState.DireccionRecogidaAsignada)
            .Permit(Trigger.AsignarDireccionEntrega, EnvioState.DireccionesAsignadas);

            _stateMachine.Configure(EnvioState.DireccionEntregaAsignada)
            .Permit(Trigger.AsignarDireccionRecogida, EnvioState.DireccionesAsignadas);

            myState = EnvioState.Creado;

            _bultos = new List <Bulto>();
        }
예제 #3
0
 public static bool IsEnvioInProgress(EnvioState state)
 {
     int.TryParse(state.Id, out int stateId);
     return(stateId < 7);
 }