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