comparison Agendas/trunk/src/Agendas.Domain/Evento.cs @ 139:18e5a78186e4

Corrección de virtual y visibilidad de los métodos por nh
author nelopauselli
date Thu, 28 Jul 2011 10:16:09 -0300
parents 62791999ad01
children 3639803112c6
comparison
equal deleted inserted replaced
138:62791999ad01 139:18e5a78186e4
8 public class Evento : Identificable 8 public class Evento : Identificable
9 { 9 {
10 protected Evento() 10 protected Evento()
11 { 11 {
12 _tracks = new List<Track>(); 12 _tracks = new List<Track>();
13 _patrocinadores=new List<Patrocinador>(); 13 _patrocinadores = new List<Patrocinador>();
14 } 14 }
15 15
16 #region Propiedades del Evento 16 #region Propiedades del Evento
17 17
18 private readonly IList<Track> _tracks; 18 private readonly IList<Track> _tracks;
54 public virtual IEnumerable<Track> Tracks 54 public virtual IEnumerable<Track> Tracks
55 { 55 {
56 get { return _tracks; } 56 get { return _tracks; }
57 } 57 }
58 58
59 /// <summary> 59 /// <summary>
60 /// Estado del evento en formato string (para persistencia a DB) 60 /// Estado del evento en formato string (para persistencia a DB)
61 /// </summary> 61 /// </summary>
62 public virtual string Estado 62 public virtual string Estado
63 { 63 {
64 get 64 get
65 { 65 {
66 if (_eventoState != null) 66 if (_eventoState != null)
67 return _eventoState.GetDescripcion(); 67 return _eventoState.GetDescripcion();
68 68
69 return string.Empty; 69 return string.Empty;
70 } 70 }
71 set 71 set
72 { 72 {
73 if (value != Estado) 73 if (value != Estado)
74 { 74 {
75 if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value)) 75 if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value))
76 _eventoState = EventoPropuestoState.GetInstance(); 76 _eventoState = EventoPropuestoState.GetInstance();
77 else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value)) 77 else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value))
78 _eventoState = EventoAgendadoState.GetInstance(); 78 _eventoState = EventoAgendadoState.GetInstance();
79 else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value)) 79 else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value))
80 _eventoState = EventoConfirmadoState.GetInstance(); 80 _eventoState = EventoConfirmadoState.GetInstance();
81 else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value)) 81 else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value))
82 _eventoState = EventoPublicadoState.GetInstance(); 82 _eventoState = EventoPublicadoState.GetInstance();
83 else if (EventoCanceladoState.GetInstance().GetDescripcion().Equals(value)) 83 else if (EventoCanceladoState.GetInstance().GetDescripcion().Equals(value))
84 _eventoState = EventoCanceladoState.GetInstance(); 84 _eventoState = EventoCanceladoState.GetInstance();
85 else if (EventoDescartadoState.GetInstance().GetDescripcion().Equals(value)) 85 else if (EventoDescartadoState.GetInstance().GetDescripcion().Equals(value))
86 _eventoState = EventoDescartadoState.GetInstance(); 86 _eventoState = EventoDescartadoState.GetInstance();
87 else 87 else
88 throw new InvalidStateException(value); 88 throw new InvalidStateException(value);
89 } 89 }
90 } 90 }
91 } 91 }
92 92
93 private EventoState _eventoState; 93 private EventoState _eventoState;
94 private IList<Patrocinador> _patrocinadores; 94 private IList<Patrocinador> _patrocinadores;
95 95
96 /// <summary> 96 /// <summary>
97 /// Obtiene una instancia de la clase que representa el estado del evento 97 /// Obtiene una instancia de la clase que representa el estado del evento
98 /// </summary> 98 /// </summary>
99 public virtual EventoState GetEstado() 99 public virtual EventoState GetEstado()
100 { 100 {
101 if (_eventoState == null) 101 if (_eventoState == null)
102 SetEstado(EventoNullState.GetInstance()); 102 SetEstado(EventoNullState.GetInstance());
103 103
104 return _eventoState; 104 return _eventoState;
105 } 105 }
106 106
107 /// <summary> 107 /// <summary>
108 /// Asigna la instancia de la clase que representa el estado del evento 108 /// Asigna la instancia de la clase que representa el estado del evento
109 /// </summary> 109 /// </summary>
110 /// <param name="eventoState">Instancia que representa el estado</param> 110 /// <param name="eventoState">Instancia que representa el estado</param>
111 public virtual void SetEstado(EventoState eventoState) 111 public virtual void SetEstado(EventoState eventoState)
112 { 112 {
113 _eventoState = eventoState; 113 _eventoState = eventoState;
114 } 114 }
115 115
116 public virtual TipoEvento Tipo { get; private set; } 116 public virtual TipoEvento Tipo { get; private set; }
117 117
118 public IEnumerable<Patrocinador> Patrocinadores 118 public virtual IEnumerable<Patrocinador> Patrocinadores
119 { 119 {
120 get { 120 get
121 {
121 return _patrocinadores; 122 return _patrocinadores;
122 } 123 }
123 } 124 }
124 125
125 internal virtual void AddPatrocinador(Patrocinador patrocinador) 126 protected internal virtual void AddPatrocinador(Patrocinador patrocinador)
126 { 127 {
127 _patrocinadores.Add(patrocinador); 128 _patrocinadores.Add(patrocinador);
128 } 129 }
129 130
130 internal virtual void RemovePatrocinador(Patrocinador patrocinador) 131 protected internal virtual void RemovePatrocinador(Patrocinador patrocinador)
131 { 132 {
132 _patrocinadores.Remove(patrocinador); 133 _patrocinadores.Remove(patrocinador);
133 } 134 }
134 135
135 136
136 #endregion 137 #endregion
137 138
138 #region Acciones sobre el evento 139 #region Acciones sobre el evento
139 140
140 /// <summary> 141 /// <summary>
141 /// Propone un evento 142 /// Propone un evento
142 /// </summary> 143 /// </summary>
143 /// <param name="titulo">Título del evento propuesto</param> 144 /// <param name="titulo">Título del evento propuesto</param>
144 /// <param name="persona">Ponente para evento propuesto</param> 145 /// <param name="persona">Ponente para evento propuesto</param>
145 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 146 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
146 /// <param name="tipo">Tipo del evento</param> 147 /// <param name="tipo">Tipo del evento</param>
147 /// <returns></returns> 148 /// <returns></returns>
148 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) 149 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo)
149 { 150 {
150 var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo}; 151 var evento = new Evento { Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo };
151 evento.GetEstado().Promover(evento, Accion.Proponer); 152 evento.GetEstado().Promover(evento, Accion.Proponer);
152 153
153 return evento; 154 return evento;
154 } 155 }
155 156
156 /// <summary> 157 /// <summary>
157 /// Agenda un evento que no estaba propuesto 158 /// Agenda un evento que no estaba propuesto
158 /// </summary> 159 /// </summary>
159 /// <param name="titulo">Título del evento a agendar</param> 160 /// <param name="titulo">Título del evento a agendar</param>
160 /// <param name="persona">Ponente para el evento</param> 161 /// <param name="persona">Ponente para el evento</param>
161 /// <param name="fecha">Fecha de realización del evento</param> 162 /// <param name="fecha">Fecha de realización del evento</param>
162 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 163 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
163 /// <param name="tipo">Tipo del evento</param> 164 /// <param name="tipo">Tipo del evento</param>
164 /// <returns></returns> 165 /// <returns></returns>
165 public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo) 166 public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo)
166 { 167 {
167 var evento = new Evento {Titulo = titulo, Tipo = tipo}; 168 var evento = new Evento { Titulo = titulo, Tipo = tipo };
168 evento.Agendar(persona, fecha, urlInvitacion); 169 evento.Agendar(persona, fecha, urlInvitacion);
169 170
170 return evento; 171 return evento;
171 } 172 }
172 173
173 /// <summary> 174 /// <summary>
174 /// Agenda el evento actual 175 /// Agenda el evento actual
175 /// </summary> 176 /// </summary>
176 /// <param name="persona">Ponente para el evento</param> 177 /// <param name="persona">Ponente para el evento</param>
177 /// <param name="fecha">Fecha de realización del evento</param> 178 /// <param name="fecha">Fecha de realización del evento</param>
178 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 179 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
179 public virtual void Agendar(Persona persona, DateTime? fecha, string urlInvitacion) 180 public virtual void Agendar(Persona persona, DateTime? fecha, string urlInvitacion)
180 { 181 {
181 Ponente = persona; 182 Ponente = persona;
182 Fecha = fecha; 183 Fecha = fecha;
183 UrlInvitacion = urlInvitacion; 184 UrlInvitacion = urlInvitacion;
184 this.GetEstado().Promover(this, Accion.Agendar); 185 this.GetEstado().Promover(this, Accion.Agendar);
185 } 186 }
186 187
187 public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion) 188 public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion)
188 { 189 {
189 Ponente = persona; 190 Ponente = persona;
191 UrlInvitacion = urlInvitacion; 192 UrlInvitacion = urlInvitacion;
192 193
193 AddTrack(new Track(this, Accion.Modificar)); 194 AddTrack(new Track(this, Accion.Modificar));
194 } 195 }
195 196
196 public virtual void CambiarTitulo(string titulo) 197 public virtual void CambiarTitulo(string titulo)
197 { 198 {
198 Titulo = titulo; 199 Titulo = titulo;
199 AddTrack(new Track(this, Accion.CambiarTitulo)); 200 AddTrack(new Track(this, Accion.CambiarTitulo));
200 } 201 }
201 202
202 public virtual void Confirmar() 203 public virtual void Confirmar()
203 { 204 {
204 this.GetEstado().Promover(this, Accion.Confirmar); 205 this.GetEstado().Promover(this, Accion.Confirmar);
205 } 206 }
206 207
207 public virtual void Publicar(short numeroOrden, string urlWiki) 208 public virtual void Publicar(short numeroOrden, string urlWiki)
208 { 209 {
209 this.NumeroOrden = numeroOrden; 210 this.NumeroOrden = numeroOrden;
210 this.UrlWiki = urlWiki; 211 this.UrlWiki = urlWiki;
211 this.GetEstado().Promover(this, Accion.Publicar); 212 this.GetEstado().Promover(this, Accion.Publicar);
212 } 213 }
213 214
214 public virtual void Cancelar() 215 public virtual void Cancelar()
215 { 216 {
216 GetEstado().Promover(this, Accion.Cancelar); 217 GetEstado().Promover(this, Accion.Cancelar);
217 } 218 }
218 219
219 public virtual void Descartar() 220 public virtual void Descartar()
220 { 221 {
221 GetEstado().Promover(this, Accion.Descartar); 222 GetEstado().Promover(this, Accion.Descartar);
222 } 223 }
223 224
224 public virtual void ReProponer() 225 public virtual void ReProponer()
225 { 226 {
226 GetEstado().Promover(this, Accion.ReProponer); 227 GetEstado().Promover(this, Accion.ReProponer);
227 } 228 }
228 229
229 public virtual void ReAgendar() 230 public virtual void ReAgendar()
230 { 231 {
231 GetEstado().Promover(this, Accion.ReAgendar); 232 GetEstado().Promover(this, Accion.ReAgendar);
232 } 233 }
233 #endregion 234 #endregion
234 235
235 protected internal virtual void AddTrack(Track track) 236 protected internal virtual void AddTrack(Track track)
236 { 237 {
237 _newTracks.Add(track); 238 _newTracks.Add(track);
238 _tracks.Add(track); 239 _tracks.Add(track);
239 } 240 }
240 241
241 public virtual IEnumerable<Track> GetTrackNews() 242 public virtual IEnumerable<Track> GetTrackNews()
242 { 243 {
243 return _newTracks; 244 return _newTracks;
244 } 245 }
245 } 246 }
246 } 247 }