view Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 4:49b572535156

proponer van publicar van propuesta comportamiento ante excepcion en publicador
author nelopauselli
date Tue, 08 Feb 2011 00:08:49 -0300
parents 5f007e266509
children 2912c1dd0e6b
line wrap: on
line source

using System;
using System.Collections.Generic;
using AltNetHispano.Agendas.Domain.Exceptions;

namespace AltNetHispano.Agendas.Domain
{
	public class Agenda
	{
		private readonly IList<Evento> _eventos;
		private readonly IPublicador _publicador;
		private readonly IRecordador _recordador;

		public Agenda(IPublicador publicador, IRecordador recordador)
		{
			_publicador = publicador;
			_recordador = recordador;
			_eventos = new List<Evento>();
		}

		public Guid Id { get; set; }

		public IEnumerable<Evento> Eventos
		{
			get { return _eventos; }
		}

		public void Publicar(Evento evento)
		{
			if (!evento.Fecha.HasValue)
				throw new ValidationException();
			
			if (_publicador != null)
				_publicador.Publicar(evento);
			_eventos.Add(evento);
		}

		public void Publicar(Van van)
		{
			if (string.IsNullOrWhiteSpace(van.Ponente))
				throw new ValidationException();
			Publicar(van as Evento);
		}


		public void Recordar(Evento evento)
		{
			if (_recordador != null)
				_recordador.Recordar(evento);
		}

		public void Proponer(Van van)
		{
			if (string.IsNullOrWhiteSpace(van.Titulo))
				throw new ValidationException();
			_eventos.Add(van);
		}

		public IList<Evento> GetEventosPropuestos()
		{
			return _eventos;
		}
	}
}