annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 241:a7daa939ef0c

Probando de armar tests de Agendas.Web
author juanjose.montesdeocaarbos
date Wed, 05 Oct 2011 07:43:09 -0300
parents e5959f3405e0
children c61954d24c8c
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>();
225
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
12 _otrosPonentes = 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
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>
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
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
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
225
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
95 private readonly IList<Persona> _otrosPonentes;
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
96 public virtual IEnumerable<Persona> OtrosPonentes
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
97 {
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
98 get { return _otrosPonentes; }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
99 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
100
227
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
101 public virtual IEnumerable<Persona> Ponentes
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
102 {
231
e5959f3405e0 Eventos sin ponentes
nelopauselli
parents: 229
diff changeset
103 get { return Ponente != null ? new List<Persona> {Ponente}.Union(OtrosPonentes) : OtrosPonentes; }
227
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
104 }
11545cc95491 Mostrar todos los ponentes en el histórico
nelopauselli
parents: 225
diff changeset
105
225
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
106 public virtual void ActualizarOtrosPonentes(IEnumerable<Persona> otrosPonentes)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
107 {
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
108 foreach (var otro in otrosPonentes)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
109 {
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
110 if (!_otrosPonentes.Contains(otro))
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
111 _otrosPonentes.Add(otro);
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
112 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
113 var sobran = _otrosPonentes.Where(c => !otrosPonentes.Contains(c)).ToList();
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
114
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
115 foreach (var sobra in sobran)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
116 _otrosPonentes.Remove(sobra);
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
117 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
118
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
119 //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
120 //{
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
121 // _patrocinadores.Add(patrocinador);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
122 //}
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
123
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
124 //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
125 //{
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
126 // _patrocinadores.Remove(patrocinador);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
127 //}
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
128
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
129
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
130 #endregion
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
131
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
132 #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
133
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
134 /// <summary>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
135 /// Propone un evento
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
136 /// </summary>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
137 /// <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
138 /// <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
139 /// <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
140 /// <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
141 /// <returns></returns>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
142 public static Evento Proponer(string titulo, Persona persona, 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
143 {
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
144 var evento = new Evento { Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo };
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
145 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
146
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
147 return evento;
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
148 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
149
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
150 /// <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
151 /// 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
152 /// </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
153 /// <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
154 /// <param name="persona">Ponente para el 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
155 /// <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
156 /// <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
157 /// <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
158 /// <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
159 /// <returns></returns>
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 public static Evento Agendar(string titulo, Persona persona, 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
161 {
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
162 var evento = new Evento { Titulo = titulo, Tipo = tipo };
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
163 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
164
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
165 return evento;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
166 }
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
167
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
168 /// <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
169 /// 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
170 /// </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
171 /// <param name="persona">Ponente para el 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
172 /// <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
173 /// <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
174 /// <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
175 public virtual void Agendar(Persona persona, 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
176 {
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
177 Ponente = persona;
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
178 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
179 FechaTermino = fechaTermino;
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
180 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
181 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
182 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
183
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
184 public virtual void Actualizar(Persona persona, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
185 {
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
186 Ponente = persona;
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
187 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
188 FechaTermino = fechaTermino;
79
8df9db937434 Url de invitación en la UI: validación y persistencia
nelopauselli
parents: 75
diff changeset
189 UrlInvitacion = urlInvitacion;
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
190
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
191 AddTrack(new Track(this, Accion.Modificar));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
192 }
41
07c47ea2ac00 movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents: 39
diff changeset
193
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
194 public virtual void CambiarTitulo(string titulo)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
195 {
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
196 Titulo = titulo;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
197 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
198 }
6f1041301797 Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
alabra
parents: 111
diff changeset
199
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
200 public virtual void Confirmar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
201 {
169
5c94b052d838 Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents: 140
diff changeset
202 Estado.Promover(this, Accion.Confirmar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
203 }
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
204
169
5c94b052d838 Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents: 140
diff changeset
205 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
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 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
208 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
209 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
210 Estado.Promover(this, Accion.Publicar);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
211 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
212
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
213 public virtual void Cancelar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
214 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
215 Estado.Promover(this, Accion.Cancelar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
216 }
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
217
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
218 public virtual void Descartar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
219 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
220 Estado.Promover(this, Accion.Descartar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
221 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
222
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
223 public virtual void ReProponer()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
224 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
225 Estado.Promover(this, Accion.ReProponer);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
226 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
227
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
228 public virtual void ReAgendar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
229 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
230 Estado.Promover(this, Accion.ReAgendar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
231 }
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
232 #endregion
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
233
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
234 protected internal virtual void AddTrack(Track track)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
235 {
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
236 _newTracks.Add(track);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
237 _tracks.Add(track);
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
238 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
239
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
240 public virtual IEnumerable<Track> GetTrackNews()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
241 {
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
242 return _newTracks;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
243 }
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
244
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
245 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
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 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
248 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
249 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
250 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
251 }
229
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
252
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
253 public virtual string GetPonentesAsString(Func<Persona, string> predicate)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
254 {
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
255 var nombres = Ponentes.Select(predicate.Invoke).ToArray();
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
256 string texto = string.Empty;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
257 for (int i = 0; i < nombres.Length; i++)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
258 {
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
259 var nombre = nombres[i];
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
260 if (i == nombres.Length - 1 && i>0)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
261 texto += " y ";
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
262 else if (i != 0)
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
263 texto += ", ";
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
264 texto += nombre;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
265 }
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
266 return texto;
33976aea7546 Varios Ponentes en calendario
nelopauselli
parents: 227
diff changeset
267 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
268 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
269 }