Mercurial > altnet-hispano
comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 138:62791999ad01
Agregando relación entre Evento y Patrocinador
author | nelopauselli |
---|---|
date | Thu, 28 Jul 2011 10:13:28 -0300 |
parents | 6f1041301797 |
children | e6e6bfb1da9e |
comparison
equal
deleted
inserted
replaced
137:2d1adbaf0373 | 138:62791999ad01 |
---|---|
1 using System; | 1 using System; |
2 using System.Collections; | |
2 using System.Collections.Generic; | 3 using System.Collections.Generic; |
4 using System.Linq; | |
3 using AltNetHispano.Agendas.Domain.Exceptions; | 5 using AltNetHispano.Agendas.Domain.Exceptions; |
4 using AltNetHispano.Agendas.Domain.Repositories; | 6 using AltNetHispano.Agendas.Domain.Repositories; |
5 | 7 |
6 namespace AltNetHispano.Agendas.Domain | 8 namespace AltNetHispano.Agendas.Domain |
7 { | 9 { |
8 public class Agenda | 10 public class Agenda |
9 { | 11 { |
10 private readonly IEventoRepository _eventosRepository; | 12 private readonly IEventoRepository _eventosRepository; |
11 private readonly IPersonaRepository _personaRepository; | 13 private readonly IPersonaRepository _personaRepository; |
14 private readonly IPatrocinadorRepository _patrocinadorRepository; | |
15 | |
12 private readonly IPublicador _publicador; | 16 private readonly IPublicador _publicador; |
13 | 17 |
14 public Agenda(IPublicador publicador, IEventoRepository eventosRepository, | 18 public Agenda(IPublicador publicador, IEventoRepository eventosRepository, |
15 IPersonaRepository personaRepository) | 19 IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) |
16 { | 20 { |
17 _publicador = publicador; | 21 _publicador = publicador; |
22 _patrocinadorRepository = patrocinadorRepository; | |
18 _personaRepository = personaRepository; | 23 _personaRepository = personaRepository; |
19 _eventosRepository = eventosRepository; | 24 _eventosRepository = eventosRepository; |
20 } | 25 } |
21 | 26 |
22 public Evento GetEvento(Guid eventoId) | 27 public Evento GetEvento(Guid eventoId) |
202 | 207 |
203 _eventosRepository.Save(evento); | 208 _eventosRepository.Save(evento); |
204 | 209 |
205 return new Resultado(true); | 210 return new Resultado(true); |
206 } | 211 } |
212 | |
213 public void IndicarPatrocinadores(Guid eventoId, Guid[] patrocinadores) | |
214 { | |
215 var evento = GetEvento(eventoId); | |
216 | |
217 var agregar = new List<Patrocinador>(); | |
218 var quitar = new List<Patrocinador>(); | |
219 | |
220 foreach (var patrocinadorId in patrocinadores) | |
221 { | |
222 if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) | |
223 { | |
224 var patrocinador = _patrocinadorRepository.Get(patrocinadorId); | |
225 agregar.Add(patrocinador); | |
226 } | |
227 } | |
228 | |
229 foreach (var patrocinador in evento.Patrocinadores) | |
230 { | |
231 if (!patrocinadores.Any(p => p == patrocinador.Id)) | |
232 quitar.Add(patrocinador); | |
233 } | |
234 | |
235 foreach (var patrocinador in agregar) | |
236 evento.AddPatrocinador(patrocinador); | |
237 | |
238 foreach (var patrocinador in quitar) | |
239 evento.RemovePatrocinador(patrocinador); | |
240 } | |
207 } | 241 } |
208 } | 242 } |