diff Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs @ 219:b9850b647a4e

Agregando alta de ponente durante la carga del evento
author nelopauselli
date Thu, 08 Sep 2011 11:22:10 -0300
parents a36a76bd6ec3
children e6c041d8e1bf
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Thu Sep 08 09:38:47 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Thu Sep 08 11:22:10 2011 -0300
@@ -81,9 +81,17 @@
 	        return _personaRepository.Get(id);
 	    }
 
-		public Resultado Add(string nombre, string twitter, string mail, string blog, IEnumerable<string> roles)
-        {
-            var persona = new Persona(nombre) {Twitter = twitter, Mail = mail, Blog = blog};
+		public ResultadoAdd Add(string nombre, string twitter, string mail, string blog, IEnumerable<string> roles)
+		{
+			var persona = _personaRepository.GetByNombre(nombre);
+			if (persona!=null)
+				return new ResultadoAdd("Ya existe una persona con el nombre " + nombre);
+
+			persona = _personaRepository.GetByTwitter(twitter);
+			if (persona != null)
+				return new ResultadoAdd("Ya existe una persona con el twitter " + twitter);
+
+			persona = new Persona(nombre) {Twitter = twitter, Mail = mail, Blog = blog};
 
 			if (!string.IsNullOrWhiteSpace(twitter))
 				persona.AddCuenta(new Cuenta(IdentityProviderEnum.Twitter, twitter));
@@ -101,7 +109,7 @@
 
 			_personaRepository.Save(persona);
 
-            return new Resultado(true, "Persona Agregada");
+			return new ResultadoAdd(true, "Persona Agregada", persona.Id, persona.Nombre);
         }
 
 		public Resultado Update(Guid id, string nombre, string twitter, string mail, string blog, IEnumerable<string> roles)