annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 104:c5034884c7d7

refactor para que los estados sean singletons
author jorge.rowies
date Sun, 05 Jun 2011 13:22:36 -0300
parents 23325dddddcc
children 1d820f17fc75
rev   line source
1
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
1 using System;
12
05996fa19e04 Unificamos Van y Cafe en Evento
nelo@MTEySS.neluz.int
parents: 4
diff changeset
2 using System.Collections.Generic;
104
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
3 using AltNetHispano.Agendas.Domain.Exceptions;
1
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
4
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
5 namespace AltNetHispano.Agendas.Domain
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
6 {
56
65bbcdd5d357 Pasando la responsabilidad de generar el Id al repositorio
nelopauselli
parents: 54
diff changeset
7 public class Evento : Identificable
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
8 {
63
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
9 protected Evento()
57
3d9e6d56d903 Refactoring del track de cambios de un evento
nelopauselli
parents: 56
diff changeset
10 {
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
11 _tracks = new List<Track>();
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
12 }
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
13
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
14 #region Propiedades del Evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
15
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
16 private readonly IList<Track> _tracks;
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
17 private readonly ICollection<Track> _newTracks = new List<Track>();
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
18
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
19 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
20 /// Título del evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
21 /// </summary>
63
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
22 public virtual string Titulo { get; private set; }
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
23
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
24 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
25 /// Fecha para la que se encuentra agendado el evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
26 /// </summary>
63
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
27 public virtual DateTime? Fecha { get; private set; }
70
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
28
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
29 /// <summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
30 /// Url con la invitacion realizada por el ponente (en la mayoria de los casos va a ser un link al thread de la lista de correo)
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
31 /// </summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
32 public virtual string UrlInvitacion { get; private set; }
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
33
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
34 /// <summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
35 /// Url a la pagina de la wiki con el video de la reunion virtual
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
36 /// </summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
37 public virtual string UrlWiki { get; private set; }
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
38
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
39 /// <summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
40 /// Numero de orden en el historico de reuniones virtuales
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
41 /// </summary>
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
42 public virtual short NumeroOrden { get; private set; }
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 63
diff changeset
43
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
44 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
45 /// Ponente o responsable del evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
46 /// </summary>
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
47 public virtual Persona Ponente { get; private set; }
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
48
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
49 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
50 /// Track de cambios que ha sufrido el evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
51 /// </summary>
63
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
52 public virtual IEnumerable<Track> Tracks
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
53 {
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
54 get { return _tracks; }
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
55 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
56
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
57 /// <summary>
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
58 /// Estado del evento en formato string (para persistencia a DB)
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
59 /// </summary>
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
60 public virtual string Estado
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
61 {
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
62 get
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
63 {
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
64 if (_eventoState != null)
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
65 return _eventoState.GetDescripcion();
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
66
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
67 return string.Empty;
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
68 }
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
69 set
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
70 {
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
71 if (value != Estado)
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
72 {
104
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
73 if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value))
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
74 _eventoState = EventoPropuestoState.GetInstance();
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
75 else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value))
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
76 _eventoState = EventoAgendadoState.GetInstance();
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
77 else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value))
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
78 _eventoState = EventoConfirmadoState.GetInstance();
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
79 else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value))
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
80 _eventoState = EventoPublicadoState.GetInstance();
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
81 else
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
82 throw new InvalidStateException(value);
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
83 }
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
84 }
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
85 }
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
86
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
87 private EventoState _eventoState;
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
88
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
89 /// <summary>
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
90 /// Obtiene una instancia de la clase que representa el estado del evento
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
91 /// </summary>
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
92 public virtual EventoState GetEstado()
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
93 {
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
94 if (_eventoState == null)
104
c5034884c7d7 refactor para que los estados sean singletons
jorge.rowies
parents: 103
diff changeset
95 SetEstado(EventoNullState.GetInstance());
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
96
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
97 return _eventoState;
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
98 }
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
99
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
100 /// <summary>
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
101 /// Asigna la instancia de la clase que representa el estado del evento
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
102 /// </summary>
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
103 /// <param name="eventoState">Instancia que representa el estado</param>
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
104 public virtual void SetEstado(EventoState eventoState)
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
105 {
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
106 _eventoState = eventoState;
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
107 }
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
108
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
109 #endregion
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
110
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
111 #region Acciones sobre el evento
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
112
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
113 /// <summary>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
114 /// Propone un evento
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
115 /// </summary>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
116 /// <param name="titulo">Título del evento propuesto</param>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
117 /// <param name="persona">Ponente para evento propuesto</param>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
118 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
119 /// <returns></returns>
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
120 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion)
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
121 {
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
122 var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion};
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
123 evento.GetEstado().Promover(evento, Accion.Proponer);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
124
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
125 return evento;
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
126 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
127
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
128 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
129 /// Agenda un evento que no estaba propuesto
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
130 /// </summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
131 /// <param name="titulo">Título del evento a agendar</param>
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
132 /// <param name="persona">Ponente para el evento</param>
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
133 /// <param name="fecha">Fecha de realización del evento</param>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
134 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
135 /// <returns></returns>
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
136 public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion)
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
137 {
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
138 var evento = new Evento { Titulo = titulo };
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
139 evento.Agendar(persona, fecha, urlInvitacion);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
140
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
141 return evento;
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
142 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
143
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
144 /// <summary>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
145 /// Agenda el evento actual
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
146 /// </summary>
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
147 /// <param name="persona">Ponente para el evento</param>
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
148 /// <param name="fecha">Fecha de realización del evento</param>
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
149 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
150 public virtual void Agendar(Persona persona, DateTime? fecha, string urlInvitacion)
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
151 {
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
152 Ponente = persona;
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
153 Fecha = fecha;
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
154 UrlInvitacion = urlInvitacion;
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
155 this.GetEstado().Promover(this, Accion.Agendar);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
156 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
157
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
158 public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
159 {
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
160 Ponente = persona;
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
161 Fecha = fecha;
79
8df9db937434 Url de invitación en la UI: validación y persistencia
nelopauselli
parents: 75
diff changeset
162 UrlInvitacion = urlInvitacion;
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
163
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
164 AddTrack(new Track(this, Accion.Modificar));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
165 }
41
07c47ea2ac00 movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents: 39
diff changeset
166
63
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
167 public virtual void CambiarTitulo(string titulo)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
168 {
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
169 Titulo = titulo;
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
170 AddTrack(new Track(this, Accion.CambiarTitulo));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
171 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
172
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
173 public virtual void Confirmar()
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
174 {
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
175 this.GetEstado().Promover(this, Accion.Confirmar);
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
176 }
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
177
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
178 public virtual void Publicar()
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
179 {
103
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
180 this.GetEstado().Promover(this, Accion.Publicar);
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
181 }
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
182
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
183 #endregion
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
184
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
185 protected internal virtual void AddTrack(Track track)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
186 {
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
187 _newTracks.Add(track);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
188 _tracks.Add(track);
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
189 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
190
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
191 public virtual IEnumerable<Track> GetTrackNews()
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
192 {
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
193 return _newTracks;
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
194 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
195 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
196 }