annotate Agendas/trunk/src/Agendas.Domain/Evento.cs @ 225:f23ee59ef1bd

Otros ponentes
author nelopauselli
date Mon, 26 Sep 2011 08:47:01 -0300
parents 5346c0500594
children 11545cc95491
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
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
101 public virtual void ActualizarOtrosPonentes(IEnumerable<Persona> otrosPonentes)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
102 {
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
103 foreach (var otro in otrosPonentes)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
104 {
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
105 if (!_otrosPonentes.Contains(otro))
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
106 _otrosPonentes.Add(otro);
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
107 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
108 var sobran = _otrosPonentes.Where(c => !otrosPonentes.Contains(c)).ToList();
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
109
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
110 foreach (var sobra in sobran)
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
111 _otrosPonentes.Remove(sobra);
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
112 }
f23ee59ef1bd Otros ponentes
nelopauselli
parents: 200
diff changeset
113
200
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
114 //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
115 //{
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
116 // _patrocinadores.Add(patrocinador);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
117 //}
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
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 RemovePatrocinador(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.Remove(patrocinador);
5346c0500594 Pasando a estructura de db fija, ya no se crea automáticamente.
nelopauselli
parents: 185
diff changeset
122 //}
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
123
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
124
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 133
diff changeset
125 #endregion
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
126
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
127 #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
128
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
129 /// <summary>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
130 /// Propone un evento
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
131 /// </summary>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
132 /// <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
133 /// <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
134 /// <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
135 /// <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
136 /// <returns></returns>
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
137 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
138 {
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
139 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
140 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
141
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
142 return evento;
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
143 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
144
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
145 /// <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
146 /// 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
147 /// </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
148 /// <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
149 /// <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
150 /// <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
151 /// <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
152 /// <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
153 /// <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
154 /// <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
155 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
156 {
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
157 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
158 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
159
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
160 return evento;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
161 }
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
162
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 /// <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
164 /// 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
165 /// </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
166 /// <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
167 /// <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
168 /// <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
169 /// <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
170 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
171 {
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
172 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
173 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
174 FechaTermino = fechaTermino;
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
175 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
176 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
177 }
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 73
diff changeset
178
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
179 public virtual void Actualizar(Persona persona, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
180 {
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
181 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
182 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
183 FechaTermino = fechaTermino;
79
8df9db937434 Url de invitación en la UI: validación y persistencia
nelopauselli
parents: 75
diff changeset
184 UrlInvitacion = urlInvitacion;
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
185
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
186 AddTrack(new Track(this, Accion.Modificar));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
187 }
41
07c47ea2ac00 movimos el AddTrack a cada acción dentro de Evento
nelopauselli
parents: 39
diff changeset
188
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
189 public virtual void CambiarTitulo(string titulo)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
190 {
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
191 Titulo = titulo;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
192 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
193 }
6f1041301797 Se agregan los estados Cancelado y Descartado con las acciones Cancelar, Reagendar, Descartar, Reproponer, según ticket 146.
alabra
parents: 111
diff changeset
194
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
195 public virtual void Confirmar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
196 {
169
5c94b052d838 Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents: 140
diff changeset
197 Estado.Promover(this, Accion.Confirmar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
198 }
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
199
169
5c94b052d838 Ticket 153: UI de Publicar. Faltaba la Duración del evento en la capa de negocios.
juanjose.montesdeocaarbos
parents: 140
diff changeset
200 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
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 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
203 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
204 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
205 Estado.Promover(this, Accion.Publicar);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
206 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
207
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
208 public virtual void Cancelar()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
209 {
140
3639803112c6 Refactoring de la relación entre Evento y Estado
nelopauselli
parents: 139
diff changeset
210 Estado.Promover(this, Accion.Cancelar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
211 }
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
212
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
213 public virtual void Descartar()
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.Descartar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
216 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
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 ReProponer()
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.ReProponer);
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 ReAgendar()
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.ReAgendar);
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
226 }
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
227 #endregion
39
e548379cc314 track de cambios en evento
nelo@MTEySS.neluz.int
parents: 38
diff changeset
228
101
9bfdd5bf3ad2 Manejo de estados de los Eventos mediante state pattern (primer version)
jorge.rowies
parents: 97
diff changeset
229 protected internal virtual void AddTrack(Track track)
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
230 {
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 81
diff changeset
231 _newTracks.Add(track);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
232 _tracks.Add(track);
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
233 }
81
c76661cff260 Workflow de acciones sobre un evento (camino feliz)
nelopauselli
parents: 80
diff changeset
234
139
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
235 public virtual IEnumerable<Track> GetTrackNews()
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
236 {
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
237 return _newTracks;
18e5a78186e4 Corrección de virtual y visibilidad de los métodos por nh
nelopauselli
parents: 138
diff changeset
238 }
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
239
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
240 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
241 {
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
242 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
243 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
244 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
245 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
246 }
38
3c5657d99727 Cambio de setters de las propiedades a private
nelo@MTEySS.neluz.int
parents: 24
diff changeset
247 }
0
3f7dbb633b71 Test sobre la publicación de Eventos al registrarlos en la Agenda
nelopauselli
parents:
diff changeset
248 }