comparison Agendas/trunk/src/Agendas.Domain/EventoAgendadoState.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 3ca9fb66d397
comparison
equal deleted inserted replaced
139:18e5a78186e4 140:3639803112c6
1 using System; 1 using AltNetHispano.Agendas.Domain.Exceptions;
2 using AltNetHispano.Agendas.Domain.Exceptions;
3 2
4 namespace AltNetHispano.Agendas.Domain 3 namespace AltNetHispano.Agendas.Domain
5 { 4 {
6 public class EventoAgendadoState : EventoState 5 public class EventoAgendadoState : EventoState
7 { 6 {
8 private EventoAgendadoState() 7 protected EventoAgendadoState()
9 { 8 {
10 } 9 }
11 10
12 private static readonly EventoState _instance = new EventoAgendadoState(); 11 private static readonly EventoState _instance = new EventoAgendadoState();
13 public static EventoState GetInstance() 12 public static EventoState GetInstance()
14 { 13 {
15 return _instance; 14 return _instance;
16 } 15 }
17 16
18 private const string Descripcion = "Agendado"; 17 public override void Promover(Evento evento, Accion accion)
18 {
19 switch (accion)
20 {
21 case Accion.Confirmar:
22 evento.Estado=EventoConfirmadoState.GetInstance();
23 evento.AddTrack(new Track(evento, Accion.Confirmar));
24 break;
25 case Accion.Cancelar:
26 evento.Estado = EventoCanceladoState.GetInstance();
27 evento.AddTrack(new Track(evento, Accion.Cancelar));
28 break;
29 default:
30 throw new AccionNoSoportadaException(this.GetType(), accion);
31 }
32 }
19 33
20 public override void Promover(Evento evento, Accion accion) 34 public override string Descripcion
21 { 35 {
22 switch (accion) 36 get { return "Agendado"; }
23 { 37 }
24 case Accion.Confirmar:
25 evento.SetEstado(EventoConfirmadoState.GetInstance());
26 evento.AddTrack(new Track(evento, Accion.Confirmar));
27 break;
28 case Accion.Cancelar:
29 evento.SetEstado(EventoCanceladoState.GetInstance());
30 evento.AddTrack(new Track(evento, Accion.Cancelar));
31 break;
32 default:
33 throw new AccionNoSoportadaException(this.GetType(), accion);
34 }
35 }
36 38
37 public override string GetDescripcion() 39 public override bool PuedePromover(Accion accion)
38 { 40 {
39 return Descripcion; 41 return accion == Accion.Confirmar || accion == Accion.Cancelar;
40 } 42 }
41 43 }
42 public override bool PuedePromover(Accion accion)
43 {
44 return accion == Accion.Confirmar || accion == Accion.Cancelar;
45 }
46 }
47 } 44 }