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 }