comparison Agendas/trunk/src/Agendas.Domain/Agenda.cs @ 53:d149bfea3892

Tratamos las validaciones como resultados y no como excepciones, dejamos las excepciones solo para lo que no esperamos que suceda.
author nelopauselli
date Sat, 14 May 2011 12:45:50 -0300
parents 3ebe89c88caa
children 3059a5f8930f
comparison
equal deleted inserted replaced
52:7b3a32bbdfa0 53:d149bfea3892
18 _ponenteRepository = ponenteRepository; 18 _ponenteRepository = ponenteRepository;
19 _eventosRepository = eventosRepository; 19 _eventosRepository = eventosRepository;
20 _recordador = recordador; 20 _recordador = recordador;
21 } 21 }
22 22
23 public void Publicar(string titulo, string ponenteNombre, DateTime? fecha) 23 public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha)
24 { 24 {
25 var ponente = GetPonente(ponenteNombre); 25 var ponente = GetPonente(ponenteNombre);
26 26
27 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo); 27 var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo);
28 evento.Publicar(ponente, fecha); 28 evento.Publicar(ponente, fecha);
29 29
30 if (!evento.Fecha.HasValue) 30 if (!evento.Fecha.HasValue)
31 throw new ValidationException(); 31 return new Resultado(false);
32 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre)) 32 if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
33 throw new ValidationException(); 33 return new Resultado(false);
34 34
35 if (_publicador != null) 35 if (_publicador != null)
36 _publicador.Publicar(evento); 36 _publicador.Publicar(evento);
37 37
38 _eventosRepository.Save(evento); 38 _eventosRepository.Save(evento);
39 _ponenteRepository.Save(ponente); 39 _ponenteRepository.Save(ponente);
40
41 return new Resultado(true);
40 } 42 }
41 43
42 public void Recordar(Guid eventoId) 44 public void Recordar(Guid eventoId)
43 { 45 {
44 var evento = _eventosRepository.Get(eventoId); 46 var evento = _eventosRepository.Get(eventoId);
45 if (_recordador != null) 47 if (_recordador != null)
46 _recordador.Recordar(evento); 48 _recordador.Recordar(evento);
47 } 49 }
48 50
49 public void Proponer(string titulo, string ponenteNombre) 51 public Resultado Proponer(string titulo, string ponenteNombre)
50 { 52 {
51 var ponente = GetPonente(ponenteNombre); 53 var ponente = GetPonente(ponenteNombre);
52 var evento = new Evento (titulo); 54 var evento = new Evento (titulo);
53 evento.Actualizar(ponente); 55 evento.Actualizar(ponente);
54 56
55 if (string.IsNullOrWhiteSpace(evento.Titulo)) 57 if (string.IsNullOrWhiteSpace(evento.Titulo))
56 throw new ValidationException(); 58 return new Resultado(false);
59
57 _eventosRepository.Save(evento); 60 _eventosRepository.Save(evento);
58 _ponenteRepository.Save(ponente); 61 _ponenteRepository.Save(ponente);
62
63 return new Resultado(true);
59 } 64 }
60 65
61 public IList<Evento> GetEventosPropuestos() 66 public IList<Evento> GetEventosPropuestos()
62 { 67 {
63 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>(); 68 return _eventosRepository.GetEventosSinFecha() ?? new List<Evento>();
66 public IList<Evento> GetEventosPublicados() 71 public IList<Evento> GetEventosPublicados()
67 { 72 {
68 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>(); 73 return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
69 } 74 }
70 75
71 public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha) 76 public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
72 { 77 {
73 var evento = _eventosRepository.Get(id); 78 var evento = _eventosRepository.Get(id);
74 if (evento == null) 79 if (evento == null)
75 throw new EventoNotFoundException(); 80 throw new EventoNotFoundException(id);
76 81
77 var ponente = GetPonente(ponenteNombre); 82 var ponente = GetPonente(ponenteNombre);
78 83
79 if (evento.Titulo != titulo) 84 if (evento.Titulo != titulo)
80 evento.CambiarTitulo(titulo); 85 evento.CambiarTitulo(titulo);
82 if (evento.Fecha != fecha || evento.Ponente != ponente) 87 if (evento.Fecha != fecha || evento.Ponente != ponente)
83 evento.Actualizar(ponente, fecha); 88 evento.Actualizar(ponente, fecha);
84 89
85 if (_publicador != null) 90 if (_publicador != null)
86 _publicador.Publicar(evento); 91 _publicador.Publicar(evento);
92
93 return new Resultado(true);
87 } 94 }
88 95
89 public Evento GetEvento(Guid id) 96 public Evento GetEvento(Guid id)
90 { 97 {
91 return _eventosRepository.Get(id); 98 return _eventosRepository.Get(id);
102 var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre); 109 var ponente=_ponenteRepository.GetByNombre(nombre) ?? new Ponente(nombre);
103 _ponenteRepository.Save(ponente); 110 _ponenteRepository.Save(ponente);
104 return ponente; 111 return ponente;
105 } 112 }
106 113
107 public void ModificarPropuesta(Guid id, string titulo, string ponenteNombre) 114 public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
108 { 115 {
109 ModificarEvento(id, titulo, ponenteNombre, null); 116 return ModificarEvento(id, titulo, ponenteNombre, null);
110 } 117 }
111 118
112 public void RealizarEvento(Guid eventoId, string sintesis) 119 public void RealizarEvento(Guid eventoId, string sintesis)
113 { 120 {
114 var evento = _eventosRepository.Get(eventoId); 121 var evento = _eventosRepository.Get(eventoId);
115 if (evento != null) 122 if (evento != null)
116 evento.Realizado(sintesis); 123 evento.Realizado(sintesis);
117 } 124 }
118 } 125 }
119
120 public class EventoNotFoundException : Exception
121 {
122 }
123
124 public class UsuarioNoAutenticadoException : Exception
125 {
126 }
127 } 126 }