/// <summary> /// Método para editar funcionário via GUI /// </summary> private void EditEmploye() { //Verificando se campos estão preenchidos if (IsValidFields()) { string cpf = cpfEdit.Text.Replace(".", "").Replace("-", "").Replace("_", "."); string cep = cepEdit.Text.Replace("-", "").Replace("_", ""); if (Validator.IsCpf(cpf)) //Validando documentos { try { //Recuperando dados do funcionário ComboBoxItem selected = cbState.Items[cbState.SelectedIndex] as ComboBoxItem; aux.adress.street = AdressEdit.Text; aux.adress.city = CityEdit.Text; aux.adress.neighborhood = NeighboorhoodEdit.Text; aux.adress.number = NumberEdit.Text; aux.adress.UF = selected.Content.ToString(); aux.adress.CEP = cep; aux.name = NameEdit.Text; aux.cpf = cpf; aux.admission = admissionEdit.Text; aux.job = RoleEdit.Text; if (cbActive.SelectedIndex == 1) { aux.Inactivate(); } else { aux.Activate(); } if (cbHasUser.SelectedIndex == 2) { aux.role = "none"; aux.user = null; } else { if (cbHasUser.SelectedIndex == 1) { aux.role = "User"; } else { aux.role = "Admin"; } aux.user = new User(usernameEdit.Text, passwordEdit.Password); } //Alterando registro no banco dao.EditEmploye(aux); //Registrando log de alteração Model.Log edited = new Model.Log(); edited.employe = _employe; edited.action = "Funcionário {aux.name} com ID = {aux.id} sofreu alteração no sistema!"; logs.Register(edited); //Atualizando grid e limpando campos de texto RefreshGrid(); ClearFields(); BlockFields(); actionIndex = -1; aux = null; } catch (DatabaseEditException err) { //Retornando mensagem de erro para usuário MessageBox.Show( err.Message, "Erro ao gravar dados", MessageBoxButton.OK, MessageBoxImage.Error); } } else { //Retornando mensagem de validação MessageBox.Show( "CPF ou RG Inválido(s)", "Dados incorretos!", MessageBoxButton.OK, MessageBoxImage.Warning ); } } else { //Mostrando alerta de validação MessageBox.Show( "Há Campos Vazios", "Erro de Prenchimento de Formulário", MessageBoxButton.OK, MessageBoxImage.Warning ); } }
/// <summary> /// Método para recuperar fornecedor especifico com base no ID /// </summary> /// <param name="id"></param> /// <returns></returns> public Employe GetEmployeData(int id) { try { //Abrindo conexão com o banco conn.Open(); //Definindo string de coneção string command = $"select f.id_funcionario, p.id_pessoa, p.nome_pessoa, " + $"p.status, e.id_endereco, e.rua, e.numero, e.bairro, e.cidade, " + $"e.uf, e.cep, f.data_admissao, f.cpf, f.funcao, f.permissao " + $"from {Refs.TABLE_ADRESS} e, {Refs.TABLE_PEOPLE} p, {Refs.TABLE_EMPLOYES} f " + $"where e.id_endereco = p.id_endereco and " + $"p.id_pessoa = f.id_pessoa and " + $"f.id_funcionario = @id"; //Definindo comando e resultados MySqlDataReader reader; MySqlCommand cmd = new MySqlCommand(command, conn) { CommandType = CommandType.Text }; //Definindo parametros MySqlParameter employeId = new MySqlParameter("@id", MySqlDbType.Int64); employeId.Value = id; //Adicionando parametros e preaparando consulta cmd.Parameters.Add(employeId); cmd.Prepare(); //Realizando consulta reader = cmd.ExecuteReader(); //Definindo cliente Employe employe = new Employe(); while (reader.Read()) { //Recuperando dados do cliente employe.id = (int)reader["id_funcionario"]; employe.id_person = (int)reader["id_pessoa"]; employe.adress.id = (int)reader["id_endereco"]; employe.name = (string)reader["nome_pessoa"]; employe.adress.street = (string)reader["rua"]; employe.adress.number = reader["numero"].ToString(); employe.adress.neighborhood = (string)reader["bairro"]; employe.adress.city = (string)reader["cidade"]; employe.adress.UF = (string)reader["uf"]; employe.adress.CEP = (string)reader["cep"]; employe.cpf = (string)reader["cpf"]; employe.role = (string)reader["permissao"]; employe.job = (string)reader["funcao"]; employe.admission = (string)reader["data_admissao"]; //Booleanos if (!(bool)reader["status"]) { employe.Inactivate(); } } reader.Close(); //Segunda query, opcionals e funcionário possuir usuário if (!employe.role.Equals("none")) { command = $"select u.login, u.password " + $"from {Refs.TABLE_USERS} u, {Refs.TABLE_EMPLOYES} f " + $"where u.id_funcionario = f.id_funcionario " + $"and f.id_funcionario = @id;"; //Definindo novo comando cmd = new MySqlCommand(command, conn) { CommandType = CommandType.Text }; //Limpando parametros e preparando outra consulta cmd.Parameters.Add(employeId); cmd.Prepare(); //Executando consulta por usuário reader = cmd.ExecuteReader(); //Verifiando resultados while (reader.Read()) { User user = new User(); user.SetLogin((string)reader["login"]); user.SetEncryptedCode((string)reader["password"]); employe.user = user; } } //Fechando conexão conn.Close(); //Retornando cliente return(employe); } catch (MySqlException) { //Fechando conexão e retrnando mensagem de erro conn.Close(); MessageBox.Show( "Ops... Ocorreu algum erro de conexão com o banco! Tente novamente mais tarde...", "Erro de Conexão!", MessageBoxButton.OK, MessageBoxImage.Error ); //Retornando usuário vazio Employe _return = new Employe(); _return.name = ""; _return.role = "none"; return(_return); } }