示例#1
0
        public void GravaHistoricoEmailEnviado()
        {
            //grava na lista de historico de notificações os emails enviados.
            mdConfig itemConfig = new mdConfig();

            PortalGestãoDeContratosDataContext dc = new PortalGestãoDeContratosDataContext(new Uri(vURI));

            dc.Credentials = new NetworkCredential(itemConfig.user, itemConfig.password, itemConfig.domain);

            //cria os novos registros gerados
            HistóricoJobEmailEnviadoItem novoitem = null;

            foreach (mdHistoricoEnvioEmail item in ListaResultHistorico)
            {
                novoitem = new HistóricoJobEmailEnviadoItem();

                novoitem.Origem      = item.Origem;
                novoitem.Status      = item.Status;
                novoitem.Mensagem    = item.Mensagem;
                novoitem.Para        = item.Para;
                novoitem.DataDeEnvio = item.Data;

                dc.AddToHistóricoJobEmailEnviado(novoitem);
                dc.SaveChanges();
            }
        }
示例#2
0
        public void VerificaContratosFimVigencia()
        {
            ListaResultHistorico = new List <mdHistoricoEnvioEmail>();

            PortalGestãoDeContratosDataContext dc = new PortalGestãoDeContratosDataContext(new Uri(vURI));

            dc.Credentials = new NetworkCredential(itemConfig.user, itemConfig.password, itemConfig.domain);

            //Define mensagem do email
            string vSubject    = "Gestão de Contratos - Aviso de Fim de Vigência";
            string vBodyInicio = "<span style='font-family:Arial; font-size:14px'>Contratos próximos do fim de vigência.</span><br/><br/>" +
                                 "<table width=100% style='font-family:Arial; font-size:14px'><tr style='background-color:#EEE9E9; height:25px'>" +
                                 "<td width=40px>N.Documento</td><td width=40px>Fornecedor</td>" +
                                 "<td width=40px>Responsável</td><td width=40px>Data fim da vigência</td>" +
                                 "<td width=*>&nbsp;</td></tr>";
            string vBodyMeio = "<tr style='height:25px'><td width=40px>{0}</td><td width=40px>{1}</td>" +
                               "<td width=40px>{2}</td><td width=40px>{3}</td><td width=*><a href='{4}'>Ver contrato</a></td></tr>";
            string vBodyFim = "</table>";
            string vBody    = string.Empty;

            #region ============ Gera lista de Contratos onde a Data de Notificação do Fim de vigência é hoje, caso o alerta de email esteja ativado ============

            ListaResultContrato = new List <mdContrato>();
            mdContrato itemContrato = null;

            var queryContratos = (from lstContratos in dc.Contratos
                                  where lstContratos.SituaçãoValue.Equals("Ativo") &&
                                  lstContratos.AlertaDeEmail == true &&
                                  lstContratos.DataNotifVigencia.Equals(DateTime.Today)
                                  select new
            {
                NumDocto = lstContratos.NúmeroDoDocumento,
                Fornecedor = lstContratos.Fornecedor,
                Responsavel = lstContratos.Responsável,
                ContatoB2W = lstContratos.ContatoB2W,
                VigenciaFim = lstContratos.VigênciaFim,
                ID = lstContratos.ID
            });

            foreach (var itemQuery in queryContratos)
            {
                itemContrato = new mdContrato();

                itemContrato.NumDocto     = itemQuery.NumDocto.ToString();
                itemContrato.Fornecedor   = itemQuery.Fornecedor.NomeFantasia.ToString();
                itemContrato.Responsavel  = itemQuery.Responsavel.Email.ToString();
                itemContrato.ContatoB2W   = itemQuery.ContatoB2W.Email.ToString();
                itemContrato.VigenciaFim  = itemQuery.VigenciaFim.Value.ToString("d/MM/yyy");
                itemContrato.LinkContrato = itemConfig.siteContratos + itemConfig.linkContratoView + "?ID=" + itemQuery.ID;

                ListaResultContrato.Add(itemContrato);
            }
            #endregion


            #region ============ Envia email para Responsável e Contato B2W de cada contrato ============

            if (ListaResultContrato.Count > 0)
            {
                bool emailSent;

                //Monta mensagem com contratos
                foreach (var itemContratos in ListaResultContrato)
                {
                    pMsgErroMail = string.Empty;

                    vBody = vBodyInicio +
                            String.Format(vBodyMeio, itemContratos.NumDocto, itemContratos.Fornecedor, itemContratos.Responsavel, itemContratos.VigenciaFim, itemContratos.LinkContrato) +
                            vBodyFim;

                    emailSent = SendMail(vSubject, vBody, itemContratos.Responsavel, itemContratos.ContatoB2W, null);

                    mdHistoricoEnvioEmail itemHistorico = new mdHistoricoEnvioEmail();

                    itemHistorico.Origem = "GestaoContratos";
                    itemHistorico.Para   = itemContratos.Responsavel + "; " + itemContratos.ContatoB2W;
                    itemHistorico.Data   = DateTime.Now.ToString("d/MM/yyy HH:mm");

                    if (emailSent)
                    {
                        itemHistorico.Status   = "Sucesso";
                        itemHistorico.Mensagem = "Aviso de Fim de Vigência - E-mail enviado com sucesso!";
                    }
                    else
                    {
                        itemHistorico.Status   = "Erro";
                        itemHistorico.Mensagem = "Aviso de Fim de Vigência - E-mail não enviado devido a falha: " + pMsgErroMail;
                    }

                    ListaResultHistorico.Add(itemHistorico);
                }
            }
            else
            {
                mdHistoricoEnvioEmail itemHistorico = new mdHistoricoEnvioEmail();

                itemHistorico.Origem = "GestaoContratos";
                itemHistorico.Para   = string.Empty;
                itemHistorico.Data   = DateTime.Now.ToString("d/MM/yyy HH:mm");

                itemHistorico.Status   = "Sucesso";
                itemHistorico.Mensagem = "Aviso de Fim de Vigência - Não possui contratos nas condições ou usuários cadastrados. (" + ListaResultContrato.Count + " contrato(s))";

                ListaResultHistorico.Add(itemHistorico);
            }

            #endregion


            #region ============ Envia email para Grupo de email ============

            vBody = string.Empty;

            if (ListaResultContrato.Count > 0)
            {
                bool emailSent;

                //Monta mensagem com contratos
                vBody = vBodyInicio;

                foreach (var itemContratos in ListaResultContrato)
                {
                    vBody += String.Format(vBodyMeio, itemContratos.NumDocto, itemContratos.Fornecedor, itemContratos.Responsavel, itemContratos.VigenciaFim, itemContratos.LinkContrato);
                }

                vBody += vBodyFim;

                //Monta lista com emails
                var queryEmail = from email in dc.GrupoEmail
                                 where email.Acesso.Equals("ContratosFimVigencia")
                                 select new
                {
                    pEmail = email.Usuários
                };

                foreach (var itemMail in queryEmail)
                {
                    for (int x = 0; x < itemMail.pEmail.Count; x++)
                    {
                        pMsgErroMail = string.Empty;

                        emailSent = SendMail(vSubject, vBody, itemMail.pEmail[x].Email.ToString(), null, null);

                        mdHistoricoEnvioEmail itemHistorico = new mdHistoricoEnvioEmail();

                        itemHistorico.Origem = "GestaoContratos";
                        itemHistorico.Para   = itemMail.pEmail[x].Email.ToString();
                        itemHistorico.Data   = DateTime.Now.ToString("d/MM/yyy HH:mm");

                        if (emailSent)
                        {
                            itemHistorico.Status   = "Sucesso";
                            itemHistorico.Mensagem = "Aviso de Fim de Vigência- E-mail enviado com sucesso!";
                        }
                        else
                        {
                            itemHistorico.Status   = "Erro";
                            itemHistorico.Mensagem = "Aviso de Fim de Vigência - E-mail não enviado devido a falha: " + pMsgErroMail;
                        }

                        ListaResultHistorico.Add(itemHistorico);
                    }
                }
            }
            else
            {
                mdHistoricoEnvioEmail itemHistorico = new mdHistoricoEnvioEmail();

                itemHistorico.Origem = "GestaoContratos";
                itemHistorico.Para   = string.Empty;
                itemHistorico.Data   = DateTime.Now.ToString("d/MM/yyy HH:mm");

                itemHistorico.Status   = "Sucesso";
                itemHistorico.Mensagem = "Aviso de Fim de Vigência- Não possui contratos nas condições ou usuários cadastrados. (" + ListaResultContrato.Count + " contrato(s))";

                ListaResultHistorico.Add(itemHistorico);
            }

            #endregion


            GravaHistoricoEmailEnviado();
        }