comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 81:c76661cff260

Workflow de acciones sobre un evento (camino feliz)
author nelopauselli
date Tue, 24 May 2011 19:21:20 -0300
parents 8df9db937434
children c8897b1c6f49
comparison
equal deleted inserted replaced
80:c2d98fd6593f 81:c76661cff260
19 _ponenteRepository = ponenteRepository; 19 _ponenteRepository = ponenteRepository;
20 _eventosRepository = eventosRepository; 20 _eventosRepository = eventosRepository;
21 _recordador = recordador; 21 _recordador = recordador;
22 } 22 }
23 23
24 public Evento GetEvento(Guid id) 24 public Evento GetEvento(Guid eventoId)
25 { 25 {
26 return _eventosRepository.Get(id); 26 Evento evento =_eventosRepository.Get(eventoId);
27 if (evento == null)
28 throw new EventoNotFoundException(eventoId);
29 return evento;
27 } 30 }
28 31
29 public IList<Evento> GetEventosPropuestos() 32 public IList<Evento> GetEventosPropuestos()
30 { 33 {
31 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); 34 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>();
36 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); 39 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
37 } 40 }
38 41
39 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion) 42 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha, string urlInvitacion)
40 { 43 {
41 Evento evento = _eventosRepository.Get(id); 44 Evento evento = GetEvento(id);
42 if (evento == null)
43 throw new EventoNotFoundException(id);
44 45
45 Ponente ponente = null; 46 Ponente ponente = null;
46 if (!string.IsNullOrWhiteSpace(ponenteNombre)) 47 if (!string.IsNullOrWhiteSpace(ponenteNombre))
47 ponente = GetPonente(ponenteNombre); 48 ponente = GetPonente(ponenteNombre);
48 49
52 if (evento.Fecha == null && fecha != null) 53 if (evento.Fecha == null && fecha != null)
53 evento.Agendar(ponente, fecha, urlInvitacion); 54 evento.Agendar(ponente, fecha, urlInvitacion);
54 else if (evento.Fecha != fecha || evento.Ponente != ponente || evento.UrlInvitacion != urlInvitacion) 55 else if (evento.Fecha != fecha || evento.Ponente != ponente || evento.UrlInvitacion != urlInvitacion)
55 evento.Actualizar(ponente, fecha, urlInvitacion); 56 evento.Actualizar(ponente, fecha, urlInvitacion);
56 57
57 if (_publicador != null) 58 Notify(evento);
58 _publicador.Publicar(evento);
59 59
60 return new Resultado(true); 60 return new Resultado(true);
61 } 61 }
62 62
63 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion) 63 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre, string urlInvitacion)
70 Ponente ponente = GetPonente(ponenteNombre); 70 Ponente ponente = GetPonente(ponenteNombre);
71 var evento = Evento.Proponer(titulo, ponente, urlInvitacion); 71 var evento = Evento.Proponer(titulo, ponente, urlInvitacion);
72 72
73 if (string.IsNullOrWhiteSpace(evento.Titulo)) 73 if (string.IsNullOrWhiteSpace(evento.Titulo))
74 return new Resultado(false); 74 return new Resultado(false);
75
76 Notify(evento);
75 77
76 _eventosRepository.Save(evento); 78 _eventosRepository.Save(evento);
77 _ponenteRepository.Save(ponente); 79 _ponenteRepository.Save(ponente);
78 80
79 return new Resultado(true); 81 return new Resultado(true);
92 if (evento == null) 94 if (evento == null)
93 evento = Evento.Agendar(titulo, ponente, fecha.Value, urlInvitacion); 95 evento = Evento.Agendar(titulo, ponente, fecha.Value, urlInvitacion);
94 else 96 else
95 evento.Agendar(ponente, fecha, urlInvitacion); 97 evento.Agendar(ponente, fecha, urlInvitacion);
96 98
97 if (_publicador != null) 99 Notify(evento);
98 _publicador.Publicar(evento);
99 100
100 _eventosRepository.Save(evento); 101 _eventosRepository.Save(evento);
101 _ponenteRepository.Save(ponente); 102 _ponenteRepository.Save(ponente);
103
104 return new Resultado(true);
105 }
106
107 public Resultado Confirmar(Guid eventoId)
108 {
109 Evento evento = GetEvento(eventoId);
110
111 evento.Confirmar();
112
113 Notify(evento);
114
115 _eventosRepository.Save(evento);
116
117 return new Resultado(true);
118 }
119
120 public Resultado Publicar(Guid eventoId)
121 {
122 Evento evento = GetEvento(eventoId);
123
124 evento.Publicar();
125
126 Notify(evento);
127
128 _eventosRepository.Save(evento);
102 129
103 return new Resultado(true); 130 return new Resultado(true);
104 } 131 }
105 132
106 public void Recordar(Guid eventoId) 133 public void Recordar(Guid eventoId)
107 { 134 {
108 Evento evento = _eventosRepository.Get(eventoId); 135 Evento evento = _eventosRepository.Get(eventoId);
109 if (_recordador != null) 136 if (_recordador != null)
110 _recordador.Recordar(evento); 137 _recordador.Recordar(evento);
138 }
139
140 private void Notify(Evento evento)
141 {
142 if (_publicador != null)
143 _publicador.Publicar(evento);
111 } 144 }
112 145
113 public void RegistrarPonente(string nombre, string mail, string twitter, string blog) 146 public void RegistrarPonente(string nombre, string mail, string twitter, string blog)
114 { 147 {
115 var ponente = new Ponente(nombre, mail, twitter, blog); 148 var ponente = new Ponente(nombre, mail, twitter, blog);