Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Domain/Evento.cs @ 133:6f1041301797
Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
Falta solucionar problema con flujo, ver más información en el ticket de assembla.
http://www.assembla.com/spaces/altnet-hispano/tickets/146-implementar-estado-descartar-y-cancelar-de-eventos
author | alabra |
---|---|
date | Sun, 10 Jul 2011 23:59:19 -0400 |
parents | 90ce239cfa6d |
children | 62791999ad01 |
comparison
equal
deleted
inserted
replaced
132:45be716763c3 | 133:6f1041301797 |
---|---|
52 public virtual IEnumerable<Track> Tracks | 52 public virtual IEnumerable<Track> Tracks |
53 { | 53 { |
54 get { return _tracks; } | 54 get { return _tracks; } |
55 } | 55 } |
56 | 56 |
57 /// <summary> | 57 /// <summary> |
58 /// Estado del evento en formato string (para persistencia a DB) | 58 /// Estado del evento en formato string (para persistencia a DB) |
59 /// </summary> | 59 /// </summary> |
60 public virtual string Estado | 60 public virtual string Estado |
61 { | 61 { |
62 get | 62 get |
63 { | 63 { |
64 if (_eventoState != null) | 64 if (_eventoState != null) |
65 return _eventoState.GetDescripcion(); | 65 return _eventoState.GetDescripcion(); |
66 | 66 |
67 return string.Empty; | 67 return string.Empty; |
68 } | 68 } |
69 set | 69 set |
70 { | 70 { |
71 if (value != Estado) | 71 if (value != Estado) |
72 { | 72 { |
73 if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value)) | 73 if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value)) |
74 _eventoState = EventoPropuestoState.GetInstance(); | 74 _eventoState = EventoPropuestoState.GetInstance(); |
75 else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value)) | 75 else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value)) |
76 _eventoState = EventoAgendadoState.GetInstance(); | 76 _eventoState = EventoAgendadoState.GetInstance(); |
77 else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value)) | 77 else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value)) |
78 _eventoState = EventoConfirmadoState.GetInstance(); | 78 _eventoState = EventoConfirmadoState.GetInstance(); |
79 else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value)) | 79 else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value)) |
80 _eventoState = EventoPublicadoState.GetInstance(); | 80 _eventoState = EventoPublicadoState.GetInstance(); |
81 else | 81 else if (EventoCanceladoState.GetInstance().GetDescripcion().Equals(value)) |
82 throw new InvalidStateException(value); | 82 _eventoState = EventoCanceladoState.GetInstance(); |
83 } | 83 else if (EventoDescartadoState.GetInstance().GetDescripcion().Equals(value)) |
84 } | 84 _eventoState = EventoDescartadoState.GetInstance(); |
85 } | 85 else |
86 | 86 throw new InvalidStateException(value); |
87 private EventoState _eventoState; | 87 } |
88 } | |
89 } | |
90 | |
91 private EventoState _eventoState; | |
88 | 92 |
89 /// <summary> | 93 /// <summary> |
90 /// Obtiene una instancia de la clase que representa el estado del evento | 94 /// Obtiene una instancia de la clase que representa el estado del evento |
91 /// </summary> | 95 /// </summary> |
92 public virtual EventoState GetEstado() | 96 public virtual EventoState GetEstado() |
110 | 114 |
111 #endregion | 115 #endregion |
112 | 116 |
113 #region Acciones sobre el evento | 117 #region Acciones sobre el evento |
114 | 118 |
115 /// <summary> | 119 /// <summary> |
116 /// Propone un evento | 120 /// Propone un evento |
117 /// </summary> | 121 /// </summary> |
118 /// <param name="titulo">Título del evento propuesto</param> | 122 /// <param name="titulo">Título del evento propuesto</param> |
119 /// <param name="persona">Ponente para evento propuesto</param> | 123 /// <param name="persona">Ponente para evento propuesto</param> |
120 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> | 124 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
121 /// <param name="tipo">Tipo del evento</param> | 125 /// <param name="tipo">Tipo del evento</param> |
122 /// <returns></returns> | 126 /// <returns></returns> |
123 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) | 127 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) |
124 { | 128 { |
125 var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo}; | 129 var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo}; |
126 evento.GetEstado().Promover(evento, Accion.Proponer); | 130 evento.GetEstado().Promover(evento, Accion.Proponer); |
127 | 131 |
128 return evento; | 132 return evento; |
129 } | 133 } |
130 | 134 |
131 /// <summary> | 135 /// <summary> |
132 /// Agenda un evento que no estaba propuesto | 136 /// Agenda un evento que no estaba propuesto |
133 /// </summary> | 137 /// </summary> |
134 /// <param name="titulo">Título del evento a agendar</param> | 138 /// <param name="titulo">Título del evento a agendar</param> |
135 /// <param name="persona">Ponente para el evento</param> | 139 /// <param name="persona">Ponente para el evento</param> |
136 /// <param name="fecha">Fecha de realización del evento</param> | 140 /// <param name="fecha">Fecha de realización del evento</param> |
137 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> | 141 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
138 /// <param name="tipo">Tipo del evento</param> | 142 /// <param name="tipo">Tipo del evento</param> |
139 /// <returns></returns> | 143 /// <returns></returns> |
140 public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo) | 144 public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo) |
141 { | 145 { |
142 var evento = new Evento {Titulo = titulo, Tipo = tipo}; | 146 var evento = new Evento {Titulo = titulo, Tipo = tipo}; |
143 evento.Agendar(persona, fecha, urlInvitacion); | 147 evento.Agendar(persona, fecha, urlInvitacion); |
144 | 148 |
145 return evento; | 149 return evento; |
146 } | 150 } |
147 | 151 |
148 /// <summary> | 152 /// <summary> |
149 /// Agenda el evento actual | 153 /// Agenda el evento actual |
150 /// </summary> | 154 /// </summary> |
151 /// <param name="persona">Ponente para el evento</param> | 155 /// <param name="persona">Ponente para el evento</param> |
152 /// <param name="fecha">Fecha de realización del evento</param> | 156 /// <param name="fecha">Fecha de realización del evento</param> |
153 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> | 157 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
154 public virtual void Agendar(Persona persona, DateTime? fecha, string urlInvitacion) | 158 public virtual void Agendar(Persona persona, DateTime? fecha, string urlInvitacion) |
155 { | 159 { |
156 Ponente = persona; | 160 Ponente = persona; |
157 Fecha = fecha; | 161 Fecha = fecha; |
158 UrlInvitacion = urlInvitacion; | 162 UrlInvitacion = urlInvitacion; |
159 this.GetEstado().Promover(this, Accion.Agendar); | 163 this.GetEstado().Promover(this, Accion.Agendar); |
160 } | 164 } |
161 | 165 |
162 public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion) | 166 public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion) |
163 { | 167 { |
164 Ponente = persona; | 168 Ponente = persona; |
166 UrlInvitacion = urlInvitacion; | 170 UrlInvitacion = urlInvitacion; |
167 | 171 |
168 AddTrack(new Track(this, Accion.Modificar)); | 172 AddTrack(new Track(this, Accion.Modificar)); |
169 } | 173 } |
170 | 174 |
171 public virtual void CambiarTitulo(string titulo) | 175 public virtual void CambiarTitulo(string titulo) |
172 { | 176 { |
173 Titulo = titulo; | 177 Titulo = titulo; |
174 AddTrack(new Track(this, Accion.CambiarTitulo)); | 178 AddTrack(new Track(this, Accion.CambiarTitulo)); |
175 } | 179 } |
176 | 180 |
177 public virtual void Confirmar() | 181 public virtual void Confirmar() |
178 { | 182 { |
179 this.GetEstado().Promover(this, Accion.Confirmar); | 183 this.GetEstado().Promover(this, Accion.Confirmar); |
180 } | 184 } |
181 | 185 |
182 public virtual void Publicar(short numeroOrden, string urlWiki) | 186 public virtual void Publicar(short numeroOrden, string urlWiki) |
183 { | 187 { |
184 this.NumeroOrden = numeroOrden; | 188 this.NumeroOrden = numeroOrden; |
185 this.UrlWiki = urlWiki; | 189 this.UrlWiki = urlWiki; |
186 this.GetEstado().Promover(this, Accion.Publicar); | 190 this.GetEstado().Promover(this, Accion.Publicar); |
187 } | 191 } |
188 | 192 |
189 #endregion | 193 public virtual void Cancelar() |
194 { | |
195 GetEstado().Promover(this, Accion.Cancelar); | |
196 } | |
197 | |
198 public virtual void Descartar() | |
199 { | |
200 GetEstado().Promover(this, Accion.Descartar); | |
201 } | |
202 | |
203 public virtual void ReProponer() | |
204 { | |
205 GetEstado().Promover(this, Accion.ReProponer); | |
206 } | |
207 | |
208 public virtual void ReAgendar() | |
209 { | |
210 GetEstado().Promover(this, Accion.ReAgendar); | |
211 } | |
212 #endregion | |
190 | 213 |
191 protected internal virtual void AddTrack(Track track) | 214 protected internal virtual void AddTrack(Track track) |
192 { | 215 { |
193 _newTracks.Add(track); | 216 _newTracks.Add(track); |
194 _tracks.Add(track); | 217 _tracks.Add(track); |
195 } | 218 } |
196 | 219 |
197 public virtual IEnumerable<Track> GetTrackNews() | 220 public virtual IEnumerable<Track> GetTrackNews() |
198 { | 221 { |
199 return _newTracks; | 222 return _newTracks; |
200 } | 223 } |
201 } | 224 } |
202 } | 225 } |