Mercurial > altnet-hispano
view Agendas/trunk/src/Agendas.Domain/Evento.cs @ 87:26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
Quitamos el concepto de Recordador ya que el mismo es un publicador, cuándo publicar es responsabilidad de cada publicador
author | nelopauselli |
---|---|
date | Fri, 27 May 2011 14:42:38 -0300 |
parents | c76661cff260 |
children | db4b1e2cae49 |
line wrap: on
line source
using System; using System.Collections.Generic; namespace AltNetHispano.Agendas.Domain { public class Evento : Identificable { protected Evento() { _tracks = new List<Track>(); } #region Propiedades del Evento private readonly IList<Track> _tracks; private Ponente _ponente; private readonly ICollection<Track> _newTracks = new List<Track>(); /// <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> /// 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) /// </summary> public virtual string UrlInvitacion { get; private set; } /// <summary> /// Url a la pagina de la wiki con el video de la reunion virtual /// </summary> public virtual string UrlWiki { get; private set; } /// <summary> /// Numero de orden en el historico de reuniones virtuales /// </summary> public virtual short NumeroOrden { get; private set; } /// <summary> /// Ponente o responsable del evento /// </summary> public virtual Ponente Ponente { get { return _ponente; } private set { if (value == null && _ponente != null || value != _ponente && _ponente != null) _ponente.RemoveEvento(this); if (value != null) value.AddEvento(this); _ponente = value; } } /// <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, string urlInvitacion) { var evento = new Evento {Titulo = titulo, Ponente = ponente, UrlInvitacion = urlInvitacion}; evento.AddTrack(new Track(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="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; AddTrack(new Track(this, Accion.Agendar)); } public virtual void Actualizar(Ponente ponente, DateTime? fecha, string urlInvitacion) { Ponente = ponente; Fecha = fecha; UrlInvitacion = urlInvitacion; AddTrack(new Track(this, Accion.Modificar)); } public virtual void CambiarTitulo(string titulo) { Titulo = titulo; AddTrack(new Track(this, Accion.CambiarTitulo)); } public virtual void Confirmar() { AddTrack(new Track(this, Accion.Confirmar)); } public virtual void Publicar() { AddTrack(new Track(this, Accion.Publicar)); } #endregion private void AddTrack(Track track) { _newTracks.Add(track); _tracks.Add(track); } public virtual IEnumerable<Track> GetTrackNews() { return _newTracks; } } }