Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/EventoCanceladoState.cs @ 133:6f1041301797
Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
Falta solucionar problema con flujo, ver más información en el ticket de assembla.
http://www.assembla.com/spaces/altnet-hispano/tickets/146-implementar-estado-descartar-y-cancelar-de-eventos
author | alabra |
---|---|
date | Sun, 10 Jul 2011 23:59:19 -0400 |
parents | |
children | 3639803112c6 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Agendas/trunk/src/Agendas.Domain/EventoCanceladoState.cs Sun Jul 10 23:59:19 2011 -0400 @@ -0,0 +1,51 @@ +using AltNetHispano.Agendas.Domain.Exceptions; + +namespace AltNetHispano.Agendas.Domain +{ + public class EventoCanceladoState : EventoState + { + private EventoCanceladoState() + { + } + + private static readonly EventoState _instance = new EventoCanceladoState(); + + public static EventoState GetInstance() + { + return _instance; + } + + private const string Descripcion = "Cancelado"; + + public override void Promover(Evento evento, Accion accion) + { + switch (accion) + { + case Accion.Descartar: + evento.SetEstado(EventoDescartadoState.GetInstance()); + evento.AddTrack(new Track(evento, Accion.Descartar)); + break; + case Accion.ReAgendar: + evento.SetEstado(EventoAgendadoState.GetInstance()); + evento.AddTrack(new Track(evento, Accion.ReAgendar)); + break; + case Accion.ReProponer: + evento.SetEstado(EventoPropuestoState.GetInstance()); + evento.AddTrack(new Track(evento, Accion.ReProponer)); + break; + default: + throw new AccionNoSoportadaException(this.GetType(), accion); + } + } + + public override string GetDescripcion() + { + return Descripcion; + } + + public override bool PuedePromover(Accion accion) + { + return accion == Accion.Descartar || accion == Accion.ReAgendar || accion == Accion.ReProponer; + } + } +} \ No newline at end of file