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_Mes_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) { } int Mes = DateTime.Now.Month; try { Mes = Convert.ToInt16(Request.QueryString["m"].ToString()); if (Mes == 0) { Mes = DateTime.Now.Month; } } catch (Exception) { } /* ================================================================================= */ // LISTAGEM DataTable dtEstatisticas = SiteECom.Estatisticas.Mensais.Visitas(Ano, Mes); /* ================================================================================= */ // 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 = 31 * 20 + escalaY; // 31 dias * 21px + escalaY int legenda = 20; // Altura da legenda 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 + ""; // DIAS for (int i = 0; i < DateTime.DaysInMonth(Ano, Mes); 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 dia = 1; int aux = 1; int y1Visitantes = 0; int y2Visitantes = 0; int y1Visitas = 0; int y2Visitas = 0; int y1Paginas = 0; int y2Paginas = 0; dia = 0; aux = 1; for (dia = 0; dia <= DateTime.DaysInMonth(Ano, Mes); dia++) { if (dia == 0) { try { // ÚLTIMO DIA DO MÊS ANTERIOR variacaoVisitantes = (Convert.ToInt16(dtEstatisticas.Rows[0].ItemArray[1].ToString()) * alturaGrafico) / max; variacaoVisitas = (Convert.ToInt16(dtEstatisticas.Rows[0].ItemArray[2].ToString()) * alturaGrafico) / max; variacaoPaginas = (Convert.ToInt16(dtEstatisticas.Rows[0].ItemArray[3].ToString()) * alturaGrafico) / max; } catch (Exception) { variacaoVisitantes = 0; variacaoVisitas = 0; variacaoPaginas = 0; } } else { try { if (dia == Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[0].ToString())) { // Dia COM valores de estatísticas variacaoVisitantes = (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[1].ToString()) * alturaGrafico) / max; variacaoVisitas = (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[2].ToString()) * alturaGrafico) / max; variacaoPaginas = (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[3].ToString()) * alturaGrafico) / max; aux += 1; } else { // Dia SEM valores de estatísticas variacaoVisitantes = 0; variacaoVisitas = 0; variacaoPaginas = 0; } y1Visitantes = alturaGrafico - visitantes; y2Visitantes = alturaGrafico - variacaoVisitantes; y1Visitas = alturaGrafico - visitas; y2Visitas = alturaGrafico - variacaoVisitas; y1Paginas = alturaGrafico - paginas; y2Paginas = alturaGrafico - variacaoPaginas; } catch (Exception) { // ERRO NO ÍNDICE aux y1Visitantes = alturaGrafico - variacaoVisitantes; y2Visitantes = alturaGrafico; y1Visitas = alturaGrafico - variacaoVisitas; y2Visitas = alturaGrafico; y1Paginas = alturaGrafico - variacaoPaginas; y2Paginas = alturaGrafico; variacaoVisitantes = 0; variacaoVisitas = 0; variacaoPaginas = 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) { dia = 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 (dia > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitantes = variacao; } */ /* ================================================================================= */ // VISITAS /* foreach (DataRow valor in dtEstatisticas.Rows) { dia = Convert.ToInt16(valor.ItemArray[0].ToString()) - 1; variacao = (Convert.ToInt16(valor.ItemArray[2].ToString()) * alturaGrafico) / max; if (dia > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitas = variacao; } */ /* ================================================================================= */ // PÁGINAS /* foreach (DataRow valor in dtEstatisticas.Rows) { dia = Convert.ToInt16(valor.ItemArray[0].ToString()) - 1; variacao = (Convert.ToInt16(valor.ItemArray[3].ToString()) * alturaGrafico) / max; if (dia > 0) { divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } paginas = variacao; } */ /* ================================================================================= */ divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; /* ================================================================================= */ /* ================================================================================= */ } }