protected void Page_Load(object sender, EventArgs e)
 {
     //executa as instruções no primeiro load da página
     if (!IsPostBack)
     {
         try
         {
             //identifica o valor das variaveis de sessão
             id  = Convert.ToInt32(Session["Id_quest"]);
             reg = Convert.ToInt32(Session["user"]);
             //pesquisa na base o usuário e armazena na variavel global
             user = controle.pesquisaUsuarioReg(reg);
             //pesquisa na base o questionário, informação armazenada em variavel local
             Questionarios quest = controle.pesquisaQuestionarioId(id);
             //pesquisa na base o renderizador e armazena na variavel global
             render = controle.pesquisaRenderizarIdUser(id, user.id);
             //modifica os controles da view para personalização
             lblID.Text     = id.ToString();
             lblTitulo.Text = quest.nome;
             //identifica se o usuário é público, não sendo segue as instruções do if a seguir
             if (reg != 0)
             {
                 //mais uma vez personaliza os controles da view
                 lblUser.Text = user.registro.ToString() + " - " + user.nome;
                 //pesquisa a lista das perguntas do questionário a ser renderizado
                 perg = controle.pesquisaPerguntaQuestionario(id);
                 //identifica se existe o formulario já preparado para preenchimento na base de dados, tabela Prenchimentos
                 preenchimentos = controle.pesquisaPreenchimento_render_user(render.id, lblUser.Text);
                 if (preenchimentos.Count == 0)
                 {
                     //não identificando, executa Stored Procedure que preenche todas as questões na tabela Prenchimentos com valores 0
                     controle.construtor_formulario(id, render.id, lblUser.Text);
                 }
                 //atribui a variavel o valor da quantidade de questões
                 countMax = perg.Count;
                 //modifica os controles da view
                 pnlButton.Visible = true;
                 //chama função para renderizar a pergunta em tempo de execução
                 posicionaPergunta();
             }
             //se o usuário for público condiciona ele ao preenchimento do campo texto nome do usuário
             else
             {
                 // modifica os controles da view
                 lblUser.Text       = "Insira seu nome:";
                 txtUser.Visible    = true;
                 btnIniciar.Visible = true;
             }
         }
         //instruções circundadas com try, catch para evitar a exibição de possíveis erros
         catch { }
     }
     //a cada ação de postback da pagina carrega novamente a pergunta em tela
     else
     {
         posicionaPergunta();
     }
 }
        //função para adição de perguntas a um questionário
        protected void btnNovo_Click(object sender, EventArgs e)
        {
            try
            {
                //impede a execução da função caso o questionário não tenha um nome determinado no campo de texto referente ao titulo
                if (txtTitulo.Text.Equals(""))
                {
                    lblAlerta.Visible = true;
                    lblAlerta.Text = "* O campo Titulo do Questionário não pode ser vazio.";
                }
                //caso haja um titulo executa as instruções seguintes
                else
                {
                    // tenta, criar objeto questionario, atribuir um titulo e um id
                    try
                    {
                        quest = new Questionarios();
                        quest.nome = txtTitulo.Text.Trim();

                        txtTitulo.Enabled = false;
                        lblAlerta.Visible = false;
                        btnNovo.Enabled = false;
                        btnEditar.Enabled = true;
                        btnAdicionar.Enabled = true;

                        controle.salvarQuestionario(quest);
                        controle.atualizarDados();
                        questionarioId = quest.id;

                        //informa ao usuário o sucesso da operação
                        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaAtualizadoOK", "alert('Inclusão realizada com sucesso.');", true);
                    }
                    catch (DbUpdateException ex)
                    {
                        //informa o não sucesso da operação ao usuário, e o porque
                        ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaSelecionar", "alert('Houve o seguinte erro ao inserir os dados = " + ex.ToString() + " .')", true);
                        limpaFunction();
                    }
                }
            }
            //instruções circundadas com try, catch para evitar a exibição de possíveis erros ao usuário
            catch { }
        }
        // função para exclusão do questionário
        protected void btnExcluir_Click(object sender, EventArgs e)
        {
            try
            {
                // modifica os controles da página para atender a função
                btnNovo.Enabled = true;
                btnEditar.Enabled = true;
                pnlPerguntas.Visible = false;

                // atribui a variavel as perguntas referentes ao questionário que está sendo criado
                List<Perguntas> Lperg = controle.pesquisaPerguntaQuestionario(questionarioId);
                foreach (Perguntas value in Lperg)
                {
                    //para cada pergunta procura as opções de resposta e atribui a variavel
                    List<Respostas> Lresp = controle.pesquisaRespostaQuestão(value.id);
                    foreach (Respostas var in Lresp)
                    {
                        //exclui da base de respostas cada opção da pergunta referente a este value.id
                        controle.excluirResposta(var);
                    }
                    // após a exclusão das opções de resposta, exclui a pergunta
                    controle.excluirPergunta(value);
                }//volta ao inicio do primeiro laço foreach

                //atribui a variavel quest o questionário que sofreu a exclusão de resposta e perguntas
                quest = controle.pesquisaQuestionarioId(questionarioId);
                //exclui o questionário
                controle.excluirQuestionario(quest);
                controle.atualizarDados();
                //retorna os comandos a condição inicial
                btnEditar.Enabled = false;
                txtTitulo.Text = "";
                txtTitulo.Enabled = true;
                btnExcluir.Enabled = false;
                // limpa a variavel que faz a contagem de perguntas
                pergCount = 0;
            }
            //instruções circundadas com try, catch para evitar a exibição de possíveis erros ao usuário
            catch { }
        }
        //função para salvar as alterações de inclusão de novo questionário e suas perguntas e opções de resposta
        protected void btnSalvarSair_Click(object sender, EventArgs e)
        {
            try
            {
                //salva o estado final
                controle.atualizarDados();
                //pesquisa na base o questionário referente ao id criado para inclusão
                quest = controle.pesquisaQuestionarioId(questionarioId);
                //modifica os controles da view para o estado inicial
                btnNovo.Enabled = true;
                txtTitulo.Text = "";
                btnNovo.Enabled = true;
                btnSalvar.Visible = false;
                btnAdicionar.Enabled = false;
                //exibe mensagem em box com a informação de inclusão de questionário e informa o id e titulo deste
                ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaAtualizado", "alert('Criado o questionario com ID:" + questionarioId.ToString() + " e titulo:" + quest.nome + "');", true);
            }
            catch(DbUpdateException ex)
            {
                ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaNaoAtualizado", "alert('Não foi possivel efetuar a criação do questionario ID:" + questionarioId.ToString() + " e titulo:" + quest.nome + ", error message: "+ ex.ToString() +"');", true);

            }
        }
 //função para salvar alterações feitas no titulo do questionário
 protected void btnSalvar_Click(object sender, EventArgs e)
 {
     try
     {
         quest = new Questionarios();
         //busca na base de dados o questionario a ser atualizado
         quest = controle.pesquisaQuestionarioId(questionarioId);
         quest.nome = txtTitulo.Text.Trim();
         controle.atualizarDados();
         btnNovo.Visible = true;
         btnSalvar.Visible = false;
         btnEditar.Enabled = true;
         txtTitulo.Enabled = false;
         btnAdicionar.Enabled = true;
         //informa ao usuário o sucesso da operação
         ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaAtualizadoOK", "alert('Alteração realizada com sucesso.');", true);
     }
     catch (DbUpdateException ex)
     {
         //informa o não sucesso da operação ao usuário, e o porque
         ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alertaSelecionar", "alert('Houve o seguinte erro ao atualizar os dados = " + ex.ToString() + " .')", true);
         limpaFunction();
     }
 }
 public void excluirQuestionario(Questionarios questionario)
 {
     dbRepository.excluirDadosQuestionario(questionario);
 }
        /*
         * Controle Questionario
         */

        public void salvarQuestionario(Questionarios questionario)
        {
            dbRepository.salvarNovoQuestionario(questionario);
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    //verifica se o login foi feito por usuário + senha na página Index.aspx
                    if (Session["user"].ToString() == "")
                    {
                        //Variaveis de sessão recebidas no postback url
                        string regist = Convert.ToString(Request.Form["hddRegFunc"]);
                        string nome   = Convert.ToString(Request.Form["hddNomeFunc"]);
                        string perfil = Convert.ToString(Request.Form["hddEnumPerfil"]);

                        //verifica a pré existencia do usuário na base de dados
                        if (controle.pesquisaUsuarioReg(Convert.ToInt32(regist)) == null)
                        {
                            ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), "alerta", "alert('Usuário CAC não cadastrado na aplicação')", true);
                            //Adiciona o usuário do acesso via postback url a base de dados
                            controle.salvarUsuario(user);
                            user.nome     = nome;
                            user.registro = Convert.ToInt32(registro);
                            user.perfil   = Convert.ToInt32(perfil);
                            //salva a adição de usuário
                            controle.atualizarDados();
                        }
                    }
                    //busca na base de dados o usuário no caso de login por usuário + senha
                    else
                    {
                        //busca na base de dados por meio de variavel de sessão
                        registro = Convert.ToInt32(Session["user"]);
                        user     = controle.pesquisaUsuarioReg(registro);
                    }
                    //verifica se na interface login o usuário utilizou o login anônimo e exibe na tela informação referente ao login
                    if (registro == 0)
                    {
                        lblUser.Text = "Acesso Público";
                    }
                    else
                    {
                        lblUser.Text = user.registro.ToString() + " - " + user.nome;
                    }
                    //atribui a lista de objetos do tipo renderização aqueles que tenha como usuário o registro do login
                    LRend = controle.pesquisaRenderizarReg(user.id);
                    foreach (Renderizar value in LRend)
                    {
                        //variavel para impedir a duplicidade de inclusão na lista de questionários
                        bool publico = false;
                        //verifica se o usuário que acessou é público
                        if (registro != 0)
                        {
                            //busca para cada elemento a existencia deste formulário no formato público
                            render = controle.pesquisaRenderizarIdUser(value.id_questionario, 0);
                            if (render != null)
                            {
                                //localizando exclui esse render do perfil do usuário mantendo somente o acesso público
                                controle.excluirRenderizar(value);
                                controle.atualizarDados();
                                //localizado o id do questionário como público
                                publico = true;
                            }
                        }
                        //verifica se o objeto faz parte da lista e se não é público
                        if (value != null && !publico)
                        {
                            //busca para o objeto o questionário referente ao render
                            quest = controle.pesquisaQuestionarioId(value.id_questionario);
                            if (quest != null)
                            {
                                //adiciona ao objeto lista de questionários este elemento, desde que não seja nulo
                                listaQuest.Add(quest);
                            }
                        }
                    }
                    //se o registro for diferente do perfil de acesso público apresenta ainda os questionários públicos na lista deste usuário
                    if (registro != 0)
                    {
                        //atribui a lista de objetos do tipo renderização aqueles que tenha como usuário o registro do usuário público
                        LRend = controle.pesquisaRenderizarReg(0);
                        foreach (Renderizar value in LRend)
                        {
                            //busca para o objeto o questionário referente ao render
                            quest = controle.pesquisaQuestionarioId(value.id_questionario);
                            if (quest != null)
                            {
                                //adiciona ao objeto lista de questionários este elemento, desde que não seja nulo
                                listaQuest.Add(quest);
                            }
                        }
                    }
                    //se houverem elementos na lista passa esta como parametro para a função que carrega a radio button list
                    if (listaQuest.Count() > 0)
                    {
                        carregaRadioList(listaQuest);
                    }
                    //não havendo elementos na lista informa ao usuário
                    else
                    {
                        lblMensagem.Visible = true;
                        lblMensagem.Text    = "Não existem questionários públicos ou para este usuário";
                    }
                }
                //instruções circundadas com try, catch para evitar a exibição de possíveis erros ao usuário
                catch { }
            }
        }