comparison 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
comparison
equal deleted inserted replaced
23:a85674a7aa7a 24:41b283d27e3e
9 { 9 {
10 private readonly IPublicador _publicador; 10 private readonly IPublicador _publicador;
11 private readonly IRecordador _recordador; 11 private readonly IRecordador _recordador;
12 private readonly ISeguridad _seguridad; 12 private readonly ISeguridad _seguridad;
13 private readonly IEventoRepository _eventosRepository; 13 private readonly IEventoRepository _eventosRepository;
14 private readonly IPonenteRepository _ponenteRepository;
14 15
15 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository) 16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository)
16 { 17 {
17 _publicador = publicador; 18 _publicador = publicador;
19 _ponenteRepository = ponenteRepository;
18 _eventosRepository = eventosRepository; 20 _eventosRepository = eventosRepository;
19 _recordador = recordador; 21 _recordador = recordador;
20 _seguridad = seguridad; 22 _seguridad = seguridad;
21 } 23 }
22 24
23 public Guid Id { get; set; } 25 public void Publicar(string titulo, string ponenteNombre, DateTime? fecha)
26 {
27 var ponente = GetPonente(ponenteNombre);
24 28
25 public void Publicar(string titulo, string ponente, DateTime? fecha)
26 {
27 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha}; 29 var evento = new Evento{Titulo=titulo, Ponente = ponente, Fecha = fecha};
28 30
29 if (!evento.Fecha.HasValue) 31 if (!evento.Fecha.HasValue)
30 throw new ValidationException(); 32 throw new ValidationException();
31 if (NoEstaAutenticado(_seguridad)) 33 if (NoEstaAutenticado(_seguridad))
32 throw new UsuarioNoAutenticadoException(); 34 throw new UsuarioNoAutenticadoException();
33 if (string.IsNullOrWhiteSpace(evento.Ponente)) 35 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
34 throw new ValidationException(); 36 throw new ValidationException();
35 37
36 if (_publicador != null) 38 if (_publicador != null)
37 _publicador.Publicar(evento); 39 _publicador.Publicar(evento);
38 _eventosRepository.Save(evento); 40 _eventosRepository.Save(evento);
41 _ponenteRepository.Save(ponente);
39 } 42 }
40 43
41 public void Recordar(Guid eventoId) 44 public void Recordar(Guid eventoId)
42 { 45 {
43 var evento = _eventosRepository.Get(eventoId); 46 var evento = _eventosRepository.Get(eventoId);
70 { 73 {
71 return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null 74 return seguridad == null || seguridad.GetPrincipal() == null || seguridad.GetPrincipal().Identity == null
72 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name); 75 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
73 } 76 }
74 77
75 public void ModificarEvento(Guid id, string titulo, string ponente, DateTime? fecha) 78 public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
76 { 79 {
77 var evento = _eventosRepository.Get(id); 80 var evento = _eventosRepository.Get(id);
78 if (evento == null) 81 if (evento == null)
79 throw new EventoNotFoundException(); 82 throw new EventoNotFoundException();
83
84 var ponente = GetPonente(ponenteNombre);
85
80 evento.Titulo = titulo; 86 evento.Titulo = titulo;
81 evento.Ponente = ponente; 87 evento.Ponente = ponente;
82 evento.Fecha = fecha; 88 evento.Fecha = fecha;
83 } 89 }
84 90
85 public Evento GetEventoPublicado(Guid id) 91 public Evento GetEventoPublicado(Guid id)
86 { 92 {
87 return _eventosRepository.Get(id); 93 return _eventosRepository.Get(id);
88 } 94 }
95
96 public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
97 {
98 var ponente = new Ponente {Nombre = nombre, Mail = mail, Twitter = twitter, Blog = blog};
99 _ponenteRepository.Save(ponente);
100 }
101
102 private Ponente GetPonente(string nombre)
103 {
104 return _ponenteRepository.GetByNombre(nombre) ?? new Ponente { Nombre = nombre };
105 }
106
89 } 107 }
90 108
91 public class EventoNotFoundException : Exception 109 public class EventoNotFoundException : Exception
92 { 110 {
93 } 111 }