Mercurial > altnet-hispano
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); } }