diff Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs @ 209:a36a76bd6ec3

Se soluciona ticket 173. Se agrega eliminación de personas siempre y cuando no esté asociada a ninguna van.
author alabra
date Wed, 24 Aug 2011 19:27:30 -0300
parents 5346c0500594
children b9850b647a4e
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Wed Aug 24 11:30:06 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Wed Aug 24 19:27:30 2011 -0300
@@ -8,10 +8,12 @@
 	public class PersonaService
 	{
 		private readonly IPersonaRepository _personaRepository;
+	    private readonly IEventoRepository _eventoRepository;
 
-		public PersonaService(IPersonaRepository personaRepository)
+		public PersonaService(IPersonaRepository personaRepository, IEventoRepository eventoRepository)
 		{
 			_personaRepository = personaRepository;
+		    _eventoRepository = eventoRepository;
 		}
 
 		public bool CreateIfNotExist(IdentityProviderEnum identityProvider, string username, string nombre)
@@ -126,5 +128,22 @@
 
 			return new Resultado(true, "Datos actualizados");
 	    }
+
+        public Resultado Delete(Guid id)
+        {
+            var persona = _personaRepository.Get(id);
+            if (persona == null)
+                return new Resultado(false, string.Format("No se pudo encontrar la persona cuyo Id sea {0}", id));
+
+            var existeEnEvento = _eventoRepository.ExistePonente(persona);
+            if (existeEnEvento)
+                return new Resultado(false,
+                                     string.Format(
+                                         "La persona {0} está asociada a un Evento por lo que es imposible eliminarla.",
+                                         persona.Nombre));
+
+            _personaRepository.Delete(persona);
+            return new Resultado(true, "");
+        }
 	}
 }
\ No newline at end of file