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

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