using System; using System.Collections.Generic; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Data; using System.Web.Configuration; public partial class Estatisticas_Visitas_Inc_Ano_Parcial : System.Web.UI.Page { public Intranet.Users intranetUser; public int nivelPermissao = int.MaxValue; public string menu = ""; protected void Page_Load(object sender, EventArgs e) { /* ================================================================================= */ /* ================================================================================= */ if (Request.ServerVariables["HTTP_REFERER"] == null || Request.ServerVariables["HTTP_REFERER"].ToUpper().IndexOf("/SITE/ESTATISTICAS/VISITAS") < 0) { // REDIRECCIONA PARA A PÁGINA DE LOGIN.aspx // CASO ESTA PÁGINA SEJA ACEDIDA DIRECTAMENTE SEM PASSAR PELO SITE Response.Redirect("/login.aspx"); } /* ================================================================================= */ /* UTILIZADOR AUTENTICADO */ intranetUser = (Intranet.Users)Session["intranetUser"]; /* ================================================================================= */ // Verifica o nível de permissão nivelPermissao = intranetUser.NivelPermissao("/site/estatisticas/visitas/"); /* ================================================================================= */ int Ano = DateTime.Now.Year; try { Ano = Convert.ToInt16(Request.QueryString["a"].ToString()); if (Ano == 0) { Ano = DateTime.Now.Year; } } catch (Exception) { } /* ================================================================================= */ // LISTAGEM DataTable dtEstatisticas = SiteECom.Estatisticas.Anuais.Visitas(Ano); /* ================================================================================= */ // VALORES MÁXIMO int max = 0; int maxVisitantes = 0; int maxVisitas = 0; int maxPaginas = 0; foreach (DataRow valor in dtEstatisticas.Rows) { if (Convert.ToInt32(valor.ItemArray[1].ToString()) > maxVisitantes) maxVisitantes = Convert.ToInt32(valor.ItemArray[1].ToString()); if (Convert.ToInt32(valor.ItemArray[2].ToString()) > maxVisitas) maxVisitas = Convert.ToInt32(valor.ItemArray[2].ToString()); if (Convert.ToInt32(valor.ItemArray[3].ToString()) > maxPaginas) maxPaginas = Convert.ToInt32(valor.ItemArray[3].ToString()); // Máximo total if (maxVisitantes > max) max = maxVisitantes; if (maxVisitas > max) max = maxVisitas; if (maxPaginas > max) max = maxPaginas; } /* ================================================================================= */ // CONSTRUÇÃO DO GRÁFICO int escalaY = 60; // Largura da escala de Y int larguraGrafico = 12 * 40 + escalaY; // 12 meses * 21px + escalaY int alturaGrafico = Convert.ToInt16(WebConfigurationManager.AppSettings["altura_grafico"].ToString()); divEstatisticas.Style.Add("width", larguraGrafico.ToString()); divEstatisticas.Style.Add("height", (alturaGrafico + 10).ToString()); divEstatisticas.InnerHtml = ""; // LEGENDA divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + "" + "" + "" + "Visitantes" + "Visitas" + "Páginas"; // ESCALAS - Dias (x) divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // MESES for (int i = 0; i < 12; i++) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + "" + (i + 1) + ""; } // ESCALAS - Valores (y) divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // VALORES divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + "" + max + "" + "" + (max / 2) + "" + "0"; /* ================================================================================= */ /* ================================================================================= */ /* * maxVisitantes » alturaGrafico * visitantes » x * * x = (visitantes * alturaGrafico) / maxVisitantes * */ int variacaoVisitantes = 0; int variacaoVisitas = 0; int variacaoPaginas = 0; int visitantes = 0; int visitas = 0; int paginas = 0; int mes = 1; int aux = 0; // Preenche o array DataTable com todos os meses do ano: 1 a 12 (0 a 11) // caso não haja estatísticas nesse mês, adiciona 0 nas estatisticas int mesArray = 0; while (mes <= 12) { try { // Quanto o array acaba e ainda há meses para preencher mesArray = Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[0].ToString()); } catch (Exception) { mesArray = 0; } while (mes != mesArray && mes <= 12) { // Adiciona os meses em falta no final do array dtEstatisticas.Rows.Add(new string[] { mes.ToString(), "0", "0", "0" }); mes++; } mes++; aux++; } // Ordena a DataTable pelo valor do mês //dtEstatisticas.DefaultView.Sort = "mes ASC"; /* * NÃO É NECESSÁRIO ORDENAR OS VALORES DENTRO DA DataTable POR A ESCRITA NO GRÁFICO EM x É FEITO COM BASE NO MÊS */ // ADICIONA VALORES AO GRÁFICO foreach (DataRow valor in dtEstatisticas.Rows) { mes = Convert.ToInt32(valor.ItemArray[0].ToString()) - 1; // Não mostra o valor de 0 (zero) no primeiro resultado try { // Erros de indíce ou de divisões por 0 variacaoVisitantes = (Convert.ToInt32(valor.ItemArray[1].ToString()) * alturaGrafico) / max; variacaoVisitas = (Convert.ToInt32(valor.ItemArray[2].ToString()) * alturaGrafico) / max; variacaoPaginas = (Convert.ToInt32(valor.ItemArray[3].ToString()) * alturaGrafico) / max; } catch (Exception) { variacaoVisitantes = 0; variacaoVisitas = 0; variacaoPaginas = 0; } if (mes > 0) { // VISITANTES divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // VISITAS divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // PÁGINAS divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitantes = variacaoVisitantes; visitas = variacaoVisitas; paginas = variacaoPaginas; } /* ================================================================================= */ // VISITANTES /* foreach (DataRow valor in dtEstatisticas.Rows) { mes = Convert.ToInt16(valor.ItemArray[0].ToString()) - 1; // Não mostra o valor de 0 (zero) no primeiro resultado variacao = (Convert.ToInt16(valor.ItemArray[1].ToString()) * alturaGrafico) / max; if (mes > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitantes = variacao; } */ /* ================================================================================= */ // VISITAS /* foreach (DataRow valor in dtEstatisticas.Rows) { mes = Convert.ToInt16(valor.ItemArray[0].ToString()) - 1; variacao = (Convert.ToInt16(valor.ItemArray[2].ToString()) * alturaGrafico) / max; if (mes > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitas = variacao; } */ /* ================================================================================= */ // PÁGINAS /* foreach (DataRow valor in dtEstatisticas.Rows) { mes = Convert.ToInt16(valor.ItemArray[0].ToString()) - 1; variacao = (Convert.ToInt16(valor.ItemArray[3].ToString()) * alturaGrafico) / max; if (mes > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } paginas = variacao; } */ /* ================================================================================= */ divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; /* ================================================================================= */ /* ================================================================================= */ } }