comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 50:3ebe89c88caa

Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la última modificación.
author nelopauselli
date Fri, 13 May 2011 23:29:05 -0300
parents 07c47ea2ac00
children d149bfea3892
comparison
equal deleted inserted replaced
49:be7a9720fb96 50:3ebe89c88caa
7 { 7 {
8 public class Agenda 8 public class Agenda
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 IEventoRepository _eventosRepository;
13 private readonly IEventoRepository _eventosRepository;
14 private readonly IPonenteRepository _ponenteRepository; 13 private readonly IPonenteRepository _ponenteRepository;
15 14
16 public Agenda(IPublicador publicador, IRecordador recordador, ISeguridad seguridad, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) 15 public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository)
17 { 16 {
18 _publicador = publicador; 17 _publicador = publicador;
19 _ponenteRepository = ponenteRepository; 18 _ponenteRepository = ponenteRepository;
20 _eventosRepository = eventosRepository; 19 _eventosRepository = eventosRepository;
21 _recordador = recordador; 20 _recordador = recordador;
22 _seguridad = seguridad;
23 } 21 }
24 22
25 public void Publicar(string titulo, string ponenteNombre, DateTime? fecha) 23 public void Publicar(string titulo, string ponenteNombre, DateTime? fecha)
26 { 24 {
27 var ponente = GetPonente(ponenteNombre); 25 var ponente = GetPonente(ponenteNombre);
29 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo); 27 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo);
30 evento.Publicar(ponente, fecha); 28 evento.Publicar(ponente, fecha);
31 29
32 if (!evento.Fecha.HasValue) 30 if (!evento.Fecha.HasValue)
33 throw new ValidationException(); 31 throw new ValidationException();
34 if (NoEstaAutenticado(_seguridad))
35 throw new UsuarioNoAutenticadoException();
36 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) 32 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
37 throw new ValidationException(); 33 throw new ValidationException();
38 34
39 if (_publicador != null) 35 if (_publicador != null)
40 _publicador.Publicar(evento); 36 _publicador.Publicar(evento);
56 var evento = new Evento (titulo); 52 var evento = new Evento (titulo);
57 evento.Actualizar(ponente); 53 evento.Actualizar(ponente);
58 54
59 if (string.IsNullOrWhiteSpace(evento.Titulo)) 55 if (string.IsNullOrWhiteSpace(evento.Titulo))
60 throw new ValidationException(); 56 throw new ValidationException();
61 if (NoEstaAutenticado(_seguridad))
62 throw new UsuarioNoAutenticadoException();
63 _eventosRepository.Save(evento); 57 _eventosRepository.Save(evento);
64 _ponenteRepository.Save(ponente); 58 _ponenteRepository.Save(ponente);
65 } 59 }
66 60
67 public IList<Evento> GetEventosPropuestos() 61 public IList<Evento> GetEventosPropuestos()
70 } 64 }
71 65
72 public IList<Evento> GetEventosPublicados() 66 public IList<Evento> GetEventosPublicados()
73 { 67 {
74 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); 68 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
75 }
76
77 private static bool NoEstaAutenticado(ISeguridad seguridad)
78 {
79 return seguridad == null || seguridad.GetPrincipal() == null
80 || string.IsNullOrWhiteSpace(seguridad.GetPrincipal().Identity.Name);
81 } 69 }
82 70
83 public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) 71 public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
84 { 72 {
85 var evento = _eventosRepository.Get(id); 73 var evento = _eventosRepository.Get(id);