using System; using System.Collections.Generic; using System.Web; using MySQL; using System.Data; using System.Web.Configuration; using System.Web.UI.WebControls; namespace SiteECom { /// /// Gestão de newsletter /// public class Newsletter { public Newsletter() { // // TODO: Add constructor logic here // } /// /// Mostra todas as newsletter já criadas /// /// Número da página a mostrar /// DataTable public static DataTable Listagem(int Pagina) { int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " titulo, resumo, desenvolvimento, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " visitas " + "FROM newsletter " + "ORDER BY data_ini DESC " + "LIMIT " + (Pagina * offset) + ", " + offset; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Pesquisa de conteudos /// /// DataTable public static DataTable Pesquisa(string Pesquisa) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " titulo, resumo, desenvolvimento, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " visitas " + "FROM newsletter " + "ORDER BY data_ini DESC"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } /// /// Mostra o detalhe de uma newsletter /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Detalhes(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " titulo, resumo, desenvolvimento, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_ini, '%Y') AS data_ini_ano, " + " DATE_FORMAT(data_ini, '%m') AS data_ini_mes, " + " DATE_FORMAT(data_ini, '%d') AS data_ini_dia, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " DATE_FORMAT(data_fim, '%Y') AS data_fim_ano, " + " DATE_FORMAT(data_fim, '%m') AS data_fim_mes, " + " DATE_FORMAT(data_fim, '%d') AS data_fim_dia, " + " visitas " + "FROM newsletter " + "WHERE id=" + Id; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Nova newsletter /// /// Título da newsletter /// Data da newsletter /// Resumo do newsletter /// Activo/Inactivo (1/0) /// Id de quem cria a newsletter /// Departamento de quem cria a newsletter /// True ou False public static Boolean Gravar(string Titulo, string Data, string Resumo, int Activo, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO newsletter(titulo, data_ini, resumo, activo, createuser, createdep, createdata) " + "VALUES('" + Titulo + "'," + " '" + Data + "'," + " '" + Resumo + "'," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Editar newsletter /// /// ID da newsletter a editar /// Título da newsletter /// Data da newsletter /// Resumo da newsletter /// Activo/Inactivo (1/0) /// Id de quem cria a newsletter /// Departamento quem cria a newsletter /// True ou False public static Boolean Editar(int Id, string Titulo, string Data, string Resumo, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE newsletter " + "SET titulo ='" + Titulo + "'," + " data_ini ='" + Data + "'," + " resumo ='" + Resumo + "'," + " activo = " + Activo + "," + " edituser = " + EditUser + "," + " editdep = " + EditDep + "," + " editdata =now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } /// /// Registo de newsletters enviadas /// public class Log { /// /// Mostra todos os envios de uma determinada newsletter /// /// Id da newsletter enviada /// DataTable public static DataTable Envios(int Newsletter) { DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " newsletter, status, " + " DATE_FORMAT(createdata, '%Y.%m.%d %H:%i') AS envio " + "FROM newsletter_envio " + "WHERE newsletterid=" + Newsletter + " " + "ORDER BY createdata DESC"; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Mostra os detalhes do envio de uma newsletter /// /// Id do envio /// DataTable public static DataTable Detalhes(int Envio) { DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " newsletter, status, " + " DATE_FORMAT(createdata, '%Y.%m.%d') AS envio " + "FROM newsletter_envio " + "WHERE id=" + Envio + " " + "ORDER BY createdata DESC"; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Registo de newsletters enviadas /// /// ID da newsletter enviada /// Código fonte da newsletter /// Estado do envio /// Id de quem envia a newsletter /// Departamento quem envia a newsletter /// public static Boolean Adicionar(int Newsletter, string Html, string Estado, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO newsletter_envio(newsletterid, newsletter, status, activo, createuser, createdep, createdata) " + "VALUES( " + Newsletter + " ," + " '" + Html + "'," + " '" + Estado + "'," + " 1," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } } /// /// Gestão de conteúdos para cada newsletter /// public class Conteudos { /// /// Listagem de conteúdos de uma detarminada newsletter /// public class Listagem { /// /// Mostra todos os conteúdos de uma determinada newsletter /// /// ID da newsletter /// DataTable public static DataTable Geral(int Newsletter) { DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT c.id, " + " c.createuser, c.createdep, c.createdata, " + " c.edituser, c.editdep, c.editdata, " + " c.activo, " + " c.local, c.ordem, c.titulo, c.resumo, c.desenvolvimento, c.imagem, " + " DATE_FORMAT(c.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(c.data_fim, '%Y.%m.%d') AS data_fim, " + " c.visitas, " + " COUNT(a.link) AS acessos " + "FROM newsletter_conteudo c LEFT OUTER JOIN newsletter_acessos a ON a.conteudoid=c.id " + "WHERE c.newsletterid=" + Newsletter + " " + "GROUP BY c.id " + "ORDER BY c.local, c.ordem"; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Mostra todos os conteúdos de uma determinada newsletter /// /// ID da newsletter /// Número da página a mostrar /// DataTable public static DataTable Geral(int Newsletter, int Pagina) { int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " local, ordem, titulo, resumo, desenvolvimento, imagem, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " visitas " + "FROM newsletter_conteudo " + "WHERE newsletterid=" + Newsletter + " " + "ORDER BY local, ordem " + "LIMIT " + (Pagina * offset) + ", " + offset; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Mostra todos os conteúdos activos de uma determinada newsletter por área /// /// ID da newsletter /// DataTable public static DataTable Local(int Newsletter, int Local) { DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " local, ordem, titulo, resumo, desenvolvimento, imagem, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " visitas " + "FROM newsletter_conteudo " + "WHERE newsletterid=" + Newsletter + " " + " AND local=" + Local + " " + " AND activo=1 " + "ORDER BY local, ordem"; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } } /// /// Pesquisa de conteudos /// /// ID da newsletter /// DataTable public static DataTable Pesquisa(int Newsletter, string Pesquisa) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT c.id, " + " c.createuser, c.createdep, c.createdata, " + " c.edituser, c.editdep, c.editdata, " + " c.activo, " + " c.local, c.ordem, c.titulo, c.resumo, c.desenvolvimento, c.imagem, " + " DATE_FORMAT(c.data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(c.data_fim, '%Y.%m.%d') AS data_fim, " + " c.visitas, " + " COUNT(a.link) AS acessos " + "FROM newsletter_conteudo c LEFT OUTER JOIN newsletter_acessos a ON a.conteudoid=c.id " + "WHERE c.newsletterid=" + Newsletter + " " + "GROUP BY c.id " + "ORDER BY c.local, c.ordem"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } /// /// Mostra o detalhe de uma newsletter /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Detalhes(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " local, ordem, titulo, resumo, desenvolvimento, imagem, link, " + " DATE_FORMAT(data_ini, '%Y.%m.%d') AS data_ini, " + " DATE_FORMAT(data_fim, '%Y.%m.%d') AS data_fim, " + " visitas " + "FROM newsletter_conteudo " + "WHERE id=" + Id; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Novo conteúdo /// /// ID da newsletter /// Localização do conteúdo na newsletter /// Título do conteúdo /// Ordem do conteúdo /// Validade do conteúdo: início /// Validade do conteúdo: fim /// Resumo do conteúdo /// Desenvolvimento do conteúdo /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de cria o conteúdo /// True ou False public static Boolean Gravar(int Newsletter, string Local, string Titulo, int Ordem, string Inicio, string Fim, string Link, string Desenvolvimento, int Activo, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO newsletter_conteudo(newsletterid, " + " local, titulo, " + " ordem, " + " data_ini, data_fim, " + " link, desenvolvimento, " + " activo, createuser, createdep, createdata) " + "VALUES( " + Newsletter + "," + " '" + Local + "'," + " '" + Titulo + "'," + " " + Ordem + "," + " '" + Inicio + "'," + " '" + Fim + "'," + " '" + Link + "'," + " '" + Desenvolvimento + "'," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Editar conteúdo /// /// ID do conteúdo a editar /// ID da newsletter /// Localização do conteúdo na newsletter /// Título do conteúdo /// Ordem do conteúdo /// Validade do conteúdo: início /// Validade do conteúdo: fim /// Resumo do conteúdo /// Desenvolvimento do conteúdo /// Activo/Inactivo (1/0) /// Id de quem cria o conteúdo /// Departamento de quem cria o conteúdo /// True ou False public static Boolean Editar(int Id, int Newsletter, string Local, string Titulo, int Ordem, string Inicio, string Fim, string Link, string Desenvolvimento, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE newsletter_conteudo " + "SET newsletterid = " + Newsletter + "," + " local ='" + Local + "'," + " titulo ='" + Titulo + "'," + " ordem = " + Ordem + "," + " data_ini ='" + Inicio + "'," + " data_fim ='" + Fim + "'," + " link ='" + Link + "'," + " desenvolvimento ='" + Desenvolvimento + "'," + " activo = " + Activo + "," + " edituser = " + EditUser + "," + " editdep = " + EditDep + "," + " editdata =now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } } /// /// Gestão de subscrições /// public class Subscricoes { /// /// Listagem de endereços ACTIVOS que subscreveram a newsletter /// /// Array com todos os endereços activos public static string[] Listagem() { DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " email " + "FROM newsletter_subscricao " + "WHERE activo=1 " + "ORDER BY email"; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); // ENDEREÇOS SUBSCRITOS E ACTIVOS string[] subscriocoes = new string[] { }; if (dtListagem.Rows.Count > 0) { Array.Resize(ref subscriocoes, dtListagem.Rows.Count); for (int i = 0; i < dtListagem.Rows.Count; i++) { subscriocoes[i] = dtListagem.Rows[i].ItemArray[8].ToString(); } } return subscriocoes; } /// /// Listagem de endereços que subscreveram a newsletter /// /// Número da página a mostrar /// DataTable public static DataTable Listagem(int Pagina) { int offset = Convert.ToInt16(WebConfigurationManager.AppSettings["offset"].ToString()); DataTable dtListagem = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " email " + "FROM newsletter_subscricao " + "ORDER BY email " + "LIMIT " + (Pagina * offset) + ", " + offset; dtListagem = sqlInfo.Read(); sqlInfo.closeConnection(); return dtListagem; } /// /// Pesquisa de subscrições /// /// DataTable public static DataTable Pesquisa(string Pesquisa) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); /* sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " email " + "FROM newsletter_subscricao " + "ORDER BY email"; */ sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " email " + "FROM newsletter_subscricao " + "WHERE email LIKE '%" + Pesquisa + "%' " + "ORDER BY email"; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); /* #1 - CONVERTE A PESQUISA NUM ARRAY EM QUE CADA POSIÇÃO CONTEM UM PARALVRA */ //string[] _pesquisa = Pesquisa.Split(new char[] { ' ' }); /* #2 - PESQUISA TODAS AS OCURRÊNCIAS DE _pesquisa EM dtInfo. REMOVE DE dtInfo TODAS AS LINHAS QUE NÃO TENHAM PELO MENOS UMA OCURRÊNCIA */ //Intranet.Geral.Pesquisa(ref dtInfo, _pesquisa); return dtInfo; } /// /// Mostra o detalhe de um endereço de email subscrito /// /// Id do conteúdo a mostrar /// DataTable public static DataTable Detalhes(int Id) { DataTable dtInfo = new DataTable(); sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "SELECT id, " + " createuser, createdep, createdata, " + " edituser, editdep, editdata, " + " activo, " + " email " + "FROM newsletter_subscricao " + "WHERE id=" + Id; dtInfo = sqlInfo.Read(); sqlInfo.closeConnection(); return dtInfo; } /// /// Novo email a subscrever a newsletter /// /// Endereço a subscrever /// Activo/Inactivo (1/0) /// Id de quem cria a newsletter /// Departamento de quem cria a newsletter /// True ou False public static Boolean Gravar(string Email, int Activo, int CreateUser, int CreateDep) { bool gravado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "INSERT INTO newsletter_subscricao(email, activo, createuser, createdep, createdata) " + "VALUES('" + Email + "'," + " " + Activo + " ," + " " + CreateUser + " ," + " " + CreateDep + " ," + " now())"; gravado = sqlInfo.Write(); sqlInfo.closeConnection(); return gravado; } /// /// Editar email subscrito /// /// ID do email subscrito a editar /// Endereço a subscrever /// Activo/Inactivo (1/0) /// Id de quem cria a newsletter /// Departamento de quem cria a newsletter /// True ou False public static Boolean Editar(int Id, string Email, int Activo, int EditUser, int EditDep) { bool editado = false; sql sqlInfo = new sql(WebConfigurationManager.ConnectionStrings["Site"].ConnectionString); sqlInfo.Query = "UPDATE newsletter_subscricao " + "SET email ='" + Email + "'," + " activo = " + Activo + "," + " edituser = " + EditUser + "," + " editdep = " + EditDep + "," + " editdata =now() " + "WHERE id=" + Id; editado = sqlInfo.Write(); sqlInfo.closeConnection(); return editado; } } } }