Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Evento.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 | c76661cff260 |
children | db4b1e2cae49 |
rev | line source |
---|---|
1 | 1 using System; |
12 | 2 using System.Collections.Generic; |
1 | 3 |
4 namespace AltNetHispano.Agendas.Domain | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
5 { |
56
65bbcdd5d357
Pasando la responsabilidad de generar el Id al repositorio
nelopauselli
parents:
54
diff
changeset
|
6 public class Evento : Identificable |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
7 { |
63 | 8 protected Evento() |
57 | 9 { |
54 | 10 _tracks = new List<Track>(); |
11 } | |
12 | |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
13 #region Propiedades del Evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
14 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
15 private readonly IList<Track> _tracks; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
16 private Ponente _ponente; |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
17 private readonly ICollection<Track> _newTracks = new List<Track>(); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
18 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
19 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
20 /// Título del evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
21 /// </summary> |
63 | 22 public virtual string Titulo { get; private set; } |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
23 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
24 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
25 /// Fecha para la que se encuentra agendado el evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
26 /// </summary> |
63 | 27 public virtual DateTime? Fecha { get; private set; } |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
28 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
29 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
30 /// Url con la invitacion realizada por el ponente (en la mayoria de los casos va a ser un link al thread de la lista de correo) |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
31 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
32 public virtual string UrlInvitacion { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
33 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
34 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
35 /// Url a la pagina de la wiki con el video de la reunion virtual |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
36 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
37 public virtual string UrlWiki { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
38 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
39 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
40 /// Numero de orden en el historico de reuniones virtuales |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
41 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
42 public virtual short NumeroOrden { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
43 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
44 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
45 /// Ponente o responsable del evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
46 /// </summary> |
63 | 47 public virtual Ponente Ponente |
61
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
48 { |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
49 get { return _ponente; } |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
50 private set |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
51 { |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
52 if (value == null && _ponente != null || value != _ponente && _ponente != null) |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
53 _ponente.RemoveEvento(this); |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
54 if (value != null) |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
55 value.AddEvento(this); |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
56 _ponente = value; |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
57 } |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
58 } |
39 | 59 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
60 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
61 /// Track de cambios que ha sufrido el evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
62 /// </summary> |
63 | 63 public virtual IEnumerable<Track> Tracks |
54 | 64 { |
65 get { return _tracks; } | |
66 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
67 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
68 #endregion |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
69 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
70 #region Acciones sobre el evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
71 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
72 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
73 /// Propone un evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
74 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
75 /// <param name="titulo">Título del evento propuesto</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
76 /// <param name="ponente">Ponente para evento propuesto</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
77 /// <returns></returns> |
75 | 78 public static Evento Proponer(string titulo, Ponente ponente, string urlInvitacion) |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
79 { |
75 | 80 var evento = new Evento {Titulo = titulo, Ponente = ponente, UrlInvitacion = urlInvitacion}; |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
81 evento.AddTrack(new Track(evento, Accion.Proponer)); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
82 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
83 return evento; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
84 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
85 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
86 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
87 /// Agenda un evento que no estaba propuesto |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
88 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
89 /// <param name="titulo">Título del evento a agendar</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
90 /// <param name="ponente">Ponente para el evento</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
91 /// <param name="fecha">Fecha de realización del evento</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
92 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
93 /// <returns></returns> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
94 public static Evento Agendar(string titulo, Ponente ponente, DateTime fecha, string urlInvitacion) |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
95 { |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
96 var evento = new Evento { Titulo = titulo }; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
97 evento.Agendar(ponente, fecha, urlInvitacion); |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
98 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
99 return evento; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
100 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
101 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
102 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
103 /// Agenda el evento actual |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
104 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
105 /// <param name="ponente">Ponente para el evento</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
106 /// <param name="fecha">Fecha de realización del evento</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
107 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
108 public virtual void Agendar(Ponente ponente, DateTime? fecha, string urlInvitacion) |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
109 { |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
110 Ponente = ponente; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
111 Fecha = fecha; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
112 UrlInvitacion = urlInvitacion; |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
113 AddTrack(new Track(this, Accion.Agendar)); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
114 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
115 |
79
8df9db937434
Url de invitación en la UI: validación y persistencia
nelopauselli
parents:
75
diff
changeset
|
116 public virtual void Actualizar(Ponente ponente, DateTime? fecha, string urlInvitacion) |
54 | 117 { |
118 Ponente = ponente; | |
119 Fecha = fecha; | |
79
8df9db937434
Url de invitación en la UI: validación y persistencia
nelopauselli
parents:
75
diff
changeset
|
120 UrlInvitacion = urlInvitacion; |
39 | 121 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
122 AddTrack(new Track(this, Accion.Modificar)); |
54 | 123 } |
41
07c47ea2ac00
movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents:
39
diff
changeset
|
124 |
63 | 125 public virtual void CambiarTitulo(string titulo) |
54 | 126 { |
127 Titulo = titulo; | |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
128 AddTrack(new Track(this, Accion.CambiarTitulo)); |
54 | 129 } |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
130 |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
131 public virtual void Confirmar() |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
132 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
133 AddTrack(new Track(this, Accion.Confirmar)); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
134 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
135 |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
136 public virtual void Publicar() |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
137 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
138 AddTrack(new Track(this, Accion.Publicar)); |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
139 } |
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
140 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
141 #endregion |
39 | 142 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
143 private void AddTrack(Track track) |
54 | 144 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
145 _newTracks.Add(track); |
54 | 146 _tracks.Add(track); |
147 } | |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
148 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
149 public virtual IEnumerable<Track> GetTrackNews() |
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
150 { |
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
151 return _newTracks; |
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
152 } |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
153 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
154 } |