# HG changeset patch # User nelopauselli # Date 1312832572 10800 # Node ID 222362c294167add0d7c3405f47f6c27a29614c0 # Parent 1deccd6c3cb2918e14b16e2397830c00d701f561 UI para asignación de roles diff -r 1deccd6c3cb2 -r 222362c29416 Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs --- 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 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 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 diff -r 1deccd6c3cb2 -r 222362c29416 Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs --- a/Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/Cruds/PersonaCrud.cs Mon Aug 08 16:42:52 2011 -0300 @@ -24,7 +24,7 @@ { using (_requestEmulator.Invoke()) { - _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com"); + _personaService.Add("Nelo Pauselli", "nelopauselli", "nelopauselli@gmail.com", "http://nelopauselli.blogspot.com", null); } using (_requestEmulator.Invoke()) @@ -63,7 +63,7 @@ { using (_requestEmulator.Invoke()) { - _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com"); + _personaService.Add("Pablo Morales", "pablomorales", "pablomorales@gmail.com", "http://pablomorales.blogspot.com", new[]{Roles.Usuario}); } using (_requestEmulator.Invoke()) diff -r 1deccd6c3cb2 -r 222362c29416 Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs --- a/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/PersonaServiceTests.cs Mon Aug 08 16:42:52 2011 -0300 @@ -66,7 +66,7 @@ var personaRepository = DefaultPersonaRepository; var personaService = new PersonaService(personaRepository); - var r = personaService.Add("Mariano Pauselli", "marianopauselli", string.Empty, string.Empty); + var r = personaService.Add("Mariano Pauselli", "marianopauselli", string.Empty, string.Empty, null); Assert.IsTrue(r.Succeful); var todas = personaService.GetAll(); @@ -81,7 +81,7 @@ Assert.AreEqual(p1, p2); Assert.AreSame(p1, p2); - personaService.Update(personaId, p1.Nombre, p1.Twitter, "marianopauselli@gmail.com", string.Empty); + personaService.Update(personaId, p1.Nombre, p1.Twitter, "marianopauselli@gmail.com", string.Empty,null); var p3 = personaService.GetById(personaId); Assert.IsNotNull(p3); diff -r 1deccd6c3cb2 -r 222362c29416 Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj --- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 08 15:24:26 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Mon Aug 08 16:42:52 2011 -0300 @@ -233,6 +233,9 @@ + + +