Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 87:26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
Quitamos el concepto de Recordador ya que el mismo es un publicador, cuándo publicar es responsabilidad de cada publicador
author | nelopauselli |
---|---|
date | Fri, 27 May 2011 14:42:38 -0300 |
parents | c8897b1c6f49 |
children | db4b1e2cae49 |
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 { |
54 | 10 private readonly IEventoRepository _eventosRepository; |
11 private readonly IPonenteRepository _ponenteRepository; | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
12 private readonly IPublicador _publicador; |
2 | 13 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
82
diff
changeset
|
14 public Agenda(IPublicador publicador, IEventoRepository eventosRepository, |
54 | 15 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; |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
20 } |
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
21 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
22 public Evento GetEvento(Guid eventoId) |
54 | 23 { |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
24 Evento evento =_eventosRepository.Get(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
25 if (evento == null) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
26 throw new EventoNotFoundException(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
27 return evento; |
54 | 28 } |
3 | 29 |
54 | 30 public IList<Evento> GetEventosPropuestos() |
31 { | |
32 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); | |
33 } | |
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
|
34 |
75 | 35 public IList<Evento> GetEventosAgendados() |
54 | 36 { |
37 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); | |
38 } | |
1 | 39 |
82 | 40 public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) |
54 | 41 { |
82 | 42 Evento evento = GetEvento(eventoId); |
39 | 43 |
75 | 44 Ponente ponente = null; |
59 | 45 if (!string.IsNullOrWhiteSpace(ponenteNombre)) |
46 ponente = GetPonente(ponenteNombre); | |
54 | 47 |
48 if (evento.Titulo != titulo) | |
49 evento.CambiarTitulo(titulo); | |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
50 |
75 | 51 if (evento.Fecha == null && fecha != null) |
52 evento.Agendar(ponente, fecha, urlInvitacion); | |
79
8df9db937434
Url de invitación en la UI: validación y persistencia
nelopauselli
parents:
75
diff
changeset
|
53 else if (evento.Fecha != fecha || evento.Ponente != ponente || evento.UrlInvitacion != urlInvitacion) |
8df9db937434
Url de invitación en la UI: validación y persistencia
nelopauselli
parents:
75
diff
changeset
|
54 evento.Actualizar(ponente, fecha, urlInvitacion); |
54 | 55 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
56 Notify(evento); |
4 | 57 |
54 | 58 return new Resultado(true); |
59 } | |
60 | |
75 | 61 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion) |
1 | 62 { |
75 | 63 return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion); |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
64 } |
4 | 65 |
75 | 66 public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion) |
4 | 67 { |
54 | 68 Ponente ponente = GetPonente(ponenteNombre); |
75 | 69 var evento = Evento.Proponer(titulo, ponente, urlInvitacion); |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
70 |
12 | 71 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
72 return new Resultado(false); |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
73 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
74 Notify(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
75 |
15 | 76 _eventosRepository.Save(evento); |
26 | 77 _ponenteRepository.Save(ponente); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
78 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
79 return new Resultado(true); |
4 | 80 } |
81 | |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
82 public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) |
14 | 83 { |
57 | 84 if (!fecha.HasValue) |
85 return new Resultado(false); | |
86 if (string.IsNullOrWhiteSpace(ponenteNombre)) | |
87 return new Resultado(false); | |
88 | |
54 | 89 Ponente ponente = GetPonente(ponenteNombre); |
24 | 90 |
57 | 91 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); |
92 if (evento == null) | |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
93 evento = Evento.Agendar(titulo, ponente, fecha.Value, urlInvitacion); |
57 | 94 else |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
95 evento.Agendar(ponente, fecha, urlInvitacion); |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
96 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
97 Notify(evento); |
39 | 98 |
54 | 99 _eventosRepository.Save(evento); |
100 _ponenteRepository.Save(ponente); | |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
101 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
102 return new Resultado(true); |
14 | 103 } |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
104 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
105 public Resultado Confirmar(Guid eventoId) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
106 { |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
107 Evento evento = GetEvento(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
108 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
109 evento.Confirmar(); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
110 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
111 Notify(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
112 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
113 _eventosRepository.Save(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
114 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
115 return new Resultado(true); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
116 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
117 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
118 public Resultado Publicar(Guid eventoId) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
119 { |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
120 Evento evento = GetEvento(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
121 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
122 evento.Publicar(); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
123 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
124 Notify(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
125 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
126 _eventosRepository.Save(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
127 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
128 return new Resultado(true); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
129 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
130 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
131 private void Notify(Evento evento) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
132 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
82
diff
changeset
|
133 var tracks = evento.GetTrackNews(); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
134 if (_publicador != null) |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
82
diff
changeset
|
135 _publicador.Publicar(tracks); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
136 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
137 |
24 | 138 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) |
139 { | |
54 | 140 var ponente = new Ponente(nombre, mail, twitter, blog); |
24 | 141 _ponenteRepository.Save(ponente); |
142 } | |
143 | |
144 private Ponente GetPonente(string nombre) | |
145 { | |
54 | 146 Ponente ponente = _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); |
147 _ponenteRepository.Save(ponente); | |
148 return ponente; | |
24 | 149 } |
14 | 150 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
151 } |