public ActionResult CadastrarUsuarioParticular(CadastroViewModel novoUsuario) { DAOUsuarioParticular daoUsuarioParticular = null; UsuarioParticular usuarioParticular = null; try { daoUsuarioParticular = new DAOUsuarioParticular(); usuarioParticular = new UsuarioParticular(); usuarioParticular.Nome = novoUsuario.Nome; usuarioParticular.Email = novoUsuario.Email; usuarioParticular.Senha = novoUsuario.Senha; if (daoUsuarioParticular.IncluirUsuarioParticular(usuarioParticular)) { Session["Usuario"] = usuarioParticular; } return(Json(new { info = "redirect", data = Url.Action("UsuarioParticular", "Perfil") })); } catch (Exception ex) { throw ex; } }
public bool IncluirUsuarioParticular(UsuarioParticular novoUsuarioParticular) { SqlConnection connection = null; StringBuilder query = null; SqlCommand command = null; DateTime dataHoraCadastro; try { dataHoraCadastro = DateTime.Now; query = new StringBuilder(); query.Append("BEGIN TRANSACTION "); query.Append("INSERT INTO Usuarios ( "); query.Append(" Nome, "); query.Append(" DataHoraCadastro, "); query.Append(" Email, "); query.Append(" IdTipoPerfil, "); query.Append(" Senha "); query.Append(") VALUES ( "); query.Append(" @Nome, "); query.Append(" @DataHoraCadastro, "); query.Append(" @Email, "); query.Append(" @IdTipoPerfil, "); query.Append(" @Senha); "); query.Append("SET @Id = SCOPE_IDENTITY(); "); query.Append("INSERT INTO UsuariosParticulares (Id) VALUES (@Id) "); query.Append("COMMIT"); connection = new SqlConnection(WebConfigurationManager.ConnectionStrings["ConnectionEstudo"].ConnectionString); connection.Open(); command = connection.CreateCommand(); command.CommandType = CommandType.Text; command.CommandText = query.ToString(); command.Parameters.AddWithValue("@Nome", novoUsuarioParticular.Nome); command.Parameters.AddWithValue("@DataHoraCadastro", dataHoraCadastro); command.Parameters.AddWithValue("@Email", novoUsuarioParticular.Email); command.Parameters.AddWithValue("@IdTipoPerfil", (int)Usuario.TipoPerfil.UsuarioParticular); command.Parameters.AddWithValue("@Senha", novoUsuarioParticular.Senha); command.Parameters.Add("@Id", SqlDbType.Int).Direction = ParameterDirection.Output; if (command.ExecuteNonQuery() > 0) { novoUsuarioParticular.Id = (int)command.Parameters["@Id"].Value; novoUsuarioParticular.DataHoraCadastro = dataHoraCadastro; return(true); } else { return(false); } } catch (Exception ex) { throw ex; } }
public UsuarioParticular CompletarPerfilUsuarioParticular(Usuario usuario) { string connectionString; StringBuilder query = null; SqlConnection connection = null; SqlCommand command = null; DateTime dataHoraRegistro; UsuarioParticular usuarioParticular = null; SqlDataReader dataReader = null; try { dataHoraRegistro = DateTime.Now; query = new StringBuilder(); query.Append("SELECT "); query.Append(" Id, "); query.Append(" IdEstado, "); query.Append(" IdCidade, "); query.Append(" PathFotoPerfil "); query.Append("FROM UsuariosParticulares "); query.Append("WHERE Id = @Id "); connectionString = WebConfigurationManager.ConnectionStrings["ConnectionEstudo"].ConnectionString; using (connection = new SqlConnection(connectionString)) { using (command = connection.CreateCommand()) { command.CommandType = CommandType.Text; command.CommandText = query.ToString(); command.Parameters.AddWithValue("@Id", usuario.Id); connection.Open(); using (dataReader = command.ExecuteReader()) { if (dataReader.HasRows) { dataReader.Read(); usuarioParticular = new UsuarioParticular(usuario); usuarioParticular.Id = (int)dataReader["Id"]; } } } } return(usuarioParticular); } finally { } }
public ActionResult AbrirPerfilUsuarioParticular() { UsuarioParticular usuario = null; try { usuario = (UsuarioParticular)Session["Usuario"]; return(View("PerfilUsuarioParticular", usuario)); } catch (Exception ex) { throw ex; } }
public UsuarioParticular IncluirComplementoUsuarioParticular(Usuario usuario) { string connectionString; StringBuilder query = null; SqlConnection connection = null; SqlCommand command = null; DateTime dataHoraRegistro; UsuarioParticular usuarioParticular = null; try { dataHoraRegistro = DateTime.Now; query = new StringBuilder(); query.Append("INSERT INTO UsuariosParticulares (Id) VALUES (@Id) "); connectionString = WebConfigurationManager.ConnectionStrings["ConnectionEstudo"].ConnectionString; using (connection = new SqlConnection(connectionString)) { using (command = connection.CreateCommand()) { command.CommandType = CommandType.Text; command.CommandText = query.ToString(); command.Parameters.AddWithValue("@Id", usuario.Id); connection.Open(); if (command.ExecuteNonQuery() > 0) { usuarioParticular = new UsuarioParticular(usuario); } } } return(usuarioParticular); } finally { } }
public JsonResult ConfirmarUsuario(string senha) { Usuario usuario = (Usuario)Session["Usuario"]; if (usuario.Senha == senha) { if (usuario.Perfil == Usuario.TipoPerfil.UsuarioParticular) { DAOUsuarioParticular daoUsuarioParticular = new DAOUsuarioParticular(); UsuarioParticular usuarioParticular = daoUsuarioParticular.CompletarPerfilUsuarioParticular(usuario); if (usuarioParticular != null) { Session["Usuario"] = usuarioParticular; return(Json(new { info = "redirect", data = Url.Action("UsuarioParticular", "Perfil") })); } } else if (usuario.Perfil == Usuario.TipoPerfil.UsuarioProfissional) { DAOUsuarioProfissional daoUsuarioProfissional = new DAOUsuarioProfissional(); UsuarioProfissional usuarioProfissional = daoUsuarioProfissional.CompletarPerfilUsuarioProfissional(usuario); if (usuarioProfissional != null) { Session["Usuario"] = usuarioProfissional; return(Json(new { info = "redirect", data = Url.Action("UsuarioProfissional", "Perfil") })); } } } return(new JsonResult()); }
public JsonResult DefinirPerfil(string tipoPerfil) { Usuario usuario = (Usuario)Session["Usuario"]; if (usuario.Perfil == Usuario.TipoPerfil.PerfilIndefinido) { if (tipoPerfil == "Particular") { DAOUsuarioParticular daoUsuarioParticular = new DAOUsuarioParticular(); UsuarioParticular usuarioParticular = daoUsuarioParticular.IncluirComplementoUsuarioParticular(usuario); if (usuarioParticular != null) { Session["Usuario"] = usuarioParticular; return(Json(new { info = "redirect", data = Url.Action("UsuarioParticular", "Perfil") })); } } else if (tipoPerfil == "Profissional") { DAOUsuarioProfissional daoUsuarioProfissional = new DAOUsuarioProfissional(); UsuarioProfissional usuarioProfissional = daoUsuarioProfissional.IncluirComplementoUsuarioProfissional(usuario); if (usuarioProfissional != null) { Session["Usuario"] = usuarioProfissional; return(Json(new { info = "redirect", data = Url.Action("UsuarioProfissional", "Perfil") })); } } } return(new JsonResult()); }
public UsuarioParticular ObterUsuarioParticular(int idUsuarioParticular) { string connectionString; StringBuilder query = null; SqlConnection connection = null; SqlCommand command = null; SqlDataReader dataReader = null; UsuarioParticular usuarioParticular = null; try { query = new StringBuilder(); query.Append("SELECT "); query.Append(" U.Id, "); query.Append(" U.Nome, "); query.Append(" U.Sobrenome, "); query.Append(" U.Sexo, "); query.Append(" U.DataNascimento, "); query.Append(" U.NumeroCelular, "); query.Append(" U.DataHoraCadastro, "); query.Append(" U.Senha, "); query.Append(" U.Email, "); query.Append(" U.IdTipoPerfil, "); query.Append(" UP.IdEstado, "); query.Append(" UP.IdCidade, "); query.Append(" UP.PathFotoPerfil "); query.Append("FROM Usuarios U INNER JOIN UsuariosParticulares UP ON U.Id = UP.Id "); query.Append("WHERE U.Id = @Id "); connectionString = WebConfigurationManager.ConnectionStrings["ConnectionEstudo"].ConnectionString; using (connection = new SqlConnection(connectionString)) { using (command = connection.CreateCommand()) { command.CommandType = CommandType.Text; command.CommandText = query.ToString(); command.Parameters.AddWithValue("@Id", idUsuarioParticular); connection.Open(); using (dataReader = command.ExecuteReader()) { if (dataReader.HasRows) { dataReader.Read(); usuarioParticular = new UsuarioParticular(); usuarioParticular.Id = (int)dataReader["Id"]; usuarioParticular.Nome = dataReader["Nome"].ToString(); usuarioParticular.Sobrenome = dataReader["Sobrenome"].ToString(); usuarioParticular.Sexo = dataReader["Sexo"].ToString(); usuarioParticular.NumeroCelular = dataReader["NumeroCelular"].ToString(); usuarioParticular.DataHoraCadastro = (DateTime)dataReader["DataHoraCadastro"]; usuarioParticular.Senha = dataReader["Senha"].ToString(); usuarioParticular.Email = dataReader["Email"].ToString(); usuarioParticular.Perfil = (Usuario.TipoPerfil)dataReader["IdTipoPerfil"]; if (String.IsNullOrEmpty(dataReader["DataNascimento"].ToString())) { usuarioParticular.DataNascimento = null; } else { usuarioParticular.DataNascimento = (DateTime)dataReader["DataNascimento"]; } if (String.IsNullOrEmpty(dataReader["IdEstado"].ToString())) { usuarioParticular.Estado.Id = 0; } else { usuarioParticular.Estado.Id = (int)dataReader["IdEstado"]; } if (String.IsNullOrEmpty(dataReader["IdCidade"].ToString())) { usuarioParticular.Municipio.Id = 0; } else { usuarioParticular.Municipio.Id = (int)dataReader["IdCidade"]; } } } } } return(usuarioParticular); } finally { } }
public JsonResult LogarPeloFacebook(FacebookAccountViewModel facebookLogin) { DAOUsuarioProfissional daoUsuarioProfissional = null; UsuarioProfissional usuarioProfissional = null; string urlGetOpenGraphAccesToken; HttpWebRequest accessTokenRequest = null; HttpWebResponse accessTokenResponse = null; string accessTokenResponseText = null; string accessToken = null; string urlCheckUserAccessToken; string checkAccessTokenResponseText; DAOFacebookAccount daoFacebookAccount = null; FacebookAccount facebookAccount = null; DAOUsuario daoUsuario = null; Usuario usuario = null; DAOUsuarioParticular daoUsuarioParticular = null; UsuarioParticular usuarioParticular = null; try { urlGetOpenGraphAccesToken = @"https://graph.facebook.com/oauth/access_token?type=client_cred&client_id=1753687224853096&client_secret=6af778d15f3ce0ffa2b4e1acdcede3a9"; accessTokenRequest = (HttpWebRequest)WebRequest.Create(urlGetOpenGraphAccesToken); accessTokenResponse = (HttpWebResponse)accessTokenRequest.GetResponse(); using (var accessTokenResponseReader = new System.IO.StreamReader(accessTokenResponse.GetResponseStream(), Encoding.UTF8)) { accessTokenResponseText = accessTokenResponseReader.ReadToEnd(); } accessToken = accessTokenResponseText.Substring(13); //Buscar uma maneira melhor de fazer isto (extrair o token da string). urlCheckUserAccessToken = String.Format("https://graph.facebook.com/debug_token?input_token={0}&access_token={1}", facebookLogin.AccessToken, accessToken); HttpWebRequest checkUserAccessTokenRequest = (HttpWebRequest)WebRequest.Create(urlCheckUserAccessToken); HttpWebResponse checkUserAccessTokenResponse = (HttpWebResponse)checkUserAccessTokenRequest.GetResponse(); if (checkUserAccessTokenResponse.StatusCode == HttpStatusCode.OK) { using (var checkAccessTokenResponseReader = new System.IO.StreamReader(checkUserAccessTokenResponse.GetResponseStream(), Encoding.UTF8)) { checkAccessTokenResponseText = checkAccessTokenResponseReader.ReadToEnd(); } Newtonsoft.Json.Linq.JObject jsonCheckAccessTokenResponse = JsonConvert.DeserializeObject(checkAccessTokenResponseText) as Newtonsoft.Json.Linq.JObject; if (jsonCheckAccessTokenResponse["data"]["is_valid"].ToString() == "True") { if (jsonCheckAccessTokenResponse["data"]["app_id"].ToString() == "1753687224853096") { if (jsonCheckAccessTokenResponse["data"]["user_id"].ToString() == facebookLogin.Id) { daoFacebookAccount = new DAOFacebookAccount(); // Tenta obter um "FacebookAccount" no banco de dados, checando se é um usuário retornante. facebookAccount = daoFacebookAccount.ObterFacebookAccount(facebookLogin.Id); if (facebookAccount != null) // Se o "facebookAccount" entrar na condição de "não nulo", ou seja, foi encontrada uma instância com o mesmo "FacebookId" no banco de dados, o usuário em questão é considerado retornante, não é a primeira vez que ele loga via Facebook. { // Obtém o complemento dos dados, caso o usuário seja um particular (obtém-se na tabela "UsuariosParticulares"). if (facebookAccount.Usuario.Perfil == Usuario.TipoPerfil.UsuarioParticular) { daoUsuarioParticular = new DAOUsuarioParticular(); usuarioParticular = daoUsuarioParticular.ObterUsuarioParticular(facebookAccount.Usuario.Id); usuarioParticular.Facebook = facebookAccount; facebookAccount.Usuario = usuarioParticular; Session["Usuario"] = usuarioProfissional; return(Json(new { info = "redirect", data = Url.Action("UsuarioParticular", "Perfil") })); } // Obtém o complemento dos dados, caso o usuário seja um profissional (obtém-se na tabela "UsuáriosProfissionais"). else if (facebookAccount.Usuario.Perfil == Usuario.TipoPerfil.UsuarioProfissional) { daoUsuarioProfissional = new DAOUsuarioProfissional(); usuarioProfissional = daoUsuarioProfissional.ObterUsuarioProfissional(facebookAccount.Usuario.Id); usuarioProfissional.Facebook = facebookAccount; facebookAccount.Usuario = usuarioProfissional; Session["Usuario"] = usuarioProfissional; return(Json(new { info = "redirect", data = Url.Action("UsuarioProfissional", "Perfil") })); } } else // Neste caso, não foi encontrado nenhum registro no banco com este "FacebookId", assumindo que este usuário entrou pelo Facebook pela primeira vez. { daoUsuario = new DAOUsuario(); // Busca-se por um registro de usuário com o e-mail retornado pelo Facebook, para descobrir se esta pessoa já tinha um cadastro tradicional (entrava com e-mail e senha anteriormente). usuario = daoUsuario.ObterUsuarioPorEmail(facebookLogin.Email); if (usuario != null) { // Neste caso, apesar de o usuário ter logado pela primeira vez via Facebook, o e-mail que o Facebook retornou já consta em um perfil na tabela "Usuarios" (ele já havia logado via e-mail/senha tradicionalmente). // Este usuário deve ser informado disto e informar a senha referente ao e-mail encontrado para poder prosseguir no site. Session["Usuario"] = usuario; return(Json(new { info = "exigirSenhaEmailEncontrado" })); } else { // Neste caso, o usuário será tratado como um usuário inédito, ou seja, é a primeira vez que o mesmo logou no sistema e escolheu o fazer via Facebook, pois o seu "FaceBookId" não consta na tabela "FacebookAccounts" e seu e-mail obtido do Facebook também não consta na tabela de "Usuarios". Este usuário será incluído com o perfil "Indefinido" (temporariamente), e perguntado com qual tipo de perfil ele deseja prosseguir. usuario = new Usuario(); usuario.Nome = facebookLogin.Nome; usuario.Email = facebookLogin.Email; usuario.Facebook = new FacebookAccount(); usuario.Facebook.FacebookId = facebookLogin.Id; usuario.Facebook.Nome = facebookLogin.Nome; usuario.Facebook.Email = facebookLogin.Email; usuario.Facebook.AccessToken = facebookLogin.AccessToken; usuario.Perfil = Usuario.TipoPerfil.PerfilIndefinido; if (daoUsuario.IncluirUsuarioComFacebook(usuario)) { Session["Usuario"] = usuario; } return(Json(new { info = "solicitarDefinicaoPerfil" })); } } } } } } return(Json(new { info = "naoDefinido" })); } catch (Exception ex) { throw ex; } }