# HG changeset patch # User Nelo@Kenia.neluz.int # Date 1307766059 10800 # Node ID 0bca45e1e664cb952bdf8afa8802411467b1761a # Parent 90ce239cfa6d5237123e82b2b563dd2e820be2a6 Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Domain/IdentityContext.cs --- a/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/IdentityContext.cs Sat Jun 11 01:20:59 2011 -0300 @@ -35,7 +35,9 @@ public static Persona GetUsuario() { - var cuenta = _personaRepository.GetCuenta(IdentityProviderEnum.Twitter, GetUserName()); + var identification = new Identification(GetUserName()); + + var cuenta = _personaRepository.GetCuenta(identification.IdentityProvider, identification.LogonName); return cuenta != null ? cuenta.Persona : null; } } diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs --- a/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Domain/Services/PersonaService.cs Sat Jun 11 01:20:59 2011 -0300 @@ -1,4 +1,6 @@ -using AltNetHispano.Agendas.Domain.Repositories; +using System; +using System.Linq; +using AltNetHispano.Agendas.Domain.Repositories; namespace AltNetHispano.Agendas.Domain.Services { @@ -32,5 +34,22 @@ } return true; } + + public void AddCuenta(IdentityProviderEnum identityProvider, string username) + { + var persona = IdentityContext.GetUsuario(); + persona.AddCuenta(new Cuenta(identityProvider, username)); + + if (identityProvider == IdentityProviderEnum.Twitter) + persona.Twitter = username; + } + + public void RemoveCuenta(IdentityProviderEnum identityProvider, string username) + { + var persona = IdentityContext.GetUsuario(); + var cuenta = persona.Cuentas.FirstOrDefault(c => c.IdentityProvider == identityProvider && c.LogonName == username); + if (cuenta != null) + persona.RemoveCuenta(cuenta); + } } } \ No newline at end of file diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs --- a/Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.NHibernate/NhHelper.cs Sat Jun 11 01:20:59 2011 -0300 @@ -26,7 +26,7 @@ orm.Cascade(Cascade.None); orm.Cascade(Cascade.None); - orm.Cascade(Cascade.All); + orm.Cascade(Cascade.All | Cascade.DeleteOrphans); var mapper = new Mapper(orm); diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Tests/TestBase.cs --- a/Agendas/trunk/src/Agendas.Tests/TestBase.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TestBase.cs Sat Jun 11 01:20:59 2011 -0300 @@ -35,9 +35,12 @@ protected static void SetCurrentUser(string username, string nombre) { const IdentityProviderEnum identityProvider = IdentityProviderEnum.Twitter; + string logonName = null; + if (username != null) + logonName = Identification.Map[(int) IdentityProviderEnum.Twitter] + username; var seguridad = new Mock(); - seguridad.Setup(s => s.GetUserName()).Returns(username); + seguridad.Setup(s => s.GetUserName()).Returns(logonName); IPersonaRepository personaRepository = new PersonaRepository(); var service = new PersonaService(personaRepository); diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Tests/TrackTests.cs --- a/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Tests/TrackTests.cs Sat Jun 11 01:20:59 2011 -0300 @@ -18,7 +18,7 @@ var agenda = new Agenda(null, repository, DefaultPersonaRepository); var fecha = DateTime.Now.AddDays(5); - agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van); + agenda.Agendar("Html 5", "jjmontes", fecha, urlInvitacion, TipoEvento.Van); var evento = repository.GetEventosConFecha().First(); Assert.AreEqual(1, evento.Tracks.Count()); diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs --- a/Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter/ITwitterAdapter.cs Sat Jun 11 01:20:59 2011 -0300 @@ -42,6 +42,7 @@ return showUserResponse.Content; return showUserResponse.ErrorMessage; } + return string.Empty; } diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Twitter/oAuthTwitter.cs --- a/Agendas/trunk/src/Agendas.Twitter/oAuthTwitter.cs Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Twitter/oAuthTwitter.cs Sat Jun 11 01:20:59 2011 -0300 @@ -37,5 +37,22 @@ { return _twitterAdapter.GetAccessToken(ConsumerKey, ConsumerSecret, requestToken, verifier); } + + public static string GetResponseContent(string response, string tagName) + { + var tagStart = "\"" + tagName + "\":"; + var tagEnd = ","; + + var start = response.IndexOf(tagStart) + tagStart.Length; + if (start > tagStart.Length) + { + var end = response.IndexOf(tagEnd, start); + if (end > 0) + { + return response.Substring(start + 1, end - start - 2); + } + } + return string.Empty; + } } } diff -r 90ce239cfa6d -r 0bca45e1e664 Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj --- a/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Wed Jun 08 08:40:04 2011 -0300 +++ b/Agendas/trunk/src/Agendas.Web/Agendas.Web.csproj Sat Jun 11 01:20:59 2011 -0300 @@ -64,6 +64,7 @@ + Global.asax @@ -76,6 +77,7 @@ + @@ -191,6 +193,9 @@ + + +