public bool Insert(AvaliacaoProjeto a)
        {
            bool ok = false;

            using (SqlConnection con = new SqlConnection(ConnectionFactory.GetStringConexao()))
            {
                StringBuilder sql = new StringBuilder();
                sql.AppendLine("INSERT INTO Avalaicao_Projeto ");
                sql.AppendLine("(id_criterio_av, id_proj, cpf_usu, not_ava, dat_ava, obs_ava) ");
                sql.AppendLine("VALUES (@id_criterio_av, @id_proj, @cpf_usu, @not_ava, @dat_ava, @obs_ava) ");
                sql.AppendLine("SELECT SCOPE_IDENTITY(); ");//Linha Responsável por retornar id que foi Inserido

                using (SqlCommand cmd = new SqlCommand(sql.ToString(), con))
                {
                    cmd.CommandType = CommandType.Text;
                    cmd.Parameters.AddWithValue("@id_criterio_av", a.Id_criterio);
                    cmd.Parameters.AddWithValue("@id_proj", a.Id_projeto);
                    cmd.Parameters.AddWithValue("@cpf_usu", a.Id_usuario);
                    cmd.Parameters.AddWithValue("@not_ava", a.Nota);
                    cmd.Parameters.AddWithValue("@dat_ava", a.Data);
                    cmd.Parameters.AddWithValue("@obs_ava", DBNull.Value);

                    con.Open();
                    ok = (cmd.ExecuteNonQuery() != 0);
                    con.Close();
                }
            }
            return(ok);
        }
        public AvaliacaoProjeto GetById(string cpf, int projetoId, int criterioId)
        {
            AvaliacaoProjeto a = null;

            using (SqlConnection con = new SqlConnection(ConnectionFactory.GetStringConexao()))
            {
                con.Open();

                StringBuilder sql = new StringBuilder();
                sql.AppendLine("SELECT id_criterio_av, id_proj, cpf_usu, not_ava, dat_ava, obs_ava ");
                sql.AppendLine("FROM Avalaicao_Projeto a ");
                sql.AppendLine("WHERE a.cpf_usu = @cpf_usu ");
                sql.AppendLine("and a.id_proj = @id_proj ");
                sql.AppendLine("and id_criterio_av = @id_criterio_av ");

                using (SqlCommand cmd = new SqlCommand(sql.ToString(), con))
                {
                    cmd.Parameters.AddWithValue("@cpf_usu", cpf);
                    cmd.Parameters.AddWithValue("@id_proj", projetoId);
                    cmd.Parameters.AddWithValue("@id_criterio_av", criterioId);

                    using (SqlDataReader dr = cmd.ExecuteReader())
                    {
                        if (dr != null)
                        {
                            if (dr.Read())
                            {
                                a = new AvaliacaoProjeto();//Instanciando o objeto da iteração
                                //Preenchimento das propriedades a partir do que retornou no banco.
                                a.Id_usuario  = dr["cpf_usu"].ToString();
                                a.Id_projeto  = Convert.ToInt32(dr["id_proj"].ToString());
                                a.Id_criterio = Convert.ToInt32(dr["id_criterio_av"].ToString());
                            }
                        }
                    }
                }
            }
            return(a);
        }
        protected void btnAvaliarProjeto_Click(object sender, EventArgs e)
        {
            try
            {
                //Pega a diferença de horas no Web Config.
                int      diferencaHora = Convert.ToInt32(ConfigurationManager.AppSettings["DiferencaHora"].ToString());
                DateTime horarioAtual  = DateTime.Now.AddHours(diferencaHora);

                DateTime inicioVotacao      = new DateTime(2019, DateTime.Now.Month, DateTime.Now.Day, 19, 0, 0);
                DateTime inicioVotacaoDia25 = new DateTime(2019, DateTime.Now.Month, 25, 16, 0, 0);
                DateTime fimVotacao         = new DateTime(2019, DateTime.Now.Month, DateTime.Now.Day, 23, 0, 0);

                bool votacaoAberta = (((horarioAtual > inicioVotacao && horarioAtual < fimVotacao) && (horarioAtual.Day == 23 || horarioAtual.Day == 24)) ||
                                      ((horarioAtual > inicioVotacaoDia25 && horarioAtual < fimVotacao) && (horarioAtual.Day == 25)));

                if (!votacaoAberta)
                {
                    throw new Exception(string.Format("A votação é permitida apenas durante o horário da feira. Consulte o Menu Banner. Hora Atual: {0:dd/MM/yyyy HH:mm}", horarioAtual));
                }

                if (ddlOrganizacao.SelectedValue == "0")
                {
                    throw new Exception("Selecione a nota para o Critério Organização");
                }
                if (ddlComunicacao.SelectedValue == "0")
                {
                    throw new Exception("Selecione a nota para o Critério Comunicação");
                }
                if (ddlConhecimentoTecnico.SelectedValue == "0")
                {
                    throw new Exception("Selecione a nota para o Conhecimento Técnico");
                }

                List <AvaliacaoProjeto> lista = new List <AvaliacaoProjeto>();

                AvaliacaoProjeto avOrganizacao = new AvaliacaoProjeto();
                avOrganizacao.Id_projeto  = Convert.ToInt32(hdnProjetoId.Value);
                avOrganizacao.Id_criterio = 1;
                avOrganizacao.Id_usuario  = txtCpf.Text;
                avOrganizacao.Nota        = Convert.ToInt32(ddlOrganizacao.SelectedValue);
                avOrganizacao.Data        = DateTime.Now.AddHours(diferencaHora);
                lista.Add(avOrganizacao);

                AvaliacaoProjeto avComunicacao = new AvaliacaoProjeto();
                avComunicacao.Id_projeto  = Convert.ToInt32(hdnProjetoId.Value);
                avComunicacao.Id_criterio = 2;
                avComunicacao.Id_usuario  = txtCpf.Text;
                avComunicacao.Nota        = Convert.ToInt32(ddlComunicacao.SelectedValue);
                avComunicacao.Data        = DateTime.Now.AddHours(diferencaHora);
                lista.Add(avComunicacao);

                AvaliacaoProjeto avConheTecnico = new AvaliacaoProjeto();
                avConheTecnico.Id_projeto  = Convert.ToInt32(hdnProjetoId.Value);
                avConheTecnico.Id_criterio = 3;
                avConheTecnico.Id_usuario  = txtCpf.Text;
                avConheTecnico.Nota        = Convert.ToInt32(ddlComunicacao.SelectedValue);
                avConheTecnico.Data        = DateTime.Now.AddHours(diferencaHora);
                lista.Add(avConheTecnico);

                foreach (AvaliacaoProjeto av in lista)
                {
                    AvaliacaoProjeto a = new AvaliacaoProjetoDAL().GetById(av.Id_usuario, av.Id_projeto, av.Id_criterio);

                    if (a != null)
                    {
                        throw new Exception("Você já avaliou este projeto");
                    }
                }

                foreach (AvaliacaoProjeto av in lista)
                {
                    new AvaliacaoProjetoDAL().Insert(av);
                }


                string mensagem       = string.Format("{0}, Obrigado e continue avaliando os outros projetos!!!", txtNome.Text);
                string scriptMensagem = string.Format("<script>ChamarExibirMensagemSucesso('{0}');</script>", mensagem);
                ClientScript.RegisterStartupScript(this.GetType(), "ChaveMensagem", scriptMensagem);

                LimparControles();
            }
            catch (Exception ex)
            {
                string msg            = ex.Message.Replace("'", "");
                string scriptMensagem = string.Format("<script>ExibirMensagemErro('{0}');</script>", msg);
                ClientScript.RegisterStartupScript(this.GetType(), "ChaveMensagem", scriptMensagem);
            }
        }