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; }
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; }
public virtual bool PuedeAplicar(EventoTurno eventoTurno) { var transicion = new CambioEstadoTurno(Estado, eventoTurno); return Transiciones.ContainsKey(transicion); }