comparison Agendas/trunk/src/Agendas.Domain/Evento.cs @ 235:c61954d24c8c

Quitando ponente principal y utilizando siempre la lista de ponentes
author nelopauselli
date Tue, 04 Oct 2011 20:42:35 -0300
parents e5959f3405e0
children 51faeabfb9d9
comparison
equal deleted inserted replaced
231:e5959f3405e0 235:c61954d24c8c
7 public class Evento : Identificable 7 public class Evento : Identificable
8 { 8 {
9 protected Evento() 9 protected Evento()
10 { 10 {
11 _tracks = new List<Track>(); 11 _tracks = new List<Track>();
12 _otrosPonentes = new List<Persona>(); 12 _ponentes = new List<Persona>();
13 //_patrocinadores = new List<Patrocinador>(); 13 //_patrocinadores = new List<Patrocinador>();
14 } 14 }
15 15
16 #region Propiedades del Evento 16 #region Propiedades del Evento
17 17
49 public virtual short NumeroOrden { get; private set; } 49 public virtual short NumeroOrden { get; private set; }
50 50
51 /// <summary> 51 /// <summary>
52 /// Ponente o responsable del evento 52 /// Ponente o responsable del evento
53 /// </summary> 53 /// </summary>
54 public virtual Persona Ponente { get; private set; } 54 /// public virtual Persona Ponente { get; private set; }
55 55
56 /// <summary> 56 /// <summary>
57 /// Track de cambios que ha sufrido el evento 57 /// Track de cambios que ha sufrido el evento
58 /// </summary> 58 /// </summary>
59 public virtual IEnumerable<Track> Tracks 59 public virtual IEnumerable<Track> Tracks
90 public virtual TimeSpan Duracion 90 public virtual TimeSpan Duracion
91 { 91 {
92 get; set; 92 get; set;
93 } 93 }
94 94
95 private readonly IList<Persona> _otrosPonentes; 95 private readonly IList<Persona> _ponentes;
96 public virtual IEnumerable<Persona> OtrosPonentes
97 {
98 get { return _otrosPonentes; }
99 }
100
101 public virtual IEnumerable<Persona> Ponentes 96 public virtual IEnumerable<Persona> Ponentes
102 { 97 {
103 get { return Ponente != null ? new List<Persona> {Ponente}.Union(OtrosPonentes) : OtrosPonentes; } 98 get { return _ponentes; }
104 } 99 }
105 100
106 public virtual void ActualizarOtrosPonentes(IEnumerable<Persona> otrosPonentes) 101 public virtual void ActualizarOtrosPonentes(IEnumerable<Persona> otrosPonentes)
107 { 102 {
108 foreach (var otro in otrosPonentes) 103 foreach (var otro in otrosPonentes)
109 { 104 {
110 if (!_otrosPonentes.Contains(otro)) 105 if (!_ponentes.Contains(otro))
111 _otrosPonentes.Add(otro); 106 _ponentes.Add(otro);
112 } 107 }
113 var sobran = _otrosPonentes.Where(c => !otrosPonentes.Contains(c)).ToList(); 108 var sobran = _ponentes.Where(c => !otrosPonentes.Contains(c)).ToList();
114 109
115 foreach (var sobra in sobran) 110 foreach (var sobra in sobran)
116 _otrosPonentes.Remove(sobra); 111 _ponentes.Remove(sobra);
117 } 112 }
118 113
119 //protected internal virtual void AddPatrocinador(Patrocinador patrocinador) 114 //protected internal virtual void AddPatrocinador(Patrocinador patrocinador)
120 //{ 115 //{
121 // _patrocinadores.Add(patrocinador); 116 // _patrocinadores.Add(patrocinador);
137 /// <param name="titulo">Título del evento propuesto</param> 132 /// <param name="titulo">Título del evento propuesto</param>
138 /// <param name="persona">Ponente para evento propuesto</param> 133 /// <param name="persona">Ponente para evento propuesto</param>
139 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 134 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
140 /// <param name="tipo">Tipo del evento</param> 135 /// <param name="tipo">Tipo del evento</param>
141 /// <returns></returns> 136 /// <returns></returns>
142 public static Evento Proponer(string titulo, Persona persona, string urlInvitacion, TipoEvento tipo) 137 public static Evento Proponer(string titulo, string urlInvitacion, TipoEvento tipo)
143 { 138 {
144 var evento = new Evento { Titulo = titulo, Ponente = persona, UrlInvitacion = urlInvitacion, Tipo = tipo }; 139 var evento = new Evento { Titulo = titulo, UrlInvitacion = urlInvitacion, Tipo = tipo };
145 evento.Estado.Promover(evento, Accion.Proponer); 140 evento.Estado.Promover(evento, Accion.Proponer);
146 141
147 return evento; 142 return evento;
148 } 143 }
149 144
150 /// <summary> 145 /// <summary>
151 /// Agenda un evento que no estaba propuesto 146 /// Agenda un evento que no estaba propuesto
152 /// </summary> 147 /// </summary>
153 /// <param name="titulo">Título del evento a agendar</param> 148 /// <param name="titulo">Título del evento a agendar</param>
154 /// <param name="persona">Ponente para el evento</param>
155 /// <param name="fechaInicio">Fecha de realización del evento</param> 149 /// <param name="fechaInicio">Fecha de realización del evento</param>
156 /// <param name="fechaTermino">Fecha de termino del evento</param> 150 /// <param name="fechaTermino">Fecha de termino del evento</param>
157 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 151 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
158 /// <param name="tipo">Tipo del evento</param> 152 /// <param name="tipo">Tipo del evento</param>
159 /// <returns></returns> 153 /// <returns></returns>
160 public static Evento Agendar(string titulo, Persona persona, DateTime fechaInicio, DateTime fechaTermino, string urlInvitacion, TipoEvento tipo) 154 public static Evento Agendar(string titulo, DateTime fechaInicio, DateTime fechaTermino, string urlInvitacion, TipoEvento tipo)
161 { 155 {
162 var evento = new Evento { Titulo = titulo, Tipo = tipo }; 156 var evento = new Evento { Titulo = titulo, Tipo = tipo };
163 evento.Agendar(persona, fechaInicio, fechaTermino, urlInvitacion); 157 evento.Agendar(fechaInicio, fechaTermino, urlInvitacion);
164 158
165 return evento; 159 return evento;
166 } 160 }
167 161
168 /// <summary> 162 /// <summary>
169 /// Agenda el evento actual 163 /// Agenda el evento actual
170 /// </summary> 164 /// </summary>
171 /// <param name="persona">Ponente para el evento</param>
172 /// <param name="fechaInicio">Fecha de realización del evento</param> 165 /// <param name="fechaInicio">Fecha de realización del evento</param>
173 /// <param name="fechaTermino">Fecha de termino del evento</param> 166 /// <param name="fechaTermino">Fecha de termino del evento</param>
174 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param> 167 /// <param name="urlInvitacion">Url con la invitación realizada por el ponente</param>
175 public virtual void Agendar(Persona persona, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) 168 public virtual void Agendar(DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
176 { 169 {
177 Ponente = persona;
178 FechaInicio = fechaInicio; 170 FechaInicio = fechaInicio;
179 FechaTermino = fechaTermino; 171 FechaTermino = fechaTermino;
180 UrlInvitacion = urlInvitacion; 172 UrlInvitacion = urlInvitacion;
181 Estado.Promover(this, Accion.Agendar); 173 Estado.Promover(this, Accion.Agendar);
182 } 174 }
183 175
184 public virtual void Actualizar(Persona persona, DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion) 176 public virtual void Actualizar(DateTime? fechaInicio, DateTime? fechaTermino, string urlInvitacion)
185 { 177 {
186 Ponente = persona;
187 FechaInicio = fechaInicio; 178 FechaInicio = fechaInicio;
188 FechaTermino = fechaTermino; 179 FechaTermino = fechaTermino;
189 UrlInvitacion = urlInvitacion; 180 UrlInvitacion = urlInvitacion;
190 181
191 AddTrack(new Track(this, Accion.Modificar)); 182 AddTrack(new Track(this, Accion.Modificar));