示例#1
0
        public static void Enviar(TB_DIV_CHAMADO chamado, OperacaoEmail operacao)
        {
            Conexao.Reiniciar();
            chamado = Conexao.Banco.TB_DIV_CHAMADOs.FirstOrDefault(a => a.ID_CHAMADO == chamado.ID_CHAMADO);
            var emailDestino = Conexao.Banco.TB_DIV_USUARIOs.Where(a => a.LOGIN == chamado.LOGIN_SOLICITANTE || a.LOGIN == chamado.LOGIN_ATENDENTE).Select(a => a.EMAIL).ToList().Where(a => a.Treat().Trim().Length > 0).ToList();

            var configuracoes = Conexao.Banco.TB_DIV_CONFIG_EMAILs.FirstOrDefault();

            if (configuracoes == null || configuracoes == new TB_DIV_CONFIG_EMAIL() || (configuracoes.ST_ENVIAR ?? "N").Trim().ToUpper() == "N" || emailDestino == null || emailDestino.Count == 0)
            {
                return;
            }

            var titulo = "SGC: ";

            switch (operacao)
            {
            case OperacaoEmail.Envio: titulo += "(lançamento)"; break;

            case OperacaoEmail.Atendimento: titulo += "(atendimento)"; break;

            case OperacaoEmail.Evolucao: titulo += "(evolução)"; break;

            case OperacaoEmail.Finalizacao: titulo += "(finalização)"; break;
            }

            titulo += " | " + String.Format("#{0} - {1}", chamado.ID_CHAMADO, chamado.DS_RESUMO.Treat());

            var dt_Chamado     = chamado.DT_CHAMADO.ToString("dd/MM/yyyy HH:mm");
            var dt_Atendimento = chamado.DT_ATENDIMENTO.GetValueOrDefault().ToString("dd/MM/yyyy HH:mm");
            var dt_Finalizado  = chamado.DT_FINALIZADO.GetValueOrDefault().ToString("dd/MM/yyyy HH:mm");

            var existeEventos = chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).Count() > 0;

            var dt_UltimaEvolucao = existeEventos ? chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).FirstOrDefault().DT_EVENTO.GetValueOrDefault().ToString("dd/MM/yyyy HH:mm") : "";
            var nm_Atendente      = chamado.LOGIN_ATENDENTE != null?Conexao.Banco.TB_DIV_USUARIOs.FirstOrDefault(a => a.LOGIN == chamado.LOGIN_ATENDENTE).NM_USUARIO.Treat() : "";

            var nm_Solicitante = chamado.LOGIN_SOLICITANTE != null?Conexao.Banco.TB_DIV_USUARIOs.FirstOrDefault(a => a.LOGIN == chamado.LOGIN_SOLICITANTE).NM_USUARIO.Treat() : "";

            var nm_Finalizador  = existeEventos ? chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).FirstOrDefault().LOGIN_FINALIZADOR.Treat() : "";
            var ds_UltimoEvento = existeEventos ? chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).FirstOrDefault().DS_EVENTO.Treat() : "";

            var corpo = new StringBuilder().AppendFormat("O chamado <b>#{0}</b> foi ", chamado.ID_CHAMADO);

            if (operacao == OperacaoEmail.Envio)
            {
                corpo.AppendLine(String.Format("lançado {0}pelo usuário <b>{1}</b> (<b>{2}</b>) na data <b>{3}</b>!", (chamado.LOGIN_ATENDENTE != null ? ("para o usuário <b>" + chamado.LOGIN_ATENDENTE + "</b> (<b>" + nm_Atendente + "</b>) ") : " "), chamado.LOGIN_SOLICITANTE, nm_Solicitante, dt_Chamado));

                var ds_Chamado = chamado.DS_CHAMADO.Treat();

                if (ds_Chamado.Length > 0)
                {
                    corpo.AppendLine("<br>Segue a descrição: " + ds_Chamado);
                }
            }
            else if (operacao == OperacaoEmail.Atendimento)
            {
                corpo.AppendLine(String.Format("atendido pelo usuário <b>{0}</b> (<b>{1}</b>) na data <b>{2}</b>!", chamado.LOGIN_ATENDENTE, nm_Atendente, dt_Atendimento));

                if (ds_UltimoEvento.Length > 0)
                {
                    corpo.AppendLine("<br>Segue o adendo do atendente: " + ds_UltimoEvento);
                }
            }
            else if (operacao == OperacaoEmail.Evolucao)
            {
                corpo.AppendLine(String.Format("evoluido pelo usuário <b>{0}</b> (<b>{1}</b>) na data <b>{2}</b>!", chamado.LOGIN_ATENDENTE, nm_Atendente, dt_UltimaEvolucao));

                if (ds_UltimoEvento.Length > 0)
                {
                    corpo.AppendLine("<br>Segue a observação: " + ds_UltimoEvento);
                }
            }
            else if (operacao == OperacaoEmail.Finalizacao)
            {
                corpo.AppendLine(String.Format("finalizado pelo usuário <b>{0}</b> (<b>{1}</b>) na data <b>{2}</b>!", chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).FirstOrDefault().LOGIN_FINALIZADOR, nm_Finalizador, dt_Finalizado));

                var ds_Sugestao = chamado.DS_SUGESTAO.Treat();
                if (ds_Sugestao.Length > 0)
                {
                    corpo.AppendLine("<br>Segue a ultima nota/sugestão: " + ds_Sugestao);
                }
            }

            corpo.AppendLine("<br><br><b>----<br><b>Lembrete!</b><br>Não responda este e-mail, pois toda a comunicação será através do sistema de chamados SGC!");

            var email = new MailMessage(configuracoes.LOGIN.Treat(), emailDestino.First())
            {
                Subject    = titulo,
                Body       = corpo.ToString(),
                IsBodyHtml = true
            };

            emailDestino.Remove(emailDestino.First());

            if (emailDestino.Count > 0)
            {
                foreach (var destinatario in emailDestino)
                {
                    email.CC.Add(destinatario);
                }
            }

            bool tryAgain = true;

            while (tryAgain)
            {
                try
                {
                    tryAgain = false;
                    new SmtpClient(configuracoes.SMTP.Treat(), configuracoes.PORTA.GetValueOrDefault())
                    {
                        UseDefaultCredentials = false,
                        Credentials           = new NetworkCredential(configuracoes.LOGIN.Treat(), configuracoes.SENHA ?? ""),
                        EnableSsl             = configuracoes.SSL.Treat() == "S"
                    }.Send(email);
                }
                catch
                {
                    tryAgain = MessageBox.Show("Ocorreu um erro ao tentar enviar o email informativo sobre o chamado!\nDeseja tentar enviar novamente?", "Atenção!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes;
                }
            }
        }
