Mercurial > altnet-hispano
diff Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 24:41b283d27e3e
Ponentes como entidad
Agenda no es una entidad persistente (por ahora)
author | nelo@MTEySS.neluz.int |
---|---|
date | Tue, 15 Mar 2011 07:49:53 -0300 |
parents | 43360bf09b1a |
children | 71b02443450a |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Mar 15 06:57:58 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Tue Mar 15 07:49:53 2011 -0300 @@ -11,31 +11,34 @@ private readonly IRecordador _recordador; private readonly ISeguridad _seguridad; private readonly IEventoRepository _eventosRepository; + private readonly IPonenteRepository _ponenteRepository; - public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository) + public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) { _publicador = publicador; + _ponenteRepository = ponenteRepository; _eventosRepository = eventosRepository; _recordador = recordador; _seguridad = seguridad; } - public Guid Id { get; set; } + public void Publicar(string titulo, string ponenteNombre, DateTime? fecha) + { + var ponente = GetPonente(ponenteNombre); - public void Publicar(string titulo, string ponente, DateTime? fecha) - { var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; if (!evento.Fecha.HasValue) throw new ValidationException(); if (NoEstaAutenticado(_seguridad)) throw new UsuarioNoAutenticadoException(); - if (string.IsNullOrWhiteSpace(evento.Ponente)) + if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) throw new ValidationException(); if (_publicador != null) _publicador.Publicar(evento); _eventosRepository.Save(evento); + _ponenteRepository.Save(ponente); } public void Recordar(Guid eventoId) @@ -72,11 +75,14 @@ || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); } - public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) + public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) { var evento = _eventosRepository.Get(id); if (evento == null) throw new EventoNotFoundException(); + + var ponente = GetPonente(ponenteNombre); + evento.Titulo = titulo; evento.Ponente = ponente; evento.Fecha = fecha; @@ -86,6 +92,18 @@ { return _eventosRepository.Get(id); } + + public void RegistrarPonente(string nombre, string mail, string twitter, string blog) + { + var ponente = new Ponente {Nombre = nombre, Mail = mail, Twitter = twitter, Blog = blog}; + _ponenteRepository.Save(ponente); + } + + private Ponente GetPonente(string nombre) + { + return _ponenteRepository.GetByNombre(nombre) ?? new Ponente { Nombre = nombre }; + } + } public class EventoNotFoundException : Exception