diff Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs @ 180:222362c29416

UI para asignación de roles
author nelopauselli
date Mon, 08 Aug 2011 16:42:52 -0300
parents 33e57fd1a6c9
children 212c664db5aa
line wrap: on
line diff
--- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Mon Aug 08 15:24:26 2011 -0300
+++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs	Mon Aug 08 16:42:52 2011 -0300
@@ -40,15 +40,16 @@
 
 		private static void SetDefaultGroups(Persona persona)
 		{
-			persona.Roles.Add(Roles.Usuario);
-
 #if DEBUG
 			var administradores = new[] {"nelopauselli", "alabras", "jjmoa", "jrowies"};
 #else
 			var administradores = new[] {"alabras", "jrowies", "jorgegamba"};
 #endif
 			if (administradores.Contains(persona.Twitter))
+			{
+				persona.Roles.Add(Roles.Usuario);
 				persona.Roles.Add(Roles.Administrador);
+			}
 		}
 
 		public void AddCuenta(IdentityProviderEnum identityProvider, string username)
@@ -78,7 +79,7 @@
 	        return _personaRepository.Get(id);
 	    }
 
-        public Resultado Add(string nombre, string twitter, string mail, string blog)
+		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};
 
@@ -87,12 +88,21 @@
 
 			SetDefaultGroups(persona);
 
+			if (roles != null)
+			{
+				persona.Roles.Clear();
+				foreach (var rol in roles)
+				{
+					persona.Roles.Add(rol);
+				}
+			}
+
 			_personaRepository.Save(persona);
 
             return new Resultado(true);
         }
 
-		public Resultado Update(Guid id, string nombre, string twitter, string mail, string blog)
+		public Resultado Update(Guid id, string nombre, string twitter, string mail, string blog, IEnumerable<string> roles)
 	    {
 	        var persona = _personaRepository.Get(id);
             if (persona == null)
@@ -106,7 +116,16 @@
 
 			//TODO: ¿que hacemos con la cuenta de twitter asociada?
 
-	        return new Resultado(true);
+			if (roles!=null)
+			{
+				persona.Roles.Clear();
+				foreach (var rol in roles)
+				{
+					persona.Roles.Add(rol);
+				}
+			}
+
+			return new Resultado(true);
 	    }
 	}
 }
\ No newline at end of file