annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 300:48ab8788bd19

#200: Patrocinadores: Agregar link al sitio web.
author juanjose.montesdeocaarbos
date Mon, 27 Feb 2012 14:45:12 -0300
parents 72a96459f910
children
rev   line source
1
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
1 using System;
12
05996fa19e04 Unificamos Van y Cafe en Evento
nelo@MTEySS.neluz.int
parents: 4
diff changeset
2 using System.Collections.Generic;
225
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
3 using System.Linq;
1
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
4
6bb4ab4c0611 Tests de Crud para repositorio de Vans
nelopauselli
parents: 0
diff changeset
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
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
9 protected Evento()
57
3d9e6d56d903 Refactoring del track de cambios de un evento
nelopauselli
parents: 56
diff changeset
10 {
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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>();
274
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
13 _patrocinadores = new List<Patrocinador>();
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
14 }
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
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
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
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
963b71ea6028 Repositorios con NH
nelopauselli
parents: 61
diff changeset
59 public virtual IEnumerable<Track> Tracks
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
60 {
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
61 get { return _tracks; }
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
23325dddddcc Persistencia del estado de los eventos
jorge.rowies
parents: 101
diff changeset
74
274
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
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
274
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
79 public virtual IEnumerable<Patrocinador> Patrocinadores
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
80 {
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
81 get
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
82 {
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
83 return _patrocinadores;
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
84 }
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
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
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
96 public virtual IEnumerable<Persona> Ponentes
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
97 {
235
c61954d24c8c Quitando ponente principal y utilizando siempre la lista de ponentes
nelopauselli
parents: 231
diff changeset
98 get { return _ponentes; }
227
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
99 }
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
114
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
123 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
124
274
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
125 protected internal virtual void AddPatrocinador(Patrocinador patrocinador)
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
126 {
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
127 _patrocinadores.Add(patrocinador);
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
128 }
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
129
274
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
130 protected internal virtual void RemovePatrocinador(Patrocinador patrocinador)
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
131 {
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
diff changeset
132 _patrocinadores.Remove(patrocinador);
72a96459f910 Ticket #123: Patrocinadores de las vans.
juanjose.montesdeocaarbos
parents: 237
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
239 _tracks.Add(track);
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
254
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
255 public virtual string GetPonentesAsString(Func<Persona, string> predicate)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
256 {
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
257 var nombres = Ponentes.Select(predicate.Invoke).ToArray();
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
258 string texto = string.Empty;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
259 for (int i = 0; i < nombres.Length; i++)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
260 {
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
261 var nombre = nombres[i];
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
262 if (i == nombres.Length - 1 && i>0)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
263 texto += " y ";
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
264 else if (i != 0)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
265 texto += ", ";
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
266 texto += nombre;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
267 }
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
268 return texto;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
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 }