Exemplo n.º 1
0
 public CambioEstadoTurno(EstadoTurno currentState, EventoTurno eventoTurno)
 {
     Estado = currentState;
     Evento = eventoTurno;
 }
Exemplo n.º 2
0
 private DateTime? ObtenerFechaEstado(EventoTurno evento)
 {
     var cambioEstado = ObtenerCambioEstado(evento);
     if (cambioEstado == null) return null;
     return cambioEstado.Fecha;
 }
Exemplo n.º 3
0
 private Persona ObtenerResponsableEstado(EventoTurno evento)
 {
     var cambioEstado = ObtenerCambioEstado(evento);
     if (cambioEstado == null) return null;
     return cambioEstado.Responsable;
 }
Exemplo n.º 4
0
 private CambioEstadoTurno ObtenerCambioEstado(EventoTurno evento)
 {
     return CambiosDeEstado.SingleOrDefault(x => x.Evento == evento);
 }
Exemplo n.º 5
0
 protected virtual EstadoTurno ProximoEstado(EventoTurno eventoTurno)
 {
     var transicion = new CambioEstadoTurno(Estado, eventoTurno);
     EstadoTurno proximoEstado;
     if (!Transiciones.TryGetValue(transicion, out proximoEstado))
         throw new Exception("Cambio de Estado inválido: " + Estado + " -> " + eventoTurno);
     return proximoEstado;
 }
Exemplo n.º 6
0
 protected virtual EstadoTurno MoverEstado(EventoTurno eventoTurno, Persona persona)
 {
     var estado = ProximoEstado(eventoTurno);
     var fecha = DateTime.Now;
     var cambioEstado = new CambioEstadoTurno(estado, eventoTurno) { Fecha = fecha, Responsable = persona };
     CambiosDeEstado.Add(cambioEstado);
     Estado = estado;
     FechaEstado = fecha;
     return estado;
 }
Exemplo n.º 7
0
 public virtual bool PuedeAplicar(EventoTurno eventoTurno)
 {
     var transicion = new CambioEstadoTurno(Estado, eventoTurno);
     return Transiciones.ContainsKey(transicion);
 }
Exemplo n.º 8
0
 public static EstadoTurno[] EstadosAplicaEvento(EventoTurno eventoTurno)
 {
     return Enum.GetValues(typeof(EstadoTurno))
         .Cast<EstadoTurno>()
         .Where(estado => PuedeAplicar(estado, eventoTurno)).ToArray();
 }