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_Evolucao : 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 SOMÁDOS int sum = 0; int sumVisitantes = 0; int sumVisitas = 0; int sumPaginas = 0; int min = int.MaxValue; int minVisitantes = 0; int minVisitas = 0; int minPaginas = 0; foreach (DataRow valor in dtEstatisticas.Rows) { /* ********************************************************************************* */ /* MÁXIMO SOMÁDO */ sumVisitantes = sumVisitantes + Convert.ToInt32(valor.ItemArray[1].ToString()); sumVisitas = sumVisitas + Convert.ToInt32(valor.ItemArray[2].ToString()); sumPaginas = sumPaginas + Convert.ToInt32(valor.ItemArray[3].ToString()); // Máximo total if (sumVisitantes > sum) sum = sumVisitantes; if (sumVisitas > sum) sum = sumVisitas; if (sumPaginas > sum) sum = sumPaginas; /* ********************************************************************************* */ /* MÍNIMO */ if (Convert.ToInt32(valor.ItemArray[1].ToString()) < minVisitantes) minVisitantes = Convert.ToInt32(valor.ItemArray[1].ToString()); if (Convert.ToInt32(valor.ItemArray[2].ToString()) < minVisitas) minVisitas = Convert.ToInt32(valor.ItemArray[2].ToString()); if (Convert.ToInt32(valor.ItemArray[3].ToString()) < minPaginas) minPaginas = Convert.ToInt32(valor.ItemArray[3].ToString()); // Mínimo total if (minVisitantes < min) min = minVisitantes; if (minVisitas < min) min = minVisitas; if (minPaginas < min) min = minPaginas; } if (min > sum) min = 0; /* ================================================================================= */ // 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 + "" + sum + "" + "" + ((sum + min) / 2) + "" + "" + min + ""; /* ================================================================================= */ /* ================================================================================= */ /* * maxVisitantes » alturaGrafico * visitantes » x * * x = (visitantes * alturaGrafico) / maxVisitantes * */ int totalVisitantes = 0; int totalVisitas = 0; int totalPaginas = 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 totalVisitantes = totalVisitantes + (Convert.ToInt32(dtEstatisticas.Rows[0].ItemArray[1].ToString()) * alturaGrafico) / sum; totalVisitas = totalVisitas + (Convert.ToInt32(dtEstatisticas.Rows[0].ItemArray[2].ToString()) * alturaGrafico) / sum; totalPaginas = totalPaginas + (Convert.ToInt32(dtEstatisticas.Rows[0].ItemArray[3].ToString()) * alturaGrafico) / sum; } catch (Exception) { } } else { try { if (dia == Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[0].ToString())) { // Dia COM valores de estatísticas totalVisitantes = totalVisitantes + (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[1].ToString()) * alturaGrafico) / sum; totalVisitas = totalVisitas + (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[2].ToString()) * alturaGrafico) / sum; totalPaginas = totalPaginas + (Convert.ToInt16(dtEstatisticas.Rows[aux].ItemArray[3].ToString()) * alturaGrafico) / sum; aux += 1; } } catch (Exception) { } y1Visitantes = alturaGrafico - visitantes; y2Visitantes = alturaGrafico - totalVisitantes; y1Visitas = alturaGrafico - visitas; y2Visitas = alturaGrafico - totalVisitas; y1Paginas = alturaGrafico - paginas; y2Paginas = alturaGrafico - totalPaginas; // VISITANTES divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // VISITAS divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; // PÁGINAS divEstatisticas.InnerHtml = divEstatisticas.InnerHtml + ""; } visitantes = totalVisitantes; visitas = totalVisitas; paginas = totalPaginas; } /* ================================================================================= */ // 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 + ""; /* ================================================================================= */ /* ================================================================================= */ } }