示例#2
0
        }                                     // Informativo para o grid.


        public E_CHAMADO(TB_DIV_CHAMADO chamado = null)
        {
            OPERACAO = Operacao.Normal;

            if (chamado != null)
            {
                ID_CHAMADO        = chamado.ID_CHAMADO;
                LOGIN_SOLICITANTE = chamado.LOGIN_SOLICITANTE.Treat();
                LOGIN_ATENDENTE   = chamado.LOGIN_ATENDENTE.Treat();

                CATEGORIA = chamado.TB_DIV_CATEGORIA != null?String.Format("{0} - {1}", chamado.TB_DIV_CATEGORIA.ID_CATEGORIA, chamado.TB_DIV_CATEGORIA.DS_CATEGORIA.Treat()) : "";

                GRAVIDADE = chamado.TB_DIV_CATEGORIA != null ? (chamado.TB_DIV_CATEGORIA.GRAVIDADE == "1" ? "ALTA" : (chamado.TB_DIV_CATEGORIA.GRAVIDADE == "2" ? "MÉDIA" : (chamado.TB_DIV_CATEGORIA.GRAVIDADE == "3" ? "BAIXA" : ""))) : "";

                DEPARTAMENTO = chamado.TB_DIV_DEPARTAMENTO != null?String.Format("{0} - {1}", chamado.TB_DIV_DEPARTAMENTO.ID_DEPARTAMENTO, chamado.TB_DIV_DEPARTAMENTO.DS_DEPARTAMENTO.Treat()) : "";

                if (LOGIN_SOLICITANTE.Length > 0)
                {
                    var departamento = Conexao.Banco.TB_DIV_USUARIOs.First(a => a.LOGIN == chamado.LOGIN_SOLICITANTE).TB_DIV_DEPARTAMENTO;

                    if (departamento != null)
                    {
                        DEPARTAMENTO_SOLICITANTE = String.Format("{0} - {1}", departamento.ID_DEPARTAMENTO, departamento.DS_DEPARTAMENTO.Treat());
                    }
                }

                DS_CHAMADO       = chamado.DS_CHAMADO.Treat();
                DS_OBSERVACAO    = chamado.DS_OBSERVACAO.Treat();
                DS_SOLUCAO       = chamado.DS_SOLUCAO.Treat();
                DS_RESUMO        = chamado.DS_RESUMO.Treat();
                ESTIMATIVA_TEMPO = chamado.ESTIMATIVA_TEMPO ?? 0;
                PRIORIDADE       = new E_PRIORIDADE(chamado.PRIORIDADE);

                ST_CHAMADO = chamado.ST_CHAMADO.Treat();
                switch (ST_CHAMADO)
                {
                case "A": ST_CHAMADO = "ABERTO"; break;

                case "F": ST_CHAMADO = "FECHADO"; break;
                }

                if (chamado.TB_DIV_EVENTOs != null && chamado.TB_DIV_EVENTOs.Count > 0)
                {
                    var evolucao = chamado.TB_DIV_EVENTOs.OrderBy(a => a.ID_EVENTO).LastOrDefault().TB_DIV_STATUS;

                    if (evolucao != null)
                    {
                        EVOLUCAO       = String.Format("{0} - {1}", evolucao.SIGLA_STATUS, evolucao.DS_STATUS);
                        ST_SOLICITANTE = evolucao.ST_SOLICITANTE.Treat();

                        switch (ST_SOLICITANTE)
                        {
                        case "S": ST_SOLICITANTE = "SIM"; break;

                        case "N": ST_SOLICITANTE = "NÃO"; break;
                        }
                    }
                }

                DT_CHAMADO     = chamado.DT_CHAMADO;
                DT_PREVISTA    = chamado.DT_PREVISTA;
                DT_FINALIZADO  = chamado.DT_FINALIZADO;
                DT_ATENDIMENTO = chamado.DT_ATENDIMENTO;
                DT_REQUERIDA   = chamado.DT_REQUERIDO;

                if (chamado.TB_DIV_EVENTOs != null && chamado.TB_DIV_EVENTOs.Count > 0)
                {
                    DT_ULTIMAEVOLUCAO = chamado.TB_DIV_EVENTOs.OrderByDescending(a => a.ID_EVENTO).First().DT_EVENTO.GetValueOrDefault();
                }

                ANEXOS = new List <E_ANEXO>();
                chamado.TB_DIV_ANEXO_X_CHAMADOs.Select(a => a.TB_DIV_ANEXO).ToList().ForEach(a =>
                {
                    ANEXOS.Add(new E_ANEXO
                    {
                        ID_ANEXO = a.ID_ANEXO,
                        EXTENSAO = a.EXTENSAO,
                        ANEXO    = a.ANEXO,
                        NM_ANEXO = a.NM_ANEXO
                    });
                });
            }
        }