private void getSubFuncoes()
        {
            cmd.CommandText = "SELECT * FROM SubFuncao WHERE idFuncao_fk = " + tipoEscala;
            Conexao conexao = new Conexao();

            try
            {
                cmd.Connection = conexao.Conectar();
                DataTable dt           = new DataTable();
                int       indiceColuna = 2;
                dt.Load(cmd.ExecuteReader());

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    tbEscala.Columns[indiceColuna].HeaderText = dt.Rows[i][2].ToString();

                    if (tipoEscala == 1)
                    {
                        if (tbEscala.Columns[indiceColuna].HeaderText == "VOZ (BACK)")
                        {
                            tbEscala.Columns[indiceColuna].Width = 240;
                        }
                        else
                        {
                            tbEscala.Columns[indiceColuna].Width = 170;
                        }
                    }

                    if (tipoEscala == 2 || tipoEscala == 4)
                    {
                        tbEscala.Columns[indiceColuna].Width = 220;
                    }

                    if (tipoEscala == 3)
                    {
                        if (tbEscala.Columns[indiceColuna].HeaderText == "LANCHE")
                        {
                            tbEscala.Columns[indiceColuna].Width = 220;
                        }
                        else if (tbEscala.Columns[indiceColuna].HeaderText == "LIMPEZA - CORREDOR")
                        {
                            tbEscala.Columns[indiceColuna].Width = 400;
                        }
                        else
                        {
                            tbEscala.Columns[indiceColuna].Width = 650;
                        }
                    }

                    indiceColuna++;

                    SubFuncao subFuncao = new SubFuncao();
                    subFuncao = subFuncao.find((int)dt.Rows[i][0]);

                    listaSubFuncoes.Add(subFuncao);
                }

                if (dt.Rows.Count > tbEscala.ColumnCount)
                {
                    for (int i = tbEscala.ColumnCount; i < dt.Rows.Count; i++)
                    {
                        tbEscala.Columns.Add(dt.Rows[i][2].ToString(), dt.Rows[i][2].ToString());
                        tbEscala.Columns[i].SortMode = DataGridViewColumnSortMode.NotSortable;
                        tbEscala.Columns[i].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;

                        SubFuncao subFuncao = new SubFuncao();
                        subFuncao = subFuncao.find((int)dt.Rows[i][0]);

                        listaSubFuncoes.Add(subFuncao);
                    }
                }
            }
            catch (Exception erro)
            {
                Validacoes.exibeMensagem("Erro: " + erro.Message, Outros.Mensagem.tipo.Erro, false);
            }
            finally
            {
                conexao.Desconectar();
            }
        }
        private void btnSalvar_Click(object sender, EventArgs e)
        {
            SubFuncao   sub  = new SubFuncao();
            TipoUsuario tipo = new TipoUsuario();

            try
            {
                if (cbTipoUsuario.Text == "Selecione...")
                {
                    Validacoes.exibeMensagem("É necessário informar o Tipo de Usuário", Mensagem.tipo.Erro, false);
                    return;
                }

                if (cbSubFuncaoPrincipal.Text == "Selecione...")
                {
                    Validacoes.exibeMensagem("É necessário informar a Função Principal", Mensagem.tipo.Erro, false);
                    return;
                }

                if (cbTipoUsuario.SelectedValue != null && (int)cbTipoUsuario.SelectedValue == 3)
                {
                    if ((int)cbFuncaoSecundaria.SelectedValue != 3 || (int)cbFuncaoPrincipal.SelectedValue != 3)
                    {
                        Validacoes.exibeMensagem("O Tipo de Usuário 'Célula' só pode ter funções relacionadas a células", Mensagem.tipo.Erro, false);
                        return;
                    }
                }

                if (cbSubFuncaoPrincipal.Text == cbSubFuncaoSecundaria.Text)
                {
                    Validacoes.exibeMensagem("As funções não podem ser iguais", Mensagem.tipo.Erro, false);
                    return;
                }

                else
                {
                    if (string.IsNullOrEmpty(txtEmail.Text) || string.IsNullOrWhiteSpace(txtEmail.Text))
                    {
                        Validacoes.exibeMensagem("Informe um E-mail", Mensagem.tipo.Erro, false);
                        return;
                    }
                    if (string.IsNullOrEmpty(txtSobrenome.Text) || string.IsNullOrWhiteSpace(txtSobrenome.Text))
                    {
                        Validacoes.exibeMensagem("Informe o Sobrenome", Mensagem.tipo.Erro, false);
                        return;
                    }
                }

                pessoa.tipoUsuario = tipo.find((int)cbTipoUsuario.SelectedValue);
                pessoa.Nome        = txtNome.Text;
                pessoa.Sobrenome   = pessoa.tipoUsuario.idTipoUsuario == 3 ? null : txtSobrenome.Text;
                pessoa.Email       = pessoa.tipoUsuario.idTipoUsuario == 3 ? null : txtEmail.Text;

                if (!update)
                {
                    pessoa.Senha        = pessoa.tipoUsuario.idTipoUsuario == 3 ? null : gerarSenha();
                    pessoa.dataCadastro = DateTime.Today;
                    pessoa.Status       = "Ativo";
                }

                pessoa.funcaoPrincipal = sub.find((int)cbSubFuncaoPrincipal.SelectedValue);

                if (cbSubFuncaoSecundaria.Text != "Selecione...")
                {
                    pessoa.funcaoSecundaria = sub.find((int)cbSubFuncaoSecundaria.SelectedValue);
                    temFuncaoSecundaria     = true;
                }
                else
                {
                    temFuncaoSecundaria = false;
                }


                if (!string.IsNullOrEmpty(txtEmail.Text) || !string.IsNullOrWhiteSpace(txtEmail.Text))
                {
                    if (Validacoes.verificaUnico("email", "pessoa", txtEmail.Text, pessoa.idPessoa, "idPessoa") == true)
                    {
                        Validacoes.exibeMensagem("Este E-mail já está em uso", Mensagem.tipo.Erro, false);
                        return;
                    }
                }


                if (Validacoes.ValidarObjeto(pessoa) == true)
                {
                    if (update)
                    {
                        pessoa.update(pessoa, pessoa.idPessoa, temFuncaoSecundaria);
                        setPessoa(pessoa.idPessoa);
                    }
                    else
                    {
                        pessoa.create(pessoa, temFuncaoSecundaria);
                        setPessoa(pessoa.getId());

                        if (pessoa.tipoUsuario.idTipoUsuario != 3)
                        {
                            sendEmailComSenhaUsuario(pessoa.Nome, pessoa.Email, pessoa.Senha);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Validacoes.exibeMensagem("Erro: " + ex, Mensagem.tipo.Erro, false);
            }
        }