Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 53:d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
excepciones solo para lo que no esperamos que suceda.
author | nelopauselli |
---|---|
date | Sat, 14 May 2011 12:45:50 -0300 |
parents | 3ebe89c88caa |
children | 3059a5f8930f |
rev | line source |
---|---|
1 | 1 using System; |
2 | 2 using System.Collections.Generic; |
4 | 3 using AltNetHispano.Agendas.Domain.Exceptions; |
15 | 4 using AltNetHispano.Agendas.Domain.Repositories; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
5 |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
6 namespace AltNetHispano.Agendas.Domain |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 public class Agenda |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
9 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
10 private readonly IPublicador _publicador; |
1 | 11 private readonly IRecordador _recordador; |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
41
diff
changeset
|
12 private readonly IEventoRepository _eventosRepository; |
24 | 13 private readonly IPonenteRepository _ponenteRepository; |
2 | 14 |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
41
diff
changeset
|
15 public Agenda(IPublicador publicador, IRecordador recordador, IEventoRepository eventosRepository, IPonenteRepository ponenteRepository) |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
16 { |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
17 _publicador = publicador; |
24 | 18 _ponenteRepository = ponenteRepository; |
15 | 19 _eventosRepository = eventosRepository; |
1 | 20 _recordador = recordador; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
21 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
22 |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
23 public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha) |
24 | 24 { |
25 var ponente = GetPonente(ponenteNombre); | |
3 | 26 |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
27 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo); |
41
07c47ea2ac00
movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents:
39
diff
changeset
|
28 evento.Publicar(ponente, fecha); |
29
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
29 |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
30 if (!evento.Fecha.HasValue) |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
31 return new Resultado(false); |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
32 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
33 return new Resultado(false); |
1 | 34 |
29
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
35 if (_publicador != null) |
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
36 _publicador.Publicar(evento); |
39 | 37 |
29
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
38 _eventosRepository.Save(evento); |
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
39 _ponenteRepository.Save(ponente); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
40 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
41 return new Resultado(true); |
29
016b9b9b8d3a
Cuando se publica una van con el mismo titulo que una propuesta, se utiliza esta
nelo@MTEySS.neluz.int
parents:
26
diff
changeset
|
42 } |
4 | 43 |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
44 public void Recordar(Guid eventoId) |
1 | 45 { |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
46 var evento = _eventosRepository.Get(eventoId); |
1 | 47 if (_recordador != null) |
48 _recordador.Recordar(evento); | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
49 } |
4 | 50 |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
51 public Resultado Proponer(string titulo, string ponenteNombre) |
4 | 52 { |
26 | 53 var ponente = GetPonente(ponenteNombre); |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
54 var evento = new Evento (titulo); |
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
55 evento.Actualizar(ponente); |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
56 |
12 | 57 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
58 return new Resultado(false); |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
59 |
15 | 60 _eventosRepository.Save(evento); |
26 | 61 _ponenteRepository.Save(ponente); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
62 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
63 return new Resultado(true); |
4 | 64 } |
65 | |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
66 public IList<Evento> GetEventosPropuestos() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
67 { |
15 | 68 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
69 } |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
70 |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
71 public IList<Evento> GetEventosPublicados() |
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
72 { |
15 | 73 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); |
6
2912c1dd0e6b
Se verificó mediante un test que las propuestas y las publicaciones se estaban mezclando. Se corrigió el bug.
juanjose.montesdeocaarbos
parents:
4
diff
changeset
|
74 } |
9
c90492faf268
Se implementa seguridad a través del constructor y no como parámetro
juanjose.montesdeocaarbos
parents:
8
diff
changeset
|
75 |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
76 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) |
14 | 77 { |
15 | 78 var evento = _eventosRepository.Get(id); |
14 | 79 if (evento == null) |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
80 throw new EventoNotFoundException(id); |
24 | 81 |
82 var ponente = GetPonente(ponenteNombre); | |
83 | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
84 if (evento.Titulo != titulo) |
39 | 85 evento.CambiarTitulo(titulo); |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
86 |
39 | 87 if (evento.Fecha != fecha || evento.Ponente != ponente) |
88 evento.Actualizar(ponente, fecha); | |
89 | |
90 if (_publicador != null) | |
36
65bbf1ab2b24
cuando se modifica un evento, también debe ser publicada dicha modificación
nelo@MTEySS.neluz.int
parents:
29
diff
changeset
|
91 _publicador.Publicar(evento); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
92 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
93 return new Resultado(true); |
14 | 94 } |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
95 |
26 | 96 public Evento GetEvento(Guid id) |
14 | 97 { |
15 | 98 return _eventosRepository.Get(id); |
14 | 99 } |
24 | 100 |
101 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) | |
102 { | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
103 var ponente = new Ponente(nombre, mail, twitter, blog); |
24 | 104 _ponenteRepository.Save(ponente); |
105 } | |
106 | |
107 private Ponente GetPonente(string nombre) | |
108 { | |
39 | 109 var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); |
110 _ponenteRepository.Save(ponente); | |
111 return ponente; | |
24 | 112 } |
113 | |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
114 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre) |
26 | 115 { |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
116 return ModificarEvento(id, titulo, ponenteNombre, null); |
26 | 117 } |
39 | 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 } | |
14 | 125 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
126 } |