view Agendas/trunk/src/Agendas.Domain/Evento.cs @ 42:d18d40f49439

Mi comentario
author Daniel@DYD00
date Sat, 19 Mar 2011 15:37:57 -0300
parents 07c47ea2ac00
children 3ebe89c88caa
line wrap: on
line source

using System;
using System.Collections.Generic;

namespace AltNetHispano.Agendas.Domain
{
	public class Evento
	{
	    public Evento(string titulo)
	    {
	        Id = Guid.NewGuid();
	        Titulo = titulo;

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

	    public Guid Id { get; private set; }
		public string Titulo { get; private set; }
		public DateTime? Fecha { get; private set; }
		public string Sintesis { get; private set; }
        public Ponente Ponente { get; private set; }

	    private IList<string> _enlaces;

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

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

	    public void Actualizar(Ponente ponente, DateTime? fecha)
	    {
            Ponente = ponente;
	        Fecha = fecha;

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

	    public void Actualizar(Ponente ponente)
	    {
	        Ponente = ponente;
	    }

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

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

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

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

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

    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";
    }
}