Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 74:bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
(https://www.assembla.com/spaces/altnet-hispano/wiki/Estados_de_un_evento)
author | nelopauselli |
---|---|
date | Mon, 23 May 2011 20:13:37 -0300 |
parents | 76567a0d1e44 |
children | 96d7609f2e08 |
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; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
17 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
18 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
19 /// Título del evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
20 /// </summary> |
63 | 21 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
|
22 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
23 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
24 /// 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
|
25 /// </summary> |
63 | 26 public virtual DateTime? Fecha { get; private set; } |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
27 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
28 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
29 /// 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
|
30 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
31 public virtual string UrlInvitacion { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
32 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
33 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
34 /// 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
|
35 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
36 public virtual string UrlWiki { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
37 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
38 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
39 /// 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
|
40 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
41 public virtual short NumeroOrden { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
42 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
43 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
44 /// 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
|
45 /// </summary> |
63 | 46 public virtual Ponente Ponente |
61
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
47 { |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
48 get { return _ponente; } |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
49 private set |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
50 { |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
51 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
|
52 _ponente.RemoveEvento(this); |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
53 if (value != null) |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
54 value.AddEvento(this); |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
55 _ponente = value; |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
56 } |
cb3f7b47c1f0
Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents:
57
diff
changeset
|
57 } |
39 | 58 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
59 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
60 /// 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
|
61 /// </summary> |
63 | 62 public virtual IEnumerable<Track> Tracks |
54 | 63 { |
64 get { return _tracks; } | |
65 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
66 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
67 #endregion |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
68 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
69 #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
|
70 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
71 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
72 /// Propone un evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
73 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
74 /// <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
|
75 /// <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
|
76 /// <returns></returns> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
77 public static Evento Proponer(string titulo, Ponente ponente) |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
78 { |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
79 var evento = new Evento { Titulo = titulo, Ponente = ponente }; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
80 evento.AddTracks(new Track(Accion.Proponer)); |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
81 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
82 return evento; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
83 } |
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 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
86 /// 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
|
87 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
88 /// <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
|
89 /// <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
|
90 /// <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
|
91 /// <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
|
92 /// <returns></returns> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
93 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
|
94 { |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
95 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
|
96 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
|
97 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
98 return evento; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
99 } |
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 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
102 /// Agenda el evento actual |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
103 /// </summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
104 /// <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
|
105 /// <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
|
106 /// <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
|
107 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
|
108 { |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
109 Ponente = ponente; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
110 Fecha = fecha; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
111 UrlInvitacion = urlInvitacion; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
112 AddTracks(new Track(Accion.Agendar)); |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
113 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
114 |
63 | 115 public virtual void Actualizar(Ponente ponente, DateTime? fecha) |
54 | 116 { |
117 Ponente = ponente; | |
118 Fecha = fecha; | |
39 | 119 |
54 | 120 AddTracks(new Track(Accion.Modificar)); |
121 } | |
41
07c47ea2ac00
movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents:
39
diff
changeset
|
122 |
63 | 123 public virtual void CambiarTitulo(string titulo) |
54 | 124 { |
125 Titulo = titulo; | |
126 AddTracks(new Track(Accion.CambiarTitulo)); | |
127 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
128 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
129 #endregion |
39 | 130 |
54 | 131 private void AddTracks(Track track) |
132 { | |
133 _tracks.Add(track); | |
134 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
135 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
136 } |