comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 54:3059a5f8930f

Code cleanup
author nelopauselli
date Sat, 14 May 2011 13:01:24 -0300
parents d149bfea3892
children 3d9e6d56d903
comparison
equal deleted inserted replaced
53:d149bfea3892 54:3059a5f8930f
5 5
6 namespace AltNetHispano.Agendas.Domain 6 namespace AltNetHispano.Agendas.Domain
7 { 7 {
8 public class Agenda 8 public class Agenda
9 { 9 {
10 private readonly IEventoRepository _eventosRepository;
11 private readonly IPonenteRepository _ponenteRepository;
10 private readonly IPublicador _publicador; 12 private readonly IPublicador _publicador;
11 private readonly IRecordador _recordador; 13 private readonly IRecordador _recordador;
12 private readonly IEventoRepository _eventosRepository;
13 private readonly IPonenteRepository _ponenteRepository;
14 14
15 public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) 15 public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository,
16 IPonenteRepository ponenteRepository)
16 { 17 {
17 _publicador = publicador; 18 _publicador = publicador;
18 _ponenteRepository = ponenteRepository; 19 _ponenteRepository = ponenteRepository;
19 _eventosRepository = eventosRepository; 20 _eventosRepository = eventosRepository;
20 _recordador = recordador; 21 _recordador = recordador;
21 } 22 }
22 23
23 public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) 24 public Evento GetEvento(Guid id)
24 { 25 {
25 var ponente = GetPonente(ponenteNombre); 26 return _eventosRepository.Get(id);
27 }
26 28
27 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo); 29 public IList<Evento> GetEventosPropuestos()
28 evento.Publicar(ponente, fecha); 30 {
31 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>();
32 }
29 33
30 if (!evento.Fecha.HasValue) 34 public IList<Evento> GetEventosPublicados()
31 return new Resultado(false); 35 {
32 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) 36 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
33 return new Resultado(false); 37 }
34 38
35 if (_publicador != null) 39 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
36 _publicador.Publicar(evento); 40 {
41 Evento evento = _eventosRepository.Get(id);
42 if (evento == null)
43 throw new EventoNotFoundException(id);
37 44
38 _eventosRepository.Save(evento); 45 Ponente ponente = GetPonente(ponenteNombre);
39 _ponenteRepository.Save(ponente);
40 46
41 return new Resultado(true); 47 if (evento.Titulo != titulo)
42 } 48 evento.CambiarTitulo(titulo);
43 49
44 public void Recordar(Guid eventoId) 50 if (evento.Fecha != fecha || evento.Ponente != ponente)
51 evento.Actualizar(ponente, fecha);
52
53 if (_publicador != null)
54 _publicador.Publicar(evento);
55
56 return new Resultado(true);
57 }
58
59 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
45 { 60 {
46 var evento = _eventosRepository.Get(eventoId); 61 return ModificarEvento(id, titulo, ponenteNombre, null);
47 if (_recordador != null)
48 _recordador.Recordar(evento);
49 } 62 }
50 63
51 public Resultado Proponer(string titulo, string ponenteNombre) 64 public Resultado Proponer(string titulo, string ponenteNombre)
52 { 65 {
53 var ponente = GetPonente(ponenteNombre); 66 Ponente ponente = GetPonente(ponenteNombre);
54 var evento = new Evento (titulo); 67 var evento = new Evento(titulo);
55 evento.Actualizar(ponente); 68 evento.Actualizar(ponente);
56 69
57 if (string.IsNullOrWhiteSpace(evento.Titulo)) 70 if (string.IsNullOrWhiteSpace(evento.Titulo))
58 return new Resultado(false); 71 return new Resultado(false);
59 72
60 _eventosRepository.Save(evento); 73 _eventosRepository.Save(evento);
61 _ponenteRepository.Save(ponente); 74 _ponenteRepository.Save(ponente);
62 75
63 return new Resultado(true); 76 return new Resultado(true);
64 } 77 }
65 78
66 public IList<Evento> GetEventosPropuestos() 79 public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha)
67 { 80 {
68 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); 81 Ponente ponente = GetPonente(ponenteNombre);
69 }
70 82
71 public IList<Evento> GetEventosPublicados() 83 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento(titulo);
72 { 84 evento.Publicar(ponente, fecha);
73 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
74 }
75 85
76 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) 86 if (!evento.Fecha.HasValue)
77 { 87 return new Resultado(false);
78 var evento = _eventosRepository.Get(id); 88 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
79 if (evento == null) 89 return new Resultado(false);
80 throw new EventoNotFoundException(id);
81 90
82 var ponente = GetPonente(ponenteNombre); 91 if (_publicador != null)
92 _publicador.Publicar(evento);
83 93
84 if (evento.Titulo != titulo) 94 _eventosRepository.Save(evento);
85 evento.CambiarTitulo(titulo); 95 _ponenteRepository.Save(ponente);
86
87 if (evento.Fecha != fecha || evento.Ponente != ponente)
88 evento.Actualizar(ponente, fecha);
89
90 if (_publicador != null)
91 _publicador.Publicar(evento);
92 96
93 return new Resultado(true); 97 return new Resultado(true);
94 } 98 }
95 99
96 public Evento GetEvento(Guid id) 100 public void RealizarEvento(Guid eventoId, string sintesis)
97 { 101 {
98 return _eventosRepository.Get(id); 102 Evento evento = _eventosRepository.Get(eventoId);
103 if (evento != null)
104 evento.Realizado(sintesis);
105 }
106
107 public void Recordar(Guid eventoId)
108 {
109 Evento evento = _eventosRepository.Get(eventoId);
110 if (_recordador != null)
111 _recordador.Recordar(evento);
99 } 112 }
100 113
101 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) 114 public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
102 { 115 {
103 var ponente = new Ponente(nombre, mail, twitter, blog); 116 var ponente = new Ponente(nombre, mail, twitter, blog);
104 _ponenteRepository.Save(ponente); 117 _ponenteRepository.Save(ponente);
105 } 118 }
106 119
107 private Ponente GetPonente(string nombre) 120 private Ponente GetPonente(string nombre)
108 { 121 {
109 var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); 122 Ponente ponente = _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre);
110 _ponenteRepository.Save(ponente); 123 _ponenteRepository.Save(ponente);
111 return ponente; 124 return ponente;
112 } 125 }
113
114 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
115 {
116 return ModificarEvento(id, titulo, ponenteNombre, null);
117 }
118
119 public void RealizarEvento(Guid eventoId, string sintesis)
120 {
121 var evento = _eventosRepository.Get(eventoId);
122 if (evento != null)
123 evento.Realizado(sintesis);
124 }
125 } 126 }
126 } 127 }