view Agendas/trunk/src/Agendas.Domain/Evento.cs @ 56:65bbcdd5d357

Pasando la responsabilidad de generar el Id al repositorio
author nelopauselli
date Mon, 16 May 2011 20:15:05 -0300
parents 3059a5f8930f
children 3d9e6d56d903
line wrap: on
line source

using System;
using System.Collections.Generic;

namespace AltNetHispano.Agendas.Domain
{
	public class Evento : Identificable
	{
		private readonly IList<Track> _tracks;
		private IList<string> _enlaces;

		public Evento(string titulo)
		{
			Titulo = titulo;

			_enlaces = new List<string>();
			_tracks = new List<Track>();
		}

		public string Titulo { get; private set; }
		public DateTime? Fecha { get; private set; }
		public string Sintesis { get; private set; }
		public Ponente Ponente { get; private set; }
		protected string Usuario { get; private set; }

		public IEnumerable<string> Enlaces
		{
			get { return _enlaces; }
		}

		public IEnumerable<Track> Tracks
		{
			get { return _tracks; }
		}

		public void Actualizar(Ponente ponente, DateTime? fecha)
		{
			Usuario = IdentityContext.GetUserName();
			Ponente = ponente;
			Fecha = fecha;

			AddTracks(new Track(Accion.Modificar));
		}

		public void Actualizar(Ponente ponente)
		{
			Usuario = IdentityContext.GetUserName();
			Ponente = ponente;
		}

		public void CambiarTitulo(string titulo)
		{
			Usuario = IdentityContext.GetUserName();
			Titulo = titulo;
			AddTracks(new Track(Accion.CambiarTitulo));
		}

		public void Publicar(Ponente ponente, DateTime? fecha)
		{
			Usuario = IdentityContext.GetUserName();
			Ponente = ponente;
			Fecha = fecha;
			AddTracks(new Track(Accion.Publicar));
		}

		public void Realizado(DateTime fecha, string sintesis, IList<string> enlaces)
		{
			Usuario = IdentityContext.GetUserName();
			Fecha = fecha;
			Sintesis = sintesis;
			_enlaces = enlaces;
		}

		public void Realizado(string sintesis)
		{
			Usuario = IdentityContext.GetUserName();
			Sintesis = sintesis;
			AddTracks(new Track(Accion.Realizar));
		}

		private void AddTracks(Track track)
		{
			_tracks.Add(track);
		}
	}

	public class Track
	{
		public Track(string accion)
		{
			Accion = accion;
		}

		public string Accion { get; private set; }
	}

	public class Accion
	{
		public const string Publicar = "Publicar";
		public const string Modificar = "Modificar";
		public const string CambiarTitulo = "CambiarTitulo";
		public const string Realizar = "Realizar";
	}
}