comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 94:db4b1e2cae49

Cambio del nombre de la clase Ponente a Persona Se agrega la clase Cuenta para identificar cada una de las cuentas con que se puede autenticar una persona Alta Automatica de cuentas de twitter creando la persona
author Nelo@Kenia.neluz.int
date Sat, 04 Jun 2011 12:11:17 -0300
parents 26d0513a8410
children 2434c2323f3d
comparison
equal deleted inserted replaced
93:65f0b3d70c18 94:db4b1e2cae49
6 namespace AltNetHispano.Agendas.Domain 6 namespace AltNetHispano.Agendas.Domain
7 { 7 {
8 public class Agenda 8 public class Agenda
9 { 9 {
10 private readonly IEventoRepository _eventosRepository; 10 private readonly IEventoRepository _eventosRepository;
11 private readonly IPonenteRepository _ponenteRepository; 11 private readonly IPersonaRepository _personaRepository;
12 private readonly IPublicador _publicador; 12 private readonly IPublicador _publicador;
13 13
14 public Agenda(IPublicador publicador, IEventoRepository eventosRepository, 14 public Agenda(IPublicador publicador, IEventoRepository eventosRepository,
15 IPonenteRepository ponenteRepository) 15 IPersonaRepository personaRepository)
16 { 16 {
17 _publicador = publicador; 17 _publicador = publicador;
18 _ponenteRepository = ponenteRepository; 18 _personaRepository = personaRepository;
19 _eventosRepository = eventosRepository; 19 _eventosRepository = eventosRepository;
20 } 20 }
21 21
22 public Evento GetEvento(Guid eventoId) 22 public Evento GetEvento(Guid eventoId)
23 { 23 {
39 39
40 public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) 40 public Resultado ModificarEvento(Guid eventoId, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
41 { 41 {
42 Evento evento = GetEvento(eventoId); 42 Evento evento = GetEvento(eventoId);
43 43
44 Ponente ponente = null; 44 Persona persona = null;
45 if (!string.IsNullOrWhiteSpace(ponenteNombre)) 45 if (!string.IsNullOrWhiteSpace(ponenteNombre))
46 ponente = GetPonente(ponenteNombre); 46 persona = GetPonente(ponenteNombre);
47 47
48 if (evento.Titulo != titulo) 48 if (evento.Titulo != titulo)
49 evento.CambiarTitulo(titulo); 49 evento.CambiarTitulo(titulo);
50 50
51 if (evento.Fecha == null && fecha != null) 51 if (evento.Fecha == null && fecha != null)
52 evento.Agendar(ponente, fecha, urlInvitacion); 52 evento.Agendar(persona, fecha, urlInvitacion);
53 else if (evento.Fecha != fecha || evento.Ponente != ponente || evento.UrlInvitacion != urlInvitacion) 53 else if (evento.Fecha != fecha || evento.Persona != persona || evento.UrlInvitacion != urlInvitacion)
54 evento.Actualizar(ponente, fecha, urlInvitacion); 54 evento.Actualizar(persona, fecha, urlInvitacion);
55 55
56 Notify(evento); 56 Notify(evento);
57 57
58 return new Resultado(true); 58 return new Resultado(true);
59 } 59 }
63 return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion); 63 return ModificarEvento(id, titulo, ponenteNombre, null, urlInvitacion);
64 } 64 }
65 65
66 public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion) 66 public Resultado Proponer(string titulo, string ponenteNombre, string urlInvitacion)
67 { 67 {
68 Ponente ponente = GetPonente(ponenteNombre); 68 Persona persona = GetPonente(ponenteNombre);
69 var evento = Evento.Proponer(titulo, ponente, urlInvitacion); 69 var evento = Evento.Proponer(titulo, persona, urlInvitacion);
70 70
71 if (string.IsNullOrWhiteSpace(evento.Titulo)) 71 if (string.IsNullOrWhiteSpace(evento.Titulo))
72 return new Resultado(false); 72 return new Resultado(false);
73 73
74 Notify(evento); 74 Notify(evento);
75 75
76 _eventosRepository.Save(evento); 76 _eventosRepository.Save(evento);
77 _ponenteRepository.Save(ponente); 77 _personaRepository.Save(persona);
78 78
79 return new Resultado(true); 79 return new Resultado(true);
80 } 80 }
81 81
82 public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) 82 public Resultado Agendar(string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
84 if (!fecha.HasValue) 84 if (!fecha.HasValue)
85 return new Resultado(false); 85 return new Resultado(false);
86 if (string.IsNullOrWhiteSpace(ponenteNombre)) 86 if (string.IsNullOrWhiteSpace(ponenteNombre))
87 return new Resultado(false); 87 return new Resultado(false);
88 88
89 Ponente ponente = GetPonente(ponenteNombre); 89 Persona persona = GetPonente(ponenteNombre);
90 90
91 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo); 91 Evento evento = _eventosRepository.GetPropuestaByTitulo(titulo);
92 if (evento == null) 92 if (evento == null)
93 evento = Evento.Agendar(titulo, ponente, fecha.Value, urlInvitacion); 93 evento = Evento.Agendar(titulo, persona, fecha.Value, urlInvitacion);
94 else 94 else
95 evento.Agendar(ponente, fecha, urlInvitacion); 95 evento.Agendar(persona, fecha, urlInvitacion);
96 96
97 Notify(evento); 97 Notify(evento);
98 98
99 _eventosRepository.Save(evento); 99 _eventosRepository.Save(evento);
100 _ponenteRepository.Save(ponente); 100 _personaRepository.Save(persona);
101 101
102 return new Resultado(true); 102 return new Resultado(true);
103 } 103 }
104 104
105 public Resultado Confirmar(Guid eventoId) 105 public Resultado Confirmar(Guid eventoId)
135 _publicador.Publicar(tracks); 135 _publicador.Publicar(tracks);
136 } 136 }
137 137
138 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) 138 public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
139 { 139 {
140 var ponente = new Ponente(nombre, mail, twitter, blog); 140 var ponente = new Persona(nombre, mail, twitter, blog);
141 _ponenteRepository.Save(ponente); 141 _personaRepository.Save(ponente);
142 } 142 }
143 143
144 private Ponente GetPonente(string nombre) 144 private Persona GetPonente(string nombre)
145 { 145 {
146 Ponente ponente = _ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); 146 Persona persona = _personaRepository.GetByNombre(nombre) ?? new Persona(nombre);
147 _ponenteRepository.Save(ponente); 147 _personaRepository.Save(persona);
148 return ponente; 148 return persona;
149 } 149 }
150 } 150 }
151 } 151 }