por Saulo G. Pacífico

Enquente desenvolvida em ASP.NET com Entity Framework 4

Este é um projeto de votação (enquete) desenvolvido por Saulo, um de nossos visitantes que envia dicas, sugestões e deixa vários comentários no blog.

Abaixo vamos ver o projeto da enquente, desenvolvido em  ASP.NET com Entity Framework 4, utilizando cookies para limitar o número de votos.

Créditos: Saulo Giori Pacífico.
Twitter - twitter.com/saulopacifico - @saulopacifico
Facebook - facebook.com/SauloPacifico

 

Default.aspx Parciais.aspx
 O que você achou desse projeto?  Excelente, Bom, Regular, Ruim, Péssimo

 Resultados parciais: Excelente, Bom, Regular, Ruim, Péssimo

EnqueteModel.edmx

 Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Votacao.Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Votação</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <h4>O que você achou desse projeto?</h4>
       <asp:RadioButtonList runat="server" ID="rblOpcao">
           <asp:ListItem Text="Excelente" />
           <asp:ListItem Text="Bom" />
           <asp:ListItem Text="Regular" />
           <asp:ListItem Text="Ruim" />
           <asp:ListItem Text="Péssimo" />
       </asp:RadioButtonList>
       <br />
       <asp:Button Text="Votar" runat="server" Width="100px" ID="btnVotar" OnClick="btnVotar_Click" />
       &nbsp;
       <asp:Label  Text="" runat="server" ID="lblVazio" ForeColor="Red" />
       <br /> <br />
       <a href="Parciais.aspx">Parciais</a>
    </div>
    </form>
</body>
</html>

Default.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Votacao
{
    public partial class Default : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
           VerificarCookieVotacao();
       }

       private void VerificarCookieVotacao()
       {
           //Vejo se o cookie "Votou" é diferente de nulo
           //Se for, impossibilito o usuário de votar
           //mais uma vez, e...
           if (Request.Cookies["Votou"] != null)
           {
               //Mudo a propriedade Text do botão
               btnVotar.Text = "Você já votou!";
               //e desativo ele
               btnVotar.Enabled = false;
           }
       }

       protected void btnVotar_Click(object sender, EventArgs e)
       {
           //Instancio o meu contexto
           using (DadosEntities ctx = new DadosEntities())
           {
               //Instancio o objeto do tipo "Votacao"
               //que vem do bd
               Votacao obj = ctx.Votacao.FirstOrDefault();
               //Faço variáveis inteiras receberem
               //os respectivos valores do banco
               int Excelente = Convert.ToInt32(obj.Excelente);
               int MuitoBom = Convert.ToInt32(obj.Bom);
               int Regular = Convert.ToInt32(obj.Regular);
               int Ruim = Convert.ToInt32(obj.Ruim);
               int Pessimo = Convert.ToInt32(obj.Pessimo);
               //Percorro o Radio Button List
               foreach (ListItem item in rblOpcao.Items)
               {
                   //Verifico se existe algum item selecionado...
                   //De acordo com a opção selecionada, vou persistir
                   //o valor que já existe e foi capturado do banco + 1
                   if (item.Selected)
                   {
                       if (item.Text == "Excelente")
                       {
                           obj.Excelente = Excelente + 1;
                       }
                       if (item.Text == "Bom")
                       {
                           obj.Bom = MuitoBom + 1;
                       }
                       if (item.Text == "Regular")
                       {
                           obj.Regular = Regular + 1;
                       }
                       if (item.Text == "Ruim")
                       {
                           obj.Ruim = Ruim + 1;
                       }
                       if (item.Text == "Péssimo")
                       {
                           obj.Pessimo = Pessimo + 1;
                       }
                   }
                   //Caso não nenhuma das opções esteja selecionadas
                   //exibo uma mensagem...
                   else
                       lblVazio.Text = "Escolha uma opção antes de votar!";
               }
               //Salvo as alterações
               ctx.SaveChanges();
               //Preencho o cookie com algum valor
               //para ser verificado no Page_Load
               Response.Cookies["Votou"].Value = "Sim";
               //Defino a duração do cookie para 60 dias
               Response.Cookies["Votou"].Expires = DateTime.Now.AddDays(60d);
               //Redireciono para a página de parciais
               Response.Redirect("Parciais.aspx");
           }
       }
    }
}

Parciais.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Parciais.aspx.cs" Inherits="Votacao.Parciais" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Resultados Parciais</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
       <h4>
           Resultados parciais
       </h4>
       <asp:Label ID="lblExcelente" Text="" runat="server" /><br />
       <asp:Label ID="lblMuitoBom" Text="" runat="server" /><br />
       <asp:Label ID="lblRegular" Text="" runat="server" /><br />
       <asp:Label ID="lblRuim" Text="" runat="server" /><br />
       <asp:Label ID="lblPessimo" Text="" runat="server" /><br />
       <br />
       <a href="Default.aspx">Voltar</a>
    </div>
    </form>
</body>
</html>

Parciais.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace Votacao
{
    public partial class Parciais : System.Web.UI.Page
    {
       protected void Page_Load(object sender, EventArgs e)
       {
           //Instancio o meu contexto
           using (DadosEntities ctx = new DadosEntities())
           {
               //Instancio o objeto do tipo "Votacao"
               //que vem do bd
               Votacao obj = ctx.Votacao.FirstOrDefault();
               //Faço variáveis inteiras receberem
               //os respectivos valores do banco
               int Excelente = Convert.ToInt32(obj.Excelente);
               int Bom = Convert.ToInt32(obj.Bom);
               int Regular = Convert.ToInt32(obj.Regular);
               int Ruim = Convert.ToInt32(obj.Ruim);
               int Pessimo = Convert.ToInt32(obj.Pessimo);
               //Crio uma variável para somar a quantidade total de votos
               int Total = Excelente + Bom + Regular + Ruim + Pessimo;
               //Exibo as parciais de cada opção fazendo os calculos necessários
               //para obter as porcentagens individualmente
               lblExcelente.Text = string.Format("{0:F1} % dos votos foi \"Excelente\"",
                   (100) / Convert.ToDouble(Total) * Convert.ToDouble(Excelente));

               lblMuitoBom.Text = string.Format("{0:F1} % dos votos foi \"Bom\"",
                   (100) / Convert.ToDouble(Total) * Convert.ToDouble(Bom));

               lblRegular.Text = string.Format("{0:F1} % dos votos foi \"Regular\"",
                   (100) / Convert.ToDouble(Total) * Convert.ToDouble(Regular));

               lblRuim.Text = string.Format("{0:F1} % dos votos foi \"Ruim\"",
                   (100) / Convert.ToDouble(Total) * Convert.ToDouble(Ruim));

               lblPessimo.Text = string.Format("{0:F1} % dos votos foi \"Péssimo\"",
                   (100) / Convert.ToDouble(Total) * Convert.ToDouble(Pessimo));
           }
       }
    }
}

 

Exixtem 2 opções de banco de dados junto no arquivo de download do projeto, uma no App_Data e outra em .bak.
Caso opte por usar o .bak, crie um novo banco de dados e restaure este backup. Mude tambem a connectionstring no Web.config.

Fazer o download do projeto completo aqui.

 

Comentários

Carregando comentários

Postar um novo comentário



Processando...