diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 15:08b9e96132a5

Persistimos los eventos de la agenda
author nelo@MTEySS.neluz.int
date Mon, 14 Mar 2011 00:14:09 -0300
parents ed6d842abf42
children ed29ceb025a9
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sun Mar 13 20:49:15 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Mon Mar 14 00:14:09 2011 -0300
@@ -2,24 +2,23 @@
 using System.Collections.Generic;
 using System.Linq;
 using AltNetHispano.Agendas.Domain.Exceptions;
+using AltNetHispano.Agendas.Domain.Repositories;
 
 namespace AltNetHispano.Agendas.Domain
 {
 	public class Agenda
 	{
-        private readonly IList<Evento> _eventosPropuestos;
-        private readonly IList<Evento> _eventosPublicados;
 		private readonly IPublicador _publicador;
 		private readonly IRecordador _recordador;
         private readonly ISeguridad _seguridad;
+		private readonly IEventoRepository _eventosRepository;
 
-        public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad)
+		public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository)
 		{
 			_publicador = publicador;
+			_eventosRepository = eventosRepository;
 			_recordador = recordador;
             _seguridad = seguridad;
-			_eventosPropuestos = new List<Evento>();
-            _eventosPublicados = new List<Evento>();
 		}
 
 		public Guid Id { get; set; }
@@ -30,17 +29,14 @@
 
 			if (!evento.Fecha.HasValue)
 				throw new ValidationException();
-			if (_publicador != null)
-				_publicador.Publicar(evento);
             if (NoEstaAutenticado(_seguridad))
                 throw new UsuarioNoAutenticadoException();
             if (string.IsNullOrWhiteSpace(evento.Ponente))
                 throw new ValidationException();
 
-			//TODO: persistir el evento!
-			if (evento.Id==Guid.Empty) evento.Id = Guid.NewGuid();
-
-            _eventosPublicados.Add(evento);
+			if (_publicador != null)
+				_publicador.Publicar(evento);
+			_eventosRepository.Save(evento);
 		}
 
 		public void Recordar(Evento evento)
@@ -55,27 +51,29 @@
 				throw new ValidationException();
             if (NoEstaAutenticado(_seguridad))
                 throw new ValidationException();
-			_eventosPropuestos.Add(evento);
+			_eventosRepository.Save(evento);
 		}
 
         public IList<Evento> GetEventosPropuestos()
         {
-            return _eventosPropuestos;
+			return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>();
         }
 
         public IList<Evento> GetEventosPublicados()
         {
-            return _eventosPublicados;
+            return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
         }
 
-        private static bool NoEstaAutenticado(ISeguridad seguridad) {
+        private static bool NoEstaAutenticado(ISeguridad seguridad)
+        {
+        	return false;
             return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null
                 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
         }
 
 		public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha)
 		{
-			var evento = _eventosPublicados.SingleOrDefault(e => e.Id == id);
+			var evento = _eventosRepository.Get(id);
 			if (evento == null)
 				throw new EventoNotFoundException();
 			evento.Titulo = titulo;
@@ -85,7 +83,7 @@
 
 		public Evento GetEventoPublicado(Guid id)
 		{
-			return _eventosPublicados.SingleOrDefault(e => e.Id == id);
+			return _eventosRepository.Get(id);
 		}
 	}