diff 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
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs	Sun Jul 10 23:55:56 2011 -0400
+++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs	Sun Jul 10 23:59:19 2011 -0400
@@ -54,37 +54,41 @@
 			get { return _tracks; }
 		}
 
-    /// <summary>
-    /// Estado del evento en formato string (para persistencia a DB)
-    /// </summary>
-	  public virtual string Estado
-	  {
-      get
-      {
-        if (_eventoState != null)
-          return _eventoState.GetDescripcion();
+	    /// <summary>
+	    /// Estado del evento en formato string (para persistencia a DB)
+	    /// </summary>
+	    public virtual string Estado
+	    {
+	        get
+	        {
+	            if (_eventoState != null)
+	                return _eventoState.GetDescripcion();
 
-        return string.Empty;
-      }
-	    set
-      {
-        if (value != Estado)
-        {
-          if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value))
-            _eventoState = EventoPropuestoState.GetInstance();
-          else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value))
-            _eventoState = EventoAgendadoState.GetInstance();
-          else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value))
-            _eventoState = EventoConfirmadoState.GetInstance();
-          else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value))
-            _eventoState = EventoPublicadoState.GetInstance();
-          else
-            throw new InvalidStateException(value);
-        }
-      }
-	  }
+	            return string.Empty;
+	        }
+	        set
+	        {
+	            if (value != Estado)
+	            {
+                    if (EventoPropuestoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoPropuestoState.GetInstance();
+                    else if (EventoAgendadoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoAgendadoState.GetInstance();
+                    else if (EventoConfirmadoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoConfirmadoState.GetInstance();
+                    else if (EventoPublicadoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoPublicadoState.GetInstance();
+                    else if (EventoCanceladoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoCanceladoState.GetInstance();
+                    else if (EventoDescartadoState.GetInstance().GetDescripcion().Equals(value))
+                        _eventoState = EventoDescartadoState.GetInstance();
+                    else
+                        throw new InvalidStateException(value);
+	            }
+	        }
+	    }
 
-	  private EventoState _eventoState;
+	    private EventoState _eventoState;
 
 	  /// <summary>
     /// Obtiene una instancia de la clase que representa el estado del evento
@@ -112,40 +116,40 @@
 
 		#region Acciones sobre el evento
 
-	  /// <summary>
-	  /// Propone un evento
-	  /// </summary>
-	  /// <param name="titulo">Título del evento propuesto</param>
-	  /// <param name="persona">Ponente para evento propuesto</param>
-	  /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
-	  /// <param name="tipo">Tipo del evento</param>
-	  /// <returns></returns>
-	  public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo)
+	    /// <summary>
+	    /// Propone un evento
+	    /// </summary>
+	    /// <param name="titulo">Título del evento propuesto</param>
+	    /// <param name="persona">Ponente para evento propuesto</param>
+	    /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
+	    /// <param name="tipo">Tipo del evento</param>
+	    /// <returns></returns>
+	    public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo)
 		{
 			var evento = new Evento {Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo};
-      evento.GetEstado().Promover(evento, Accion.Proponer);
+            evento.GetEstado().Promover(evento, Accion.Proponer);
 
 			return evento;
 		}
 
-	  /// <summary>
-	  /// Agenda un evento que no estaba propuesto
-	  /// </summary>
-	  /// <param name="titulo">Título del evento a agendar</param>
-	  /// <param name="persona">Ponente para el evento</param>
-	  /// <param name="fecha">Fecha de realización del evento</param>
-	  /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
-    /// <param name="tipo">Tipo del evento</param>
-    /// <returns></returns>
-	  public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo)
-	  {
-	    var evento = new Evento {Titulo = titulo, Tipo = tipo};
-      evento.Agendar(persona, fecha, urlInvitacion);
+	    /// <summary>
+	    /// Agenda un evento que no estaba propuesto
+	    /// </summary>
+	    /// <param name="titulo">Título del evento a agendar</param>
+	    /// <param name="persona">Ponente para el evento</param>
+	    /// <param name="fecha">Fecha de realización del evento</param>
+	    /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
+        /// <param name="tipo">Tipo del evento</param>
+        /// <returns></returns>
+        public static Evento Agendar(string titulo, Persona persona, DateTime fecha, string urlInvitacion, TipoEvento tipo)
+        {
+	        var evento = new Evento {Titulo = titulo, Tipo = tipo};
+	        evento.Agendar(persona, fecha, urlInvitacion);
 
-			return evento;
-		}
+	        return evento;
+        }
 
-		/// <summary>
+	    /// <summary>
 		/// Agenda el evento actual
 		/// </summary>
 		/// <param name="persona">Ponente para el evento</param>
@@ -156,7 +160,7 @@
 			Ponente = persona;
 			Fecha = fecha;
 			UrlInvitacion = urlInvitacion;
-      this.GetEstado().Promover(this, Accion.Agendar);
+            this.GetEstado().Promover(this, Accion.Agendar);
 		}
 
 		public virtual void Actualizar(Persona persona, DateTime? fecha, string urlInvitacion)
@@ -168,25 +172,44 @@
 			AddTrack(new Track(this, Accion.Modificar));
 		}
 
-		public virtual void CambiarTitulo(string titulo)
+        public virtual void CambiarTitulo(string titulo)
+        {
+            Titulo = titulo;
+            AddTrack(new Track(this, Accion.CambiarTitulo));
+        }
+
+	    public virtual void Confirmar()
 		{
-			Titulo = titulo;
-			AddTrack(new Track(this, Accion.CambiarTitulo));
+            this.GetEstado().Promover(this, Accion.Confirmar);
+		}
+
+        public virtual void Publicar(short numeroOrden, string urlWiki)
+        {
+            this.NumeroOrden = numeroOrden;
+            this.UrlWiki = urlWiki;
+            this.GetEstado().Promover(this, Accion.Publicar);
 		}
 
-		public virtual void Confirmar()
-		{
-      this.GetEstado().Promover(this, Accion.Confirmar);
-		}
+        public virtual void Cancelar()
+        {
+            GetEstado().Promover(this, Accion.Cancelar);
+        }
+
+        public virtual void Descartar()
+        {
+            GetEstado().Promover(this, Accion.Descartar);
+        }
 
-    public virtual void Publicar(short numeroOrden, string urlWiki)
-    {
-      this.NumeroOrden = numeroOrden;
-      this.UrlWiki = urlWiki;
-      this.GetEstado().Promover(this, Accion.Publicar);
-		}
+        public virtual void ReProponer()
+        {
+            GetEstado().Promover(this, Accion.ReProponer);
+        }
 
-		#endregion
+        public virtual void ReAgendar()
+        {
+            GetEstado().Promover(this, Accion.ReAgendar);
+        }
+	    #endregion
 
 		protected internal virtual void AddTrack(Track track)
 		{
@@ -194,9 +217,9 @@
 			_tracks.Add(track);
 		}
 
-		public virtual IEnumerable<Track> GetTrackNews()
-		{
-			return _newTracks;
-		}
+        public virtual IEnumerable<Track> GetTrackNews()
+        {
+            return _newTracks;
+        }
 	}
 }
\ No newline at end of file