Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 244:31fb96912d37
Ticket 162: Publicaciones con Nro Orden repetido.
author | juanjose.montesdeocaarbos |
---|---|
date | Thu, 06 Oct 2011 09:09:37 -0300 |
parents | 51faeabfb9d9 |
children | 72a96459f910 |
rev | line source |
---|---|
1 | 1 using System; |
12 | 2 using System.Collections.Generic; |
225 | 3 using System.Linq; |
1 | 4 |
5 namespace AltNetHispano.Agendas.Domain | |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
6 { |
56
65bbcdd5d357
Pasando la responsabilidad de generar el Id al repositorio
nelopauselli
parents:
54
diff
changeset
|
7 public class Evento : Identificable |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
8 { |
63 | 9 protected Evento() |
57 | 10 { |
54 | 11 _tracks = new List<Track>(); |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
12 _ponentes = new List<Persona>(); |
200
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
13 //_patrocinadores = new List<Patrocinador>(); |
54 | 14 } |
15 | |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
16 #region Propiedades del Evento |
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 private readonly IList<Track> _tracks; |
182
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
19 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
|
20 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
21 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
22 /// Título del evento |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
23 /// </summary> |
63 | 24 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
|
25 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
26 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
27 /// 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
|
28 /// </summary> |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
29 public virtual DateTime? FechaInicio { get; private set; } |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
30 |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
31 /// <summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
32 /// Fecha de termino o finalización del evento. |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
33 /// </summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
34 public virtual DateTime? FechaTermino { get; private set; } |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
35 |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
36 /// <summary> |
70
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
37 /// 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
|
38 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
39 public virtual string UrlInvitacion { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
40 |
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 /// 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
|
43 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
44 public virtual string UrlWiki { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
45 |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
46 /// <summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
47 /// 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
|
48 /// </summary> |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
49 public virtual short NumeroOrden { get; private set; } |
c7264bfc4b71
agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents:
63
diff
changeset
|
50 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
51 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
52 /// 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
|
53 /// </summary> |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
54 /// public virtual Persona Ponente { get; private set; } |
39 | 55 |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
56 /// <summary> |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
57 /// 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
|
58 /// </summary> |
63 | 59 public virtual IEnumerable<Track> Tracks |
54 | 60 { |
61 get { return _tracks; } | |
62 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
63 |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
64 private EventoState _estado; |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
65 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
66 /// <summary> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
67 /// Estado del evento en formato string (para persistencia a DB) |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
68 /// </summary> |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
69 public virtual EventoState Estado |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
70 { |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
71 get { return _estado ?? EventoNullState.GetInstance(); } |
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
72 set { _estado = value; } |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
73 } |
103 | 74 |
200
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
75 //private IList<Patrocinador> _patrocinadores; |
101
9bfdd5bf3ad2
Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
97
diff
changeset
|
76 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
77 public virtual TipoEvento Tipo { get; private set; } |
106
80c22175c9b5
agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents:
105
diff
changeset
|
78 |
200
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
79 //public virtual IEnumerable<Patrocinador> Patrocinadores |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
80 //{ |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
81 // get |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
82 // { |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
83 // return _patrocinadores; |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
84 // } |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
85 //} |
138
62791999ad01
Agregando relación entre Evento y Patrocinador
nelopauselli
parents:
133
diff
changeset
|
86 |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
87 /// <summary> |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
88 /// Determina la duración de un evento. |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
89 /// </summary> |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
90 public virtual TimeSpan Duracion |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
91 { |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
92 get; set; |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
93 } |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
94 |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
95 private readonly IList<Persona> _ponentes; |
227 | 96 public virtual IEnumerable<Persona> Ponentes |
97 { | |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
98 get { return _ponentes; } |
227 | 99 } |
100 | |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
101 public virtual void ActualizarPonentes(IEnumerable<Persona> ponentes, Accion? action) |
225 | 102 { |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
103 bool modificados = false; |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
104 |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
105 foreach (var ponente in ponentes) |
225 | 106 { |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
107 if (!_ponentes.Contains(ponente)) |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
108 { |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
109 _ponentes.Add(ponente); |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
110 modificados = true; |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
111 } |
225 | 112 } |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
113 var sobran = _ponentes.Where(c => !ponentes.Contains(c)).ToList(); |
225 | 114 |
115 foreach (var sobra in sobran) | |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
116 { |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
117 _ponentes.Remove(sobra); |
237
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
118 modificados = true; |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
119 } |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
120 |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
121 if (modificados && action.HasValue) |
51faeabfb9d9
Todos los tests en verde quitando al ponente principal
nelopauselli
parents:
235
diff
changeset
|
122 AddTrack(new Track(this, action.Value)); |
225 | 123 } |
124 | |
200
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
125 //protected internal virtual void AddPatrocinador(Patrocinador patrocinador) |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
126 //{ |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
127 // _patrocinadores.Add(patrocinador); |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
128 //} |
138
62791999ad01
Agregando relación entre Evento y Patrocinador
nelopauselli
parents:
133
diff
changeset
|
129 |
200
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
130 //protected internal virtual void RemovePatrocinador(Patrocinador patrocinador) |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
131 //{ |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
132 // _patrocinadores.Remove(patrocinador); |
5346c0500594
Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents:
185
diff
changeset
|
133 //} |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
134 |
138
62791999ad01
Agregando relación entre Evento y Patrocinador
nelopauselli
parents:
133
diff
changeset
|
135 |
62791999ad01
Agregando relación entre Evento y Patrocinador
nelopauselli
parents:
133
diff
changeset
|
136 #endregion |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
137 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
138 #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
|
139 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
140 /// <summary> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
141 /// Propone un evento |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
142 /// </summary> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
143 /// <param name="titulo">Título del evento propuesto</param> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
144 /// <param name="persona">Ponente para evento propuesto</param> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
145 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
146 /// <param name="tipo">Tipo del evento</param> |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
147 /// <returns></returns> |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
148 public static Evento Proponer(string titulo, string urlInvitacion, TipoEvento tipo) |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
149 { |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
150 var evento = new Evento { Titulo = titulo, UrlInvitacion = urlInvitacion, Tipo = tipo }; |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
151 evento.Estado.Promover(evento, Accion.Proponer); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
152 |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
153 return evento; |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
154 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
155 |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
156 /// <summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
157 /// Agenda un evento que no estaba propuesto |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
158 /// </summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
159 /// <param name="titulo">Título del evento a agendar</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
160 /// <param name="fechaInicio">Fecha de realización del evento</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
161 /// <param name="fechaTermino">Fecha de termino del evento</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
162 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
163 /// <param name="tipo">Tipo del evento</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
164 /// <returns></returns> |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
165 public static Evento Agendar(string titulo, DateTime fechaInicio, DateTime fechaTermino, string urlInvitacion, TipoEvento tipo) |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
166 { |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
167 var evento = new Evento { Titulo = titulo, Tipo = tipo }; |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
168 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
169 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
170 return evento; |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
171 } |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
172 |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
173 /// <summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
174 /// Agenda el evento actual |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
175 /// </summary> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
176 /// <param name="fechaInicio">Fecha de realización del evento</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
177 /// <param name="fechaTermino">Fecha de termino del evento</param> |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
178 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
179 public virtual void Agendar(DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
180 { |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
181 FechaInicio = fechaInicio; |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
182 FechaTermino = fechaTermino; |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
183 UrlInvitacion = urlInvitacion; |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
184 Estado.Promover(this, Accion.Agendar); |
74
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
185 } |
bc46e7426c80
Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents:
73
diff
changeset
|
186 |
235
c61954d24c8c
Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents:
231
diff
changeset
|
187 public virtual void Actualizar(DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) |
54 | 188 { |
185
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
189 FechaInicio = fechaInicio; |
2d02adb79322
Se agrega fecha de termino de un Evento y se incluye la hora a la fecha de inicio.
alabra
parents:
182
diff
changeset
|
190 FechaTermino = fechaTermino; |
79
8df9db937434
Url de invitación en la UI: validación y persistencia
nelopauselli
parents:
75
diff
changeset
|
191 UrlInvitacion = urlInvitacion; |
39 | 192 |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
193 AddTrack(new Track(this, Accion.Modificar)); |
54 | 194 } |
41
07c47ea2ac00
movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents:
39
diff
changeset
|
195 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
196 public virtual void CambiarTitulo(string titulo) |
54 | 197 { |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
198 Titulo = titulo; |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
199 AddTrack(new Track(this, Accion.CambiarTitulo)); |
133
6f1041301797
Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
alabra
parents:
111
diff
changeset
|
200 } |
6f1041301797
Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
alabra
parents:
111
diff
changeset
|
201 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
202 public virtual void Confirmar() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
203 { |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
204 Estado.Promover(this, Accion.Confirmar); |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
205 } |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
206 |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
207 public virtual void Publicar(short numeroOrden, string urlWiki, TimeSpan duracion) |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
208 { |
169
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
209 NumeroOrden = numeroOrden; |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
210 UrlWiki = urlWiki; |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
211 Duracion = duracion; |
5c94b052d838
Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents:
140
diff
changeset
|
212 Estado.Promover(this, Accion.Publicar); |
54 | 213 } |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
214 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
215 public virtual void Cancelar() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
216 { |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
217 Estado.Promover(this, Accion.Cancelar); |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
218 } |
133
6f1041301797
Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
alabra
parents:
111
diff
changeset
|
219 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
220 public virtual void Descartar() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
221 { |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
222 Estado.Promover(this, Accion.Descartar); |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
223 } |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
224 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
225 public virtual void ReProponer() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
226 { |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
227 Estado.Promover(this, Accion.ReProponer); |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
228 } |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
229 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
230 public virtual void ReAgendar() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
231 { |
140
3639803112c6
Refactoring de la relación entre Evento y Estado
nelopauselli
parents:
139
diff
changeset
|
232 Estado.Promover(this, Accion.ReAgendar); |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
233 } |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
234 #endregion |
39 | 235 |
101
9bfdd5bf3ad2
Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents:
97
diff
changeset
|
236 protected internal virtual void AddTrack(Track track) |
54 | 237 { |
87
26d0513a8410
A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents:
81
diff
changeset
|
238 _newTracks.Add(track); |
54 | 239 _tracks.Add(track); |
240 } | |
81
c76661cff260
Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents:
80
diff
changeset
|
241 |
139
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
242 public virtual IEnumerable<Track> GetTrackNews() |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
243 { |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
244 return _newTracks; |
18e5a78186e4
Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents:
138
diff
changeset
|
245 } |
182
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
246 |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
247 public virtual IEnumerable<TrackLog> GetLogsNews() |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
248 { |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
249 var logs = new List<TrackLog>(); |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
250 foreach (var track in _newTracks) |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
251 logs.AddRange(track.GetLogsNews()); |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
252 return logs; |
beeb48ddb44a
Warning con los errores que se guarden en el log del track de un evento durante una notificación (twitter, calendar, blog)
nelopauselli
parents:
169
diff
changeset
|
253 } |
229 | 254 |
255 public virtual string GetPonentesAsString(Func<Persona, string> predicate) | |
256 { | |
257 var nombres = Ponentes.Select(predicate.Invoke).ToArray(); | |
258 string texto = string.Empty; | |
259 for (int i = 0; i < nombres.Length; i++) | |
260 { | |
261 var nombre = nombres[i]; | |
262 if (i == nombres.Length - 1 && i>0) | |
263 texto += " y "; | |
264 else if (i != 0) | |
265 texto += ", "; | |
266 texto += nombre; | |
267 } | |
268 return texto; | |
269 } | |
38
3c5657d99727
Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents:
24
diff
changeset
|
270 } |
0
3f7dbb633b71
Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff
changeset
|
271 } |