Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 128:1e47bf408073
Asignacion de los publicadores configurados en web.config al factory de agenda
(mediante CompositePublicador)
author | jorge.rowies |
---|---|
date | Mon, 04 Jul 2011 20:00:51 -0300 |
parents | 8fa58a79656a |
children |
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; |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
11 private readonly IPersonaRepository _personaRepository; |
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, |
128
1e47bf408073
Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents:
119
diff
changeset
|
15 IPersonaRepository personaRepository) |
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; |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
18 _personaRepository = personaRepository; |
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 |
118 | 30 public IList<Evento> GetEventosActivos(EventoState state) |
54 | 31 { |
118 | 32 return _eventosRepository.GetByState(state) ?? new List<Evento>(); |
54 | 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 |
118 | 35 public IList<Evento> GetEventosActivos() |
54 | 36 { |
118 | 37 return _eventosRepository.GetActivos() ?? new List<Evento>(); |
54 | 38 } |
1 | 39 |
119 | 40 public IEnumerable<Evento> GetHistorico() |
41 { | |
42 return _eventosRepository.GetByState(EventoPublicadoState.GetInstance()) ?? new List<Evento>(); | |
43 } | |
44 | |
82 | 45 public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) |
54 | 46 { |
82 | 47 Evento evento = GetEvento(eventoId); |
39 | 48 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
49 Persona persona = null; |
59 | 50 if (!string.IsNullOrWhiteSpace(ponenteNombre)) |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
51 persona = GetPonente(ponenteNombre); |
54 | 52 |
53 if (evento.Titulo != titulo) | |
54 evento.CambiarTitulo(titulo); | |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
55 |
75 | 56 if (evento.Fecha == null && fecha != null) |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
57 evento.Agendar(persona, fecha, urlInvitacion); |
97
2434c2323f3d
En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
58 else if (evento.Fecha != fecha || evento.Ponente != persona || evento.UrlInvitacion != urlInvitacion) |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
59 evento.Actualizar(persona, fecha, urlInvitacion); |
54 | 60 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
61 Notify(evento); |
4 | 62 |
54 | 63 return new Resultado(true); |
64 } | |
65 | |
75 | 66 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion) |
1 | 67 { |
75 | 68 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
|
69 } |
4 | 70 |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
105
diff
changeset
|
71 public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion, TipoEvento tipo) |
4 | 72 { |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
73 Persona persona = GetPonente(ponenteNombre); |
128
1e47bf408073
Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents:
119
diff
changeset
|
74 var evento = Evento.Proponer(titulo, persona, urlInvitacion, tipo); |
21
43360bf09b1a
unificando criterio de parámetros en Agenda
nelo@MTEySS.neluz.int
parents:
18
diff
changeset
|
75 |
12 | 76 if (string.IsNullOrWhiteSpace(evento.Titulo)) |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
77 return new Resultado(false); |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
78 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
79 Notify(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
80 |
15 | 81 _eventosRepository.Save(evento); |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
82 _personaRepository.Save(persona); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
83 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
84 return new Resultado(true); |
4 | 85 } |
86 | |
128
1e47bf408073
Asignacion de los publicadores configurados en web.config al factory de agenda
jorge.rowies
parents:
119
diff
changeset
|
87 public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion, TipoEvento tipo) |
14 | 88 { |
57 | 89 if (!fecha.HasValue) |
90 return new Resultado(false); | |
91 if (string.IsNullOrWhiteSpace(ponenteNombre)) | |
92 return new Resultado(false); | |
93 | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
94 Persona persona = GetPonente(ponenteNombre); |
24 | 95 |
57 | 96 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); |
97 if (evento == null) | |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
105
diff
changeset
|
98 evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion, tipo); |
57 | 99 else |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
100 evento.Agendar(persona, fecha, urlInvitacion); |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
37
diff
changeset
|
101 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
102 Notify(evento); |
39 | 103 |
54 | 104 _eventosRepository.Save(evento); |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
105 _personaRepository.Save(persona); |
53
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
106 |
d149bfea3892
Tratamos las validaciones como resultados y no como excepciones, dejamos las
nelopauselli
parents:
50
diff
changeset
|
107 return new Resultado(true); |
14 | 108 } |
11
9d6b28a696d1
corrección en método que verifica la autenticación del usuario
nelo@MTEySS.neluz.int
parents:
9
diff
changeset
|
109 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
110 public Resultado Confirmar(Guid eventoId) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
111 { |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
112 Evento evento = GetEvento(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
113 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
114 evento.Confirmar(); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
115 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
116 Notify(evento); |
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 _eventosRepository.Save(evento); |
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 return new Resultado(true); |
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 |
105
1d820f17fc75
ajustes y correcciones en el publicador de blogs
jorge.rowies
parents:
97
diff
changeset
|
123 public Resultado Publicar(Guid eventoId, short numeroOrden, string urlWiki) |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
124 { |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
125 Evento evento = GetEvento(eventoId); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
126 |
105
1d820f17fc75
ajustes y correcciones en el publicador de blogs
jorge.rowies
parents:
97
diff
changeset
|
127 evento.Publicar(numeroOrden, urlWiki); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
128 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
129 Notify(evento); |
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 _eventosRepository.Save(evento); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
132 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
133 return new Resultado(true); |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
134 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
135 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
136 private void Notify(Evento evento) |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
137 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
82
diff
changeset
|
138 var tracks = evento.GetTrackNews(); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
139 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
|
140 _publicador.Publicar(tracks); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
141 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
79
diff
changeset
|
142 |
24 | 143 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) |
144 { | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
145 var ponente = new Persona(nombre, mail, twitter, blog); |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
146 _personaRepository.Save(ponente); |
24 | 147 } |
148 | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
149 private Persona GetPonente(string nombre) |
24 | 150 { |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
151 Persona persona = _personaRepository.GetByNombre(nombre) ?? new Persona(nombre); |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
152 _personaRepository.Save(persona); |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
87
diff
changeset
|
153 return persona; |
24 | 154 } |
14 | 155 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
156 } |