public int Salvar() { var ret = 0; var model = RecuperarPeloId(this.Id); using (var db = new ContextoBD()) { if (model == null) { db.Cidades.Add(this); } else { db.Cidades.Attach(this); db.Entry(this).State = EntityState.Modified; } db.SaveChanges(); ret = this.Id; } return(ret); //using (var conexao = new SqlConnection()) //{ // conexao.ConnectionString = ConfigurationManager.ConnectionStrings["principal"].ConnectionString; // conexao.Open(); // if (model == null) // { // var sql = "INSERT INTO cidade (nome, ativo, id_estado) VALUES (@nome, @ativo, @id_estado); SELECT CONVERT(INT, SCOPE_IDENTITY())"; // var parametros = new { nome = this.Nome, ativo = (this.Ativo ? 1 : 0), id_estado = this.IdEstado }; // ret = conexao.ExecuteScalar<int>(sql, parametros); // } // else // { // var sql = "UPDATE cidade SET nome = @nome, ativo=@ativo, id_estado=@id_estado WHERE id = @id"; // var parametros = new { nome = this.Nome, ativo = (this.Ativo ? 1 : 0), id_estado = this.IdEstado, id = this.Id }; // if (conexao.Execute(sql, parametros) > 0) // { // ret = this.Id; // } // } //using (var comando = new SqlCommand()) //{ // comando.Connection = conexao; // if (model == null) // { // comando.CommandText = "INSERT INTO cidade (nome, ativo, id_estado) VALUES (@nome, @ativo, @id_estado); SELECT CONVERT(INT, SCOPE_IDENTITY())"; // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@ativo", SqlDbType.VarChar).Value = (this.Ativo ? 1 : 0); // comando.Parameters.Add("@id_estado", SqlDbType.Int).Value = this.IdEstado; // ret = (int)comando.ExecuteScalar(); // } // else // { // comando.CommandText = "UPDATE cidade SET nome = @nome, ativo=@ativo, id_estado=@id_estado WHERE id = @id"; // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@ativo", SqlDbType.VarChar).Value = (this.Ativo ? 1 : 0); // comando.Parameters.Add("@id_estado", SqlDbType.Int).Value = this.IdEstado; // comando.Parameters.Add("@id", SqlDbType.Int).Value = this.Id; // if (comando.ExecuteNonQuery() > 0) // { // ret = this.Id; // } // } //} }
public int Salvar() { var ret = 0; var model = RecuperarPeloId(this.Id); using (var db = new ContextoBD()) { if (model == null) { if (!string.IsNullOrEmpty(this.Senha)) { this.Senha = CriptoHelper.HashMD5(this.Senha); } db.Usuarios.Add(this); //var sql = "INSERT INTO Usuario (nome, login, senha, email) VALUES (@nome, @login, @senha, @email); SELECT CONVERT(INT, SCOPE_IDENTITY())"; //var parametros = new //{ // nome = this.Nome, // login = this.Login, // senha = CriptoHelper.HashMD5(this.Senha), // email = this.Email //}; //ret = db.Database.Connection.ExecuteScalar<int>(sql, parametros); } else { db.Usuarios.Attach(this); db.Entry(this).State = EntityState.Modified; if (string.IsNullOrEmpty(this.Senha)) { db.Entry(this).Property(x => x.Senha).IsModified = false; } else { this.Senha = CriptoHelper.HashMD5(this.Senha); } //if (!string.IsNullOrEmpty(this.Senha)) //{ // var sql = // "UPDATE Usuario SET nome = @nome, login = @login, email = @email" + // ", senha = @senha" + // " WHERE id = @id"; // var parametros = new // { // nome = this.Nome, // login = this.Login, // senha = CriptoHelper.HashMD5(this.Senha), // email = this.Email // }; // if (db.Database.Connection.Execute(sql, parametros) > 0) // { // ret = this.Id; // } //} //else //{ // var sql = // "UPDATE Usuario SET nome = @nome, login = @login, email = @email" + // " WHERE id = @id"; // var parametros = new // { // nome = this.Nome, // login = this.Login, // senha = CriptoHelper.HashMD5(this.Senha), // email = this.Email // }; // if (db.Database.Connection.Execute(sql, parametros) > 0) // { // ret = this.Id; // } //} } db.SaveChanges(); ret = this.Id; //using (var comando = new SqlCommand()) //{ // comando.Connection = conexao; // if (model == null) // { // comando.CommandText = "INSERT INTO Usuario (nome, login, senha, email) VALUES (@nome, @login, @senha, @email); SELECT CONVERT(INT, SCOPE_IDENTITY())"; // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@login", SqlDbType.VarChar).Value = this.Login; // comando.Parameters.Add("@senha", SqlDbType.VarChar).Value = CriptoHelper.HashMD5(this.Senha); // comando.Parameters.Add("@email", SqlDbType.VarChar).Value = this.Email; // ret = (int)comando.ExecuteScalar(); // } // else // { // comando.CommandText = // "UPDATE Usuario SET nome = @nome, login = @login, email=@email" + // (!string.IsNullOrEmpty(this.Senha) ? ", senha = @senha" : "") + // " WHERE id = @id"; // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@login", SqlDbType.VarChar).Value = this.Login; // comando.Parameters.Add("@email", SqlDbType.VarChar).Value = this.Email; // if (!string.IsNullOrEmpty(this.Senha)) // { // comando.Parameters.Add("@senha", SqlDbType.VarChar).Value = CriptoHelper.HashMD5(this.Senha); // } // comando.Parameters.Add("@id", SqlDbType.Int).Value = this.Id; // if (comando.ExecuteNonQuery() > 0) // { // ret = this.Id; // } // } //} } return(ret); }
public int Salvar() { // Criar variável de retorno var ret = 0; // Criar variável para armazena o método RecuperarPeloId() //var model = RecuperarPeloId(this.Id); // Instânciar objeto para conexão com o banco de dados using (var db = new ContextoBD()) { var model = db.Perfis .Include(x => x.Usuarios) .Where(x => x.Id == this.Id) .SingleOrDefault(); /* Se o model for nulo, ou seja, não retornou nada do método * RecuperarPeloId(), insere registro */ if (model == null) { if (this.Usuarios != null && this.Usuarios.Count > 0) { foreach (var usuario in this.Usuarios) { db.Usuarios.Attach(usuario); db.Entry(usuario).State = EntityState.Unchanged; } } db.Perfis.Add(this); } // Senão, altera o registro else { model.Nome = this.Nome; model.Ativo = this.Ativo; foreach (var usuario in model.Usuarios.FindAll(x => !this.Usuarios.Exists(u => u.Id == x.Id))) { model.Usuarios.Remove(usuario); } foreach (var usuario in this.Usuarios.FindAll(x => x.Id > 0 && !model.Usuarios.Exists(u => u.Id == x.Id))) { db.Usuarios.Attach(usuario); db.Entry(usuario).State = EntityState.Unchanged; model.Usuarios.Add(usuario); } //db.Perfis.Attach(this); //db.Entry(this).State = EntityState.Modified; } // Salva as alterações feitas db.SaveChanges(); ret = this.Id; // Se a lista de usuários não forem nulas e a contagem maior que 0 (zero) //if (this.Usuarios != null && this.Usuarios.Count > 0) //{ // // Passar a instrução SQL // var sql = "delete from perfil_usuario where (id_perfil = @id_perfil)"; // // Passar o parâmetro // var parametros = new { id_perfil = this.Id }; // // Executa a query // db.Database.Connection.Execute(sql, parametros, transacao); // // Se o primeiro usuário que vier na lista não tiver o ID igual a -1 // if (this.Usuarios[0].Id != -1) // { // /* Laço de repetição foreach // * Criar variável para armazenar o que vier na lista de usuários // */ // foreach (var usuario in this.Usuarios) // { // // Passar a instrução SQL // sql = "insert into perfil_usuario (id_perfil, id_usuario) values (@id_perfil, @id_usuario)"; // // Passar os parâmetros // var parametrosUsuarios = new { id_perfil = this.Id, id_usuario = usuario.Id }; // // Executa a query // db.Database.Connection.Execute(sql, parametrosUsuarios, transacao); // } // } //} } // Retorna o que vier na variável de retorno return(ret); //if (model == null) //{ // // Passar a instrução SQL // comando.CommandText = "insert into perfil (nome, ativo) values (@nome, @ativo); select convert(int, scope_identity())"; // // Passar os parâmetros // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@ativo", SqlDbType.VarChar).Value = (this.Ativo ? 1 : 0); // // Passar para a variável de retorno um valor escalar // ret = (int)comando.ExecuteScalar(); // // Popula o ID com esse valor // this.Id = ret; //} //// Senão, altera o registro //else //{ // // Passar a instrução SQL // comando.CommandText = "update perfil set nome=@nome, ativo=@ativo where id = @id"; // // Passar os parâmetros // comando.Parameters.Add("@nome", SqlDbType.VarChar).Value = this.Nome; // comando.Parameters.Add("@ativo", SqlDbType.VarChar).Value = (this.Ativo ? 1 : 0); // comando.Parameters.Add("@id", SqlDbType.Int).Value = this.Id; // // Se o número de linha retornada é maior que 0 (zero) // if (comando.ExecuteNonQuery() > 0) // { // // Popula a variável de retorno com o ID // ret = this.Id; // } //} // Se a lista de usuários não forem nulas e a contagem maior que 0 (zero) // if (this.Usuarios != null && this.Usuarios.Count > 0) // { // Instânciar objeto de comando para exclusão do perfil de usuário // using (var comandoExclusaoPerfilUsuario = new SqlCommand()) // { // Pasar a conexão // comandoExclusaoPerfilUsuario.Connection = conexao; // Passar a transação // comandoExclusaoPerfilUsuario.Transaction = transacao; // Passar a instrução SQL // comandoExclusaoPerfilUsuario.CommandText = "delete from perfil_usuario where (id_perfil = @id_perfil)"; // Passar o parâmetro // comandoExclusaoPerfilUsuario.Parameters.Add("@id_perfil", SqlDbType.Int).Value = this.Id; // Executa a query retornando valor escalar // comandoExclusaoPerfilUsuario.ExecuteScalar(); // } // Se o primeiro usuário que vier na lista não tiver o ID igual a -1 // if (this.Usuarios[0].Id != -1) // { // /* Laço de repetição foreach // * Criar variável para armazenar o que vier na lista de usuários // */ // foreach (var usuario in this.Usuarios) // { // Instânciar objeto de comando para inclusão de perfil de usuário // using (var usuarioInclusaoPerfilUsuario = new SqlCommand()) // { // Passar a conexão // usuarioInclusaoPerfilUsuario.Connection = conexao; // Passar a transação // usuarioInclusaoPerfilUsuario.Transaction = transacao; // Passar a instrução SQL // usuarioInclusaoPerfilUsuario.CommandText = "insert into perfil_usuario (id_perfil, id_usuario) values (@id_perfil, @id_usuario)"; // Passar os parâmetros // usuarioInclusaoPerfilUsuario.Parameters.Add("@id_perfil", SqlDbType.Int).Value = this.Id; // usuarioInclusaoPerfilUsuario.Parameters.Add("@id_usuario", SqlDbType.Int).Value = usuario.Id; // Executa a query retornando valor escalar // usuarioInclusaoPerfilUsuario.ExecuteScalar(); // } // } // } //} //Salva as alterações feitas //transacao.Commit(); //} //} // Retorna o que vier na variável de retorno // return ret; // } //} //} }