diff 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
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sat May 14 12:17:35 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Agenda.cs	Sat May 14 12:45:50 2011 -0300
@@ -20,23 +20,25 @@
 			_recordador = recordador;
 		}
 
-        public void Publicar(string titulo, string ponenteNombre, DateTime? fecha)
+        public Resultado Publicar(string titulo, string ponenteNombre, DateTime? fecha)
         {
         	var ponente = GetPonente(ponenteNombre);
 
         	var evento = _eventosRepository.GetPropuestaByTitulo(titulo) ?? new Evento (titulo);
             evento.Publicar(ponente, fecha);
 
-        	if (!evento.Fecha.HasValue)
-        		throw new ValidationException();
-        	if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
-        		throw new ValidationException();
+			if (!evento.Fecha.HasValue)
+				return new Resultado(false);
+			if (string.IsNullOrWhiteSpace(evento.Ponente.Nombre))
+				return new Resultado(false);
 
         	if (_publicador != null)
         		_publicador.Publicar(evento);
 
         	_eventosRepository.Save(evento);
         	_ponenteRepository.Save(ponente);
+
+        	return new Resultado(true);
         }
 
 		public void Recordar(Guid eventoId)
@@ -46,16 +48,19 @@
 				_recordador.Recordar(evento);
 		}
 
-		public void Proponer(string titulo, string ponenteNombre)
+		public Resultado Proponer(string titulo, string ponenteNombre)
 		{
 			var ponente = GetPonente(ponenteNombre);
 			var evento = new Evento (titulo);
 		    evento.Actualizar(ponente);
 
 			if (string.IsNullOrWhiteSpace(evento.Titulo))
-				throw new ValidationException();
+				return new Resultado(false);
+
 			_eventosRepository.Save(evento);
 			_ponenteRepository.Save(ponente);
+
+			return new Resultado(true);
 		}
 
         public IList<Evento> GetEventosPropuestos()
@@ -68,11 +73,11 @@
             return _eventosRepository.GetEventosConFecha() ?? new List<Evento>();
         }
 
-		public void ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
+		public Resultado ModificarEvento(Guid id, string titulo, string ponenteNombre, DateTime? fecha)
 		{
 			var evento = _eventosRepository.Get(id);
 			if (evento == null)
-				throw new EventoNotFoundException();
+				throw new EventoNotFoundException(id);
 
 			var ponente = GetPonente(ponenteNombre);
 
@@ -84,6 +89,8 @@
 
 		    if (_publicador != null)
 				_publicador.Publicar(evento);
+
+			return new Resultado(true);
 		}
 
 		public Evento GetEvento(Guid id)
@@ -104,9 +111,9 @@
 		    return ponente;
 		}
 
-		public void ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
+		public Resultado ModificarPropuesta(Guid id, string titulo, string ponenteNombre)
 		{
-			ModificarEvento(id, titulo, ponenteNombre, null);
+			return ModificarEvento(id, titulo, ponenteNombre, null);
 		}
 
 	    public void RealizarEvento(Guid eventoId, string sintesis)
@@ -116,12 +123,4 @@
                 evento.Realizado(sintesis);
 	    }
 	}
-
-	public class EventoNotFoundException : Exception
-	{
-	}
-
-	public class UsuarioNoAutenticadoException : Exception
-    {
-    }
 }
\ No newline at end of file