Mercurial > altnet-hispano
diff 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 |
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs Thu Jul 28 09:26:24 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs Thu Jul 28 10:13:28 2011 -0300 @@ -1,5 +1,7 @@ using System; +using System.Collections; using System.Collections.Generic; +using System.Linq; using AltNetHispano.Agendas.Domain.Exceptions; using AltNetHispano.Agendas.Domain.Repositories; @@ -9,12 +11,15 @@ { private readonly IEventoRepository _eventosRepository; private readonly IPersonaRepository _personaRepository; + private readonly IPatrocinadorRepository _patrocinadorRepository; + private readonly IPublicador _publicador; public Agenda(IPublicador publicador, IEventoRepository eventosRepository, - IPersonaRepository personaRepository) + IPersonaRepository personaRepository, IPatrocinadorRepository patrocinadorRepository) { _publicador = publicador; + _patrocinadorRepository = patrocinadorRepository; _personaRepository = personaRepository; _eventosRepository = eventosRepository; } @@ -204,5 +209,34 @@ return new Resultado(true); } + + public void IndicarPatrocinadores(Guid eventoId, Guid[] patrocinadores) + { + var evento = GetEvento(eventoId); + + var agregar = new List<Patrocinador>(); + var quitar = new List<Patrocinador>(); + + foreach (var patrocinadorId in patrocinadores) + { + if (!evento.Patrocinadores.Any(p => p.Id == patrocinadorId)) + { + var patrocinador = _patrocinadorRepository.Get(patrocinadorId); + agregar.Add(patrocinador); + } + } + + foreach (var patrocinador in evento.Patrocinadores) + { + if (!patrocinadores.Any(p => p == patrocinador.Id)) + quitar.Add(patrocinador); + } + + foreach (var patrocinador in agregar) + evento.AddPatrocinador(patrocinador); + + foreach (var patrocinador in quitar) + evento.RemovePatrocinador(patrocinador); + } } } \ No newline at end of file