comparison Agendas/trunk/src/Agendas.Domain/EventoCanceladoState.cs @ 140:3639803112c6

Refactoring de la relación entre Evento y Estado
author nelopauselli
date Fri, 29 Jul 2011 16:30:53 -0300
parents 6f1041301797
children
comparison
equal deleted inserted replaced
139:18e5a78186e4 140:3639803112c6
1 using AltNetHispano.Agendas.Domain.Exceptions; 1 using System;
2 using AltNetHispano.Agendas.Domain.Exceptions;
2 3
3 namespace AltNetHispano.Agendas.Domain 4 namespace AltNetHispano.Agendas.Domain
4 { 5 {
5 public class EventoCanceladoState : EventoState 6 public class EventoCanceladoState : EventoState
6 { 7 {
7 private EventoCanceladoState() 8 protected EventoCanceladoState()
8 { 9 {
9 } 10 }
10 11
11 private static readonly EventoState _instance = new EventoCanceladoState(); 12 private static readonly EventoState _instance = new EventoCanceladoState();
12 13
13 public static EventoState GetInstance() 14 public static EventoState GetInstance()
14 { 15 {
15 return _instance; 16 return _instance;
16 } 17 }
17 18
18 private const string Descripcion = "Cancelado"; 19 public override void Promover(Evento evento, Accion accion)
20 {
21 switch (accion)
22 {
23 case Accion.Descartar:
24 evento.Estado = EventoDescartadoState.GetInstance();
25 evento.AddTrack(new Track(evento, Accion.Descartar));
26 break;
27 case Accion.ReAgendar:
28 evento.Estado = EventoAgendadoState.GetInstance();
29 evento.AddTrack(new Track(evento, Accion.ReAgendar));
30 break;
31 case Accion.ReProponer:
32 evento.Estado = EventoPropuestoState.GetInstance();
33 evento.AddTrack(new Track(evento, Accion.ReProponer));
34 break;
35 default:
36 throw new AccionNoSoportadaException(this.GetType(), accion);
37 }
38 }
19 39
20 public override void Promover(Evento evento, Accion accion) 40 public override string Descripcion
21 { 41 {
22 switch (accion) 42 get { return "Cancelado"; }
23 { 43 }
24 case Accion.Descartar:
25 evento.SetEstado(EventoDescartadoState.GetInstance());
26 evento.AddTrack(new Track(evento, Accion.Descartar));
27 break;
28 case Accion.ReAgendar:
29 evento.SetEstado(EventoAgendadoState.GetInstance());
30 evento.AddTrack(new Track(evento, Accion.ReAgendar));
31 break;
32 case Accion.ReProponer:
33 evento.SetEstado(EventoPropuestoState.GetInstance());
34 evento.AddTrack(new Track(evento, Accion.ReProponer));
35 break;
36 default:
37 throw new AccionNoSoportadaException(this.GetType(), accion);
38 }
39 }
40 44
41 public override string GetDescripcion() 45 public override bool PuedePromover(Accion accion)
42 { 46 {
43 return Descripcion; 47 return accion == Accion.Descartar || accion == Accion.ReAgendar || accion == Accion.ReProponer;
44 } 48 }
45 49 }
46 public override bool PuedePromover(Accion accion)
47 {
48 return accion == Accion.Descartar || accion == Accion.ReAgendar || accion == Accion.ReProponer;
49 }
50 }
51 } 50 }