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