Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Evento.cs @ 74:bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
(https://www.assembla.com/spaces/altnet-hispano/wiki/Estados_de_un_evento)
author | nelopauselli |
---|---|
date | Mon, 23 May 2011 20:13:37 -0300 |
parents | 76567a0d1e44 |
children | 96d7609f2e08 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 23 19:54:05 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Evento.cs Mon May 23 20:13:37 2011 -0300 @@ -5,32 +5,24 @@ { public class Evento : Identificable { - private readonly IList<Track> _tracks; - private IList<string> _enlaces; - - public static Evento Proponer(string titulo, Ponente ponente) - { - var evento = new Evento { Titulo = titulo, Ponente = ponente }; - evento.AddTracks(new Track(Accion.Proponer)); - - return evento; - } - - public static Evento Publicar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) - { - var evento = new Evento { Titulo = titulo }; - evento.Publicar(ponente, fecha, urlInvitacion); - - return evento; - } - protected Evento() { - _enlaces = new List<string>(); _tracks = new List<Track>(); } + #region Propiedades del Evento + + private readonly IList<Track> _tracks; + private Ponente _ponente; + + /// <summary> + /// Título del evento + /// </summary> public virtual string Titulo { get; private set; } + + /// <summary> + /// Fecha para la que se encuentra agendado el evento + /// </summary> public virtual DateTime? Fecha { get; private set; } /// <summary> @@ -48,7 +40,9 @@ /// </summary> public virtual short NumeroOrden { get; private set; } - private Ponente _ponente; + /// <summary> + /// Ponente o responsable del evento + /// </summary> public virtual Ponente Ponente { get { return _ponente; } @@ -62,11 +56,62 @@ } } + /// <summary> + /// Track de cambios que ha sufrido el evento + /// </summary> public virtual IEnumerable<Track> Tracks { get { return _tracks; } } + #endregion + + #region Acciones sobre el evento + + /// <summary> + /// Propone un evento + /// </summary> + /// <param name="titulo">Título del evento propuesto</param> + /// <param name="ponente">Ponente para evento propuesto</param> + /// <returns></returns> + public static Evento Proponer(string titulo, Ponente ponente) + { + var evento = new Evento { Titulo = titulo, Ponente = ponente }; + evento.AddTracks(new Track(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="ponente">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> + /// <returns></returns> + public static Evento Agendar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) + { + var evento = new Evento { Titulo = titulo }; + evento.Agendar(ponente, fecha, urlInvitacion); + + return evento; + } + + /// <summary> + /// Agenda el evento actual + /// </summary> + /// <param name="ponente">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> + public virtual void Agendar(Ponente ponente, DateTime? fecha, string urlInvitacion) + { + Ponente = ponente; + Fecha = fecha; + UrlInvitacion = urlInvitacion; + AddTracks(new Track(Accion.Agendar)); + } + public virtual void Actualizar(Ponente ponente, DateTime? fecha) { Ponente = ponente; @@ -81,13 +126,7 @@ AddTracks(new Track(Accion.CambiarTitulo)); } - public virtual void Publicar(Ponente ponente, DateTime? fecha, string urlInvitacion) - { - Ponente = ponente; - Fecha = fecha; - UrlInvitacion = urlInvitacion; - AddTracks(new Track(Accion.Publicar)); - } + #endregion private void AddTracks(Track track) {