Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Data;
- using Decisor.Core;
- using Decisor.Core.DB;
- using Decisor.Core.Users;
- using System.Net;
- using System.Net.Mail;
- using System.Net.Security;
- using System.Net.Sockets;
- using System.Security;
- using System.Security.Authentication.ExtendedProtection.Configuration;
- namespace dcsAlertasBragalux
- {
- public class SmtpEmailService
- {
- /// <summary>
- /// Método de envio de email com um client smtp.
- /// </summary>
- /// <param name="tarefa">Nome da tarefa: 'Novas Obras' ou 'Novas Facturas'</param>
- /// <param name="html">Uma string que contem a estrutra html da tabela com os dados obras/facturas</param>
- /// <param name="user">Utilizador Decisor.Core.DB.dcsDB</param>
- ///
- private static string CLIENT_EMAIL = "mlry000244@bragalux.pt";
- private static string CLIENT_PASSWORD = "2YTguMDEhZT";
- private static string CLIENT_HOST = "outbound-relay-in.ptprime.pt";
- private static int CLIENT_PORT = 25;
- MailAddress EMAIL_FROM = new MailAddress(CLIENT_EMAIL, "Alertas Bragalux", Encoding.UTF8);
- MailAddress EMAIL_GERMANO = new MailAddress("germano.duarte@bragalux.pt", "Germano Duarte", Encoding.UTF8);
- MailAddress EMAIL_JOAO = new MailAddress("joao.carvalho@elo-si.com", "João Carvalho", Encoding.UTF8);
- MailAddress EMAIL_MIGUEL = new MailAddress("miguel.dias@elo-si.com", "Miguel Dias", Encoding.UTF8);
- private void EnviarEmail(string tarefa, string html, Decisor.Core.DB.dcsDB user)
- {
- if (html.Equals(""))
- {
- try
- {
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("DtRegisto", DateTime.Now);
- dcsField.SetField("Report", "Não existem obras ou facturas novas.");
- long lIdRet = 0;
- user.ExecInsert(dcsField, "SmtpEmailReport", false, ref lIdRet);
- SmtpClient sc = new SmtpClient(CLIENT_HOST, CLIENT_PORT);
- sc.Credentials = new System.Net.NetworkCredential(CLIENT_EMAIL, CLIENT_PASSWORD);
- sc.DeliveryMethod = SmtpDeliveryMethod.Network;
- sc.EnableSsl = false;
- MailMessage msg = new MailMessage(EMAIL_FROM, EMAIL_JOAO);
- string EMAIL_BODY = "<html>";
- EMAIL_BODY += "<head>";
- EMAIL_BODY += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
- EMAIL_BODY += "<meta name='viewport' content='width=device-width'/>";
- EMAIL_BODY += "<style type='text/css'>";
- EMAIL_BODY += "* {margin: 0;padding: 0;font-size: 100%;font-family: 'Avenir Next', 'Helvetica Neue', 'Helvetica', Helvetica, Arial, sans-serif;line-height: 1.65; }img {max-width: 100%;margin: 0 auto;display: block; }body,.body-wrap {width: 100% !important;height: 100%;background: #FFFFFF;-webkit-font-smoothing: antialiased;-webkit-text-size-adjust: none; }a {color: #71bc37;text-decoration: none; }.text-center {text-align: center; }.text-right {text-align: right; }.text-left {text-align: left; }.button {display: inline-block;color: white;background: #71bc37;border: solid #71bc37;border-width: 10px 20px 8px;font-weight: bold;border-radius: 4px; }h1, h2, h3, h4, h5, h6 {margin-bottom: 20px;line-height: 1.25; } h1 { font-size: 32px; }h2 { font-size: 28px; }h3 { font-size: 24px; }h4 { font-size: 20px; }h5 { font-size: 16px; }p, ul, ol {font-size: 16px;font-weight: normal;margin-bottom: 20px; }.container {display: block !important;clear: both !important; margin: 0 auto !important;max-width: 580px !important;}.container table {width: 100% !important;border-collapse: collapse; }.container .masthead {background: #DBFFBF;color: white;}.container .masthead h1 {margin: 0 auto !important;max-width: 90%;text-transform: uppercase;}.container .content {background: white;padding: 30px 35px;}.container .content.footer {background: none;}.container .content.footer p {margin-bottom: 0; color: #888;text-align: center;font-size: 14px;}.container .content.footer a {color: #888;text-decoration: none;font-weight: bold;}.titulo{font-weight: 700;}.subtitulo{font-weight: 250;}.tg{border-collapse:collapse;border-spacing:0;border-color:#bbb;}.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#bbb;color:#594F4F;background-color:#E0FFEB;border-top-width:1px;border-bottom-width:1px;}.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-color:#bbb;color:#493F3F;background-color:#9DE0AD;border-top-width:1px;border-bottom-width:1px;} p.MsoNormal, li.MsoNormal, div.MsoNormal {margin: 0cm;margin-bottom: .0001pt;font-size: 11.0pt;font-family: 'Calibri',sans-serif;}";
- EMAIL_BODY += "</style>";
- EMAIL_BODY += "</head>";
- EMAIL_BODY += "<body>";
- //colocar mensagem no body se for obra ou factura
- if (tarefa.Equals("Novas Obras"))
- EMAIL_BODY += "Não foi registada qualquer obra no dia de hoje.<br/>";
- else
- EMAIL_BODY += "Não foi registada qualquer factura no dia de hoje.<br/>";
- EMAIL_BODY += "<img src='http://goo.gl/08w2jp' />";
- EMAIL_BODY += "<p class='MsoNormal' style='text-autospace:none'>";
- EMAIL_BODY += "<span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += "Rua dos Pitancinhos, 67 – Palmeira - 706 Braga PORTUGAL</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY += "<p class='MsoNormal' style='text-autospace:none'>";
- EMAIL_BODY += "<span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += "T. (+351) 253 607 360 | M. (+351) 964 643 164</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY+= "<p class='MsoNormal' style='text-autospace:none'><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += "F. (+351) 253 607 362</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY += "<p class='MsoNormal'><a href='mailto:bragalux@bragalux.pt'><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += "bragalux@bragalux.pt</span></a><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += " | </span><a href='http://www.bragalux.pt/'><b><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY += "www.bragalux.pt</span></b></a><span style='color:#595959;'><o:p></o:p></span></p>";
- EMAIL_BODY += "</body>";
- EMAIL_BODY += "</html>";
- msg.IsBodyHtml = true;
- msg.Body = EMAIL_BODY;
- msg.BodyEncoding = Encoding.UTF8;
- if (tarefa.Equals("Novas Obras"))
- msg.Subject = "Alertas Bragalux - Não existem obras novas registadas";
- else
- msg.Subject = "Alertas Bragalux - Não existem facturas novas registadas";
- msg.SubjectEncoding = Encoding.UTF8;
- msg.Priority = MailPriority.High;
- msg.Bcc.Add(EMAIL_MIGUEL);
- sc.Send(msg);
- sc.Dispose();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Decisor.Core.Tools.dcsUtils.LogError(ex.Message);
- }
- }
- else
- {
- try
- {
- string EMAIL_SUBJECT = "Alertas Bragalux - Registo de " + tarefa;
- SmtpClient sc = new SmtpClient(CLIENT_HOST, CLIENT_PORT);
- sc.Credentials = new System.Net.NetworkCredential(CLIENT_EMAIL, CLIENT_PASSWORD);
- sc.DeliveryMethod = SmtpDeliveryMethod.Network;
- sc.EnableSsl = false;
- MailMessage msg;
- string EMAIL_BODY_HEADER = "<html>";
- EMAIL_BODY_HEADER += "<head>";
- EMAIL_BODY_HEADER += "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />";
- EMAIL_BODY_HEADER += "<meta name='viewport' content='width=device-width'/>";
- EMAIL_BODY_HEADER += "<style type='text/css'>";
- EMAIL_BODY_HEADER += " .table { font-size:10px; width: auto; border-collapse: collapse ; }";
- EMAIL_BODY_HEADER += " .td_header { background: #4983B9; width:auto; border: solid #9BC2E6 1.0pt; padding: 0cm 3.5pt cm 3.5pt; height: 15.0pt; color:#FFFFFF; text-align:left; vertical-align:top; }";
- EMAIL_BODY_HEADER += " .td_row1_facturas { background-color:smokewhite; border-top: none; border-left: solid #9BC2E6 1.0pt; border-bottom: solid #9BC2E6 1.0pt; border-right: solid #9BC2E6 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 45.0pt; color:#333333; vertical-align:top; } ";
- EMAIL_BODY_HEADER += " .td_row2_facturas { background-color:#FFFFFF; border-top: none; border-left: solid #9BC2E6 1.0pt; border-bottom: solid #9BC2E6 1.0pt; border-right: solid #9BC2E6 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 45.0pt; color:#333333; vertical-align:top; } ";
- EMAIL_BODY_HEADER += " .td_row1_obras { background-color:#FFFFFF; border-top: none; border-left: solid #9BC2E6 1.0pt; border-bottom: solid #9BC2E6 1.0pt; border-right: solid #9BC2E6 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 45.0pt; color:#333333; vertical-align:top; } ";
- EMAIL_BODY_HEADER += " .td_row2_obras { background-color:#D4F7E2; border-top: none; border-left: solid #9BC2E6 1.0pt; border-bottom: solid #9BC2E6 1.0pt; border-right: solid #9BC2E6 1.0pt; padding: 0cm 3.5pt 0cm 3.5pt; height: 45.0pt; color:#333333; vertical-align:top; } ";
- EMAIL_BODY_HEADER += " .td_plus { width:100px;}";
- EMAIL_BODY_HEADER += " .plus { height:5px;font-size:10px; }";
- EMAIL_BODY_HEADER += "</style>";
- EMAIL_BODY_HEADER += "</head>";
- EMAIL_BODY_HEADER += "<body>";
- EMAIL_BODY_HEADER += "<h2 style='color:#F5D44C;'>Registo de " + tarefa + "</h2>";
- string EMAIL_BODY_TABELA_HEADER = "<table border='0' cellspacing='0' cellpadding='0' width='1049' class='table'>";
- EMAIL_BODY_TABELA_HEADER += "<tbody>";
- string EMAIL_BODY_TABELA_CONTENT = html;//local do conteudo principal do email
- string EMAIL_BODY_TABELA_FOOTER = "</tbody>";
- EMAIL_BODY_TABELA_FOOTER += "</table>";
- string EMAIL_BODY_FOOTER = "<p style='text-autospace:none'>";
- EMAIL_BODY_FOOTER += "<img src='http://goo.gl/08w2jp' />";
- EMAIL_BODY_FOOTER += "<span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += "Rua dos Pitancinhos, 67 – Palmeira - 706 Braga PORTUGAL</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY_FOOTER += "<p class='MsoNormal' style='text-autospace:none'>";
- EMAIL_BODY_FOOTER += "<span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += "T. (+351) 253 607 360 | M. (+351) 964 643 164</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY_FOOTER += "<p class='MsoNormal' style='text-autospace:none'><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += "F. (+351) 253 607 362</span><span style='color:black;'><o:p></o:p></span></p>";
- EMAIL_BODY_FOOTER += "<p class='MsoNormal'><a href='mailto:bragalux@bragalux.pt'><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += "bragalux@bragalux.pt</span></a><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += " | </span><a href='http://www.bragalux.pt/'><b><span style='font-size:8.0pt;font-family:"Arial",sans-serif;color:#595959;'>";
- EMAIL_BODY_FOOTER += "www.bragalux.pt</span></b></a><span style='color:#595959;'><o:p></o:p></span></p>";
- EMAIL_BODY_FOOTER += "</body>";
- EMAIL_BODY_FOOTER += "</html>";
- if (tarefa.Equals("Novas Obras"))
- {
- EMAIL_BODY_TABELA_HEADER += "<tr style='height: 45pt'>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Data Registo</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Código Obra</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Código Obra Pai</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Nome Pessoa</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Valor Encomendado</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "</tr>";
- string BODY = EMAIL_BODY_HEADER +
- EMAIL_BODY_TABELA_HEADER +
- EMAIL_BODY_TABELA_CONTENT +
- EMAIL_BODY_TABELA_FOOTER +
- EMAIL_BODY_FOOTER;
- msg = new MailMessage(EMAIL_FROM, EMAIL_GERMANO);
- msg.IsBodyHtml = true;
- msg.Body = BODY;
- msg.BodyEncoding = Encoding.UTF8;
- msg.SubjectEncoding = Encoding.UTF8;
- msg.Subject = EMAIL_SUBJECT;
- msg.Priority = MailPriority.High;
- msg.Bcc.Add(EMAIL_JOAO);
- msg.Bcc.Add(EMAIL_MIGUEL);
- AlterarEstadoObra(user);
- sc.Send(msg);
- }
- else
- {
- if (tarefa.Equals("Novas Facturas"))
- {
- EMAIL_BODY_TABELA_HEADER += "<tr style='height: 45pt'>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Ano Factura</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Data Factura</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Código Factura</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Código Afetação</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Nome Pessoa</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Total Líquido</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Descrição Produto</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "<td nowrap='nowrap' class='td_header'><p><b><span>Valor Líquido</span></b></p></td>";
- EMAIL_BODY_TABELA_HEADER += "</tr>";
- string BODY = EMAIL_BODY_HEADER +
- EMAIL_BODY_TABELA_HEADER +
- EMAIL_BODY_TABELA_CONTENT +
- EMAIL_BODY_TABELA_FOOTER +
- EMAIL_BODY_FOOTER;
- msg = new MailMessage(EMAIL_FROM, EMAIL_GERMANO);
- msg.IsBodyHtml = true;
- msg.Body = BODY;
- msg.BodyEncoding = Encoding.UTF8;
- msg.SubjectEncoding = Encoding.UTF8;
- msg.Subject = EMAIL_SUBJECT;
- msg.Priority = MailPriority.High;
- msg.Bcc.Add(EMAIL_JOAO);
- msg.Bcc.Add(EMAIL_MIGUEL);
- AlterarEstadoFactura(user);
- sc.Send(msg);
- }
- }
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("DtRegisto", DateTime.Now);
- dcsField.SetField("Report", "Foi enviado um novo email.");
- long lIdRet = 0;
- user.ExecInsert(dcsField, "SmtpEmailReport", false, ref lIdRet);
- sc.Dispose();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- Decisor.Core.Tools.dcsUtils.LogError(ex.Message);
- }
- }
- }
- private bool AlterarEstadoObra(Decisor.Core.DB.dcsDB user)
- {
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("EstadoEmail", dcsDB.GetString("Enviado"));
- dcsField.SetField("EstadoEmail2", dcsDB.GetString("Criado"));
- if (user.ExecSQL("UPDATE Act1ObrasEmail SET EstadoEmail = ? WHERE EstadoEmail = ?", dcsField))
- return true;
- return false;
- }
- private bool AlterarEstadoFactura(Decisor.Core.DB.dcsDB user)
- {
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("EstadoEmail", dcsDB.GetString("Enviado"));
- dcsField.SetField("EstadoEmail2", dcsDB.GetString("Criado"));
- if (user.ExecSQL("UPDATE Fnc1FCEmail SET EstadoEmail=? WHERE EstadoEmail=? ", dcsField))
- return true;
- return false;
- }
- public void VerificaNovasObras(Decisor.Core.DB.dcsDB user)
- {
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("YEAR(DtRegisto)", DateTime.Now.Year);
- dcsField.SetField("MONTH(DtRegisto)", DateTime.Now.Month);
- dcsField.SetField("IdPessoa", 4);
- DataTable dtObras = null;
- StringBuilder sql = new StringBuilder();
- sql.Append(" SELECT IdObra, DtRegisto, CdObra, CdObraPai, NmPessoa, DsObra,VlrEncomendado");
- sql.Append(" FROM Act1Obras");
- sql.Append(" WHERE YEAR(DtRegisto) = ?");
- sql.Append(" AND MONTH(DtRegisto) = ?");
- sql.Append(" AND IdPessoa <> ?");
- //Pesquisa todas as obras na tabela 'Act1Obras'
- if (user.OpenDataTable(ref dtObras, dcsDB.GetString(sql), "T", dcsField))
- {
- for (int i = 0; i < dtObras.Rows.Count; i++)
- {
- dcsField.Clear();
- long ret = 0;
- DataTable dtAux = null;
- //verifica se a obra já existe na tabela de emails
- dcsField.SetField("IdObra", dcsDB.GetString(dtObras.Rows[i]["IdObra"]));
- user.OpenDataTable(ref dtAux, "SELECT * FROM Act1ObrasEmail WHERE IdObra = ?", "T", dcsField);
- if (dtAux.Rows.Count == 0)
- {
- dcsField.Clear();
- dcsField.SetField("IdObra", dcsDB.GetString(dtObras.Rows[i]["IdObra"]));
- dcsField.SetField("EstadoEmail", "Criado");
- dcsField.SetField("DtRegisto", dcsDB.GetDateStamp(dtObras.Rows[i]["DtRegisto"]));
- dcsField.SetField("CdObra", dcsDB.GetString(dtObras.Rows[i]["CdObra"]));
- dcsField.SetField("CdObraPai", dcsDB.GetString(dtObras.Rows[i]["CdObraPai"]));
- dcsField.SetField("NmPessoa", dcsDB.GetString(dtObras.Rows[i]["NmPessoa"]));
- dcsField.SetField("VlrEncomendado", dcsDB.GetSingle(dtObras.Rows[i]["VlrEncomendado"]));
- user.ExecInsert(dcsField, "Act1ObrasEmail", false, ref ret);
- }
- }
- }
- //Pesquisar todos as linhas da tabela 'Act1ObrasEmail' com o EstadoEmail = 'Criado' e enviar os dados de cada linha para o email
- DataTable dtmail = null;
- string ObrasHTML = "";
- dcsField.Clear();
- dcsField.SetField("EstadoEmail", "Criado");
- user.OpenDataTable(ref dtmail, "SELECT * FROM Act1ObrasEmail WHERE EstadoEmail = ? ORDER BY DtRegisto DESC", "T", dcsField);
- for (int i = 0; i < dtmail.Rows.Count; i++)
- {
- ObrasHTML += "<tr style='height: 45pt'>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row1_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["DtRegisto"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row1_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdObra"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row1_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdObraPai"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row1_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["NmPessoa"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row1_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["VlrEncomendado"]) + "</span></p></td>";
- ObrasHTML += "</tr>";
- i++;
- if (i != dtmail.Rows.Count)
- {
- ObrasHTML += "<tr style='height: 45pt'>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row2_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["DtRegisto"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row2_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdObra"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row2_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdObraPai"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row2_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["NmPessoa"]) + "</span></p></td>";
- ObrasHTML += " <td width='71' nowrap='nowrap' class='td_row2_obras'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["VlrEncomendado"]) + "</span></p></td>";
- ObrasHTML += "</tr>";
- }
- }
- //Enviar os dados para o função do email smtp
- if (dtmail.Rows.Count > 0)
- EnviarEmail("Novas Obras", ObrasHTML, user);
- else
- EnviarEmail("Novas Obras", "", user);
- }
- public void VerificaNovasFacturas(Decisor.Core.DB.dcsDB user)
- {
- dcsFieldInfoLst dcsField = new dcsFieldInfoLst();
- dcsField.SetField("IdPessoa", 4);
- dcsField.SetField("CdFactura", dcsDB.GetString("NÃO EMITIDA"));
- dcsField.SetField("YEAR(DtFactura)", DateTime.Now.Year);
- dcsField.SetField("MONTH(DtFactura)", DateTime.Now.Month);
- DataTable dtFacturas = null;
- StringBuilder sqlFC = new StringBuilder();
- sqlFC.Append(" SELECT Fnc1FC.IdFactura,Fnc1FC.AnoFactura,Fnc1FC.DtFactura,Fnc1FC.CdFactura,Fnc1FC.CdCntCustos,Fnc1FC.NmPessoa,Fnc1FC.TtIliquido,");
- sqlFC.Append(" Fnc1FCLn.DsProduto,Fnc1FCLn.VlrIliquidoCrr");
- sqlFC.Append(" FROM Fnc1FC,Fnc1FCLn");
- sqlFC.Append(" WHERE Fnc1FC.IdFactura = Fnc1FCLn.IdFactura");
- sqlFC.Append(" AND Fnc1FC.IdPessoa <> ?");
- sqlFC.Append(" AND Fnc1FC.CdFactura <> ?");
- sqlFC.Append(" AND YEAR(DtFactura) = ?");
- sqlFC.Append(" AND MONTH(DtFactura) = ?");
- //Pesquisa todoas as facturas com o join de 'Fnc1FC' com 'Fnc1FCLn' com filtragem por CdPessoa=0001 e CdFactura<>'Não Emitida'
- if (user.OpenDataTable(ref dtFacturas, dcsDB.GetString(sqlFC), "T", dcsField))
- {
- for (int i = 0; i < dtFacturas.Rows.Count; i++)
- {
- dcsField.Clear();
- dcsField.SetField("IdFactura", dcsDB.GetLong(dtFacturas.Rows[i]["IdFactura"]));
- dcsField.SetField("CdProduto", dcsDB.GetString(dtFacturas.Rows[i]["DsProduto"]));
- //verifica se a factura já existe na tabela de emails
- long ret = 0;
- string IdFactura = dcsDB.GetString(dtFacturas.Rows[i]["IdFactura"]);
- DataTable dtAux = null;
- user.OpenDataTable(ref dtAux, "SELECT * FROM Fnc1FCEmail WHERE IdFactura = ? AND DsProduto = ?", "T", dcsField);
- if (dtAux.Rows.Count == 0)
- {
- dcsField.Clear();
- dcsField.SetField("IdFactura", dcsDB.GetLong(dtFacturas.Rows[i]["IdFactura"]));
- dcsField.SetField("EstadoEmail", "Criado");
- dcsField.SetField("AnoFactura", dcsDB.GetLong(dtFacturas.Rows[i]["AnoFactura"]));
- dcsField.SetField("DtFactura", dcsDB.GetDateStamp(dtFacturas.Rows[i]["DtFactura"]));
- dcsField.SetField("CdFactura", dcsDB.GetString(dtFacturas.Rows[i]["CdFactura"]));
- dcsField.SetField("CdCntCustos", dcsDB.GetString(dtFacturas.Rows[i]["CdCntCustos"]));
- dcsField.SetField("NmPessoa", dcsDB.GetString(dtFacturas.Rows[i]["NmPessoa"]));
- dcsField.SetField("TtIliquido", dcsDB.GetDouble(dtFacturas.Rows[i]["TtIliquido"]));
- dcsField.SetField("DsProduto", dcsDB.GetString(dtFacturas.Rows[i]["DsProduto"]));
- dcsField.SetField("VlrIliquidoCrr", dcsDB.GetDouble(dtFacturas.Rows[i]["VlrIliquidoCrr"]));
- user.ExecInsert(dcsField, "Fnc1FCEmail", false, ref ret);
- }
- }
- }
- //Pesquisar todos as linhas da tabela 'Fnc1FCEmail' com o EstadoEmail = 'Criado' e enviar os dados de cada linha para o email
- DataTable dtmail = null;
- StringBuilder FacturasHTML = new StringBuilder();
- dcsField.Clear();
- dcsField.SetField("EstadoEmail", "Criado");
- user.OpenDataTable(ref dtmail, "SELECT * FROM Fnc1FCEmail WHERE EstadoEmail = ? ORDER BY IdFactura DESC", "T", dcsField);
- for (int i = 0; i < dtmail.Rows.Count; i++)
- {
- dcsFieldInfoLst dcsField2 = new dcsFieldInfoLst();
- dcsField2.SetField("IdFactura", dcsDB.GetLong(dtmail.Rows[i]["IdFactura"]));
- dcsField2.SetField("EstadoEmail", "Criado");
- long total = dcsDB.GetLong(user.Dlookup("COUNT(*)", "Fnc1FCEmail", "IdFactura = ? AND EstadoEmail = ?", dcsField2));
- if (total > 1)
- {
- DataTable dt2 = null;
- dcsFieldInfoLst dcsField3 = new dcsFieldInfoLst();
- dcsField3.SetField("EstadoEmail", "Criado");
- dcsField3.SetField("IdFactura", dcsDB.GetLong(dtmail.Rows[i]["IdFactura"]));
- user.OpenDataTable(ref dt2, "SELECT * FROM Fnc1FCEmail WHERE EstadoEmail = ? AND IdFactura = ?", "TD2", dcsField3);
- FacturasHTML.Append("<tr style='height: 45pt'>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["AnoFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["DtFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdCntCustos"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["NmPessoa"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["TtIliquido"]) + "</span></p></td>");
- //O DsProduto pode ser repetido para a mesma factura
- FacturasHTML.Append(" <td nowrap='nowrap' class='td_row1_facturas td_plus'>");
- for (int j = 0; j < dt2.Rows.Count; j++)
- FacturasHTML.Append("<p class='plus'><span>" + dcsDB.GetString(dtmail.Rows[j]["DsProduto"]) + "</span></p>");
- FacturasHTML.Append(" </td>");
- //O VlrIliquidoCrr pode ser repetido para a mesma factura
- FacturasHTML.Append(" <td nowrap='nowrap' class='td_row1_facturas td_plus'>");
- for (int j = 0; j < dt2.Rows.Count; j++)
- FacturasHTML.Append("<p class='plus'><span>" + dcsDB.GetString(dtmail.Rows[j]["VlrIliquidoCrr"]) + "</span></p>");
- FacturasHTML.Append(" </td>");
- i += (int)total;
- FacturasHTML.Append("</tr>");
- }
- else
- {
- FacturasHTML.Append("<tr style='height: 45pt'>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["AnoFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["DtFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdFactura"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["CdCntCustos"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["NmPessoa"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["TtIliquido"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["DsProduto"]) + "</span></p></td>");
- FacturasHTML.Append(" <td width='71' nowrap='nowrap' class='td_row1_facturas'><p><span>" + dcsDB.GetString(dtmail.Rows[i]["VlrIliquidoCrr"]) + "</span></p></td>");
- FacturasHTML.Append("</tr>");
- }
- }
- //Enviar os dados para o função do email smtp
- if (dtmail.Rows.Count > 0)
- EnviarEmail("Novas Facturas", dcsDB.GetString(FacturasHTML), user);
- else
- EnviarEmail("Novas Facturas", "", user);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement