Mercurial > altnet-hispano
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)); |