public void InserirLogEnvio(LogEnvio log)
        {
            using (var con = DapperConnection.ConTeste)
            {
                string sql = @"INSERT INTO LogEnviosEspeciais
                                           ( IdProduto
                                           , Login
                                           , Email
                                           , Nome
                                           , Status
                                           , Observacao
                                           , DataFimTeste
                                           , DataHoraRegistro
                                           , IDMensagemAPI)
                                     VALUES
                                           (@IdProduto,
                                            @Login,
                                            @Email,
                                            @Nome,
                                            @Status,
                                            @Observacao,
                                            @DataFimTeste,
                                            @DataHoraRegistro,
                                            @IDMensagemAPI)
                                     SELECT CAST(SCOPE_IDENTITY() as int)";

                log.IdLogEnvio = con.Query <int>(sql, log).Single();
            }
        }
        public void EnvioAndamentoMeridioQdtPublicacoesNaoCapturadas()
        {
            string   textoEmail = string.Empty;
            LogEnvio log        = new LogEnvio
            {
                Login            = "******",
                Email            = "[email protected];[email protected];[email protected]",
                Nome             = "Kurier - Andamento",
                DataFimTeste     = DateTime.Now,
                DataHoraRegistro = DateTime.Now,
            };

            try
            {
                if (!VerificarEnvio("Andamento.Meridio", (int)ProdutoEnvio.ANDAMENTO))
                {
                    Cliente cliente = new Cliente
                    {
                        EmailDestinatario = "[email protected];[email protected];[email protected];[email protected]",
                        Assunto           = $"k-Andamento, Quantidade de andamentos NÃO capturados no dia {DateTime.Now.ToShortDateString()}"
                    };
                    var publicacoes = _andamentoRepository.AndamentoMeridioQdtPublicacoesNaoCapturadas().ToList();

                    if (publicacoes.Count > 0)
                    {
                        foreach (var pub in publicacoes)
                        {
                            textoEmail += "<tr>";
                            textoEmail += $"<td><font size=2><b>{pub.IDCliente}</b></font></td>";
                            textoEmail += $"<td><font size=2>{pub.Login}</font></td>";
                            textoEmail += $"<td><font size=2>{pub.Nome}</font></td>";
                            textoEmail += $"<td><font size=2>{pub.QtdPublicacao}</font></td>";
                            textoEmail += $"</tr>";
                        }
                    }

                    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

                    htmlDoc.LoadHtml(Resource.EmailAndamentoMeridioQdtPublicacoesNaoCapturadas);

                    htmlDoc.DocumentNode.SelectSingleNode("//span[@id='textoEmail']").InnerHtml = textoEmail;


                    cliente.CorpoMensagem = htmlDoc.DocumentNode.OuterHtml;

                    SendGrid obj         = new SendGrid();
                    var      responseApi = obj.Sender(cliente, (int)ProdutoEnvio.ANDAMENTO);
                    if (responseApi.Result != null)
                    {
                        ResponseSendGrid responseSendGrid = JsonConvert.DeserializeObject <ResponseSendGrid>(responseApi.Result);
                        if (responseSendGrid.Success)
                        {
                            var IdMensagem = responseSendGrid.IdMensagem;

                            log.IDMensagemAPI = IdMensagem;
                            log.Status        = StatusLog.ENVIADO.ToString();
                            log.IdProduto     = (int)ProdutoEnvio.ANDAMENTO;

                            _logEnvioRepository.InserirLogEnvio(log);

                            WriteLine($"*** ENVIO CLIENTE: {log.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                        }
                        else
                        {
                            log.Status     = StatusLog.ERRO.ToString();
                            log.Observacao = responseSendGrid.ErrorMsg;
                            _logEnvioRepository.InserirLogEnvio(log);
                            WriteLine($"*** CLIENTE NÃO ENVIADO: {log.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                        }
                    }
                    else
                    {
                        log.Status     = StatusLog.ERRO.ToString();
                        log.Observacao = "Erro na API";
                        _logEnvioRepository.InserirLogEnvio(log);
                        WriteLine($"*** CLIENTE NÃO ENVIADO: {log.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                    }
                }
            }
            catch (Exception ex)
            {
                log.Status     = StatusLog.ERRO.ToString();
                log.Observacao = ex.ToString();
                _logEnvioRepository.InserirLogEnvio(log);
                WriteLine($"*** CLIENTE NÃO ENVIADO: {log.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
            }
        }
        public void EnvioJuridicoSituacaoPendente(Cliente cliente)
        {
            if (!VerificarEnvio(cliente.Login, (int)ProdutoEnvio.JURIDICO))
            {
                LogEnvio log = new LogEnvio
                {
                    Login            = cliente.Login,
                    Email            = cliente.EmailDestinatario,
                    Nome             = cliente.Nome,
                    DataFimTeste     = cliente.DataFimTeste,
                    DataHoraRegistro = DateTime.Now,
                };

                try
                {
                    HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();

                    htmlDoc.LoadHtml(Resource.EmailDistribuicaoSituacaoPendente);

                    htmlDoc.DocumentNode.SelectSingleNode("//span[@id='Nome']").InnerHtml         = cliente.Nome;
                    htmlDoc.DocumentNode.SelectSingleNode("//span[@id='DataFimTeste']").InnerHtml = cliente.DataFimTeste.ToShortDateString();

                    cliente.CorpoMensagem = htmlDoc.DocumentNode.OuterHtml;

                    SendGrid obj         = new SendGrid();
                    var      responseApi = obj.Sender(cliente, (int)ProdutoEnvio.JURIDICO);
                    if (responseApi.Result != null)
                    {
                        ResponseSendGrid responseSendGrid = JsonConvert.DeserializeObject <ResponseSendGrid>(responseApi.Result);
                        if (responseSendGrid.Success)
                        {
                            var IdMensagem = responseSendGrid.IdMensagem;

                            log.IDMensagemAPI = IdMensagem;
                            log.Status        = StatusLog.ENVIADO.ToString();
                            log.IdProduto     = (int)ProdutoEnvio.JURIDICO;

                            _juridicoRepository.AtualizarClienteSituacaoPendente(cliente);

                            _logEnvioRepository.InserirLogEnvio(log);

                            WriteLine($"*** ENVIO CLIENTE: {cliente.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                        }
                        else
                        {
                            log.Status     = StatusLog.ERRO.ToString();
                            log.Observacao = responseSendGrid.ErrorMsg;
                            _logEnvioRepository.InserirLogEnvio(log);
                            WriteLine($"*** CLIENTE NÃO ENVIADO: {cliente.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                        }
                    }
                    else
                    {
                        log.Status     = StatusLog.ERRO.ToString();
                        log.Observacao = "Erro na API";
                        _logEnvioRepository.InserirLogEnvio(log);
                        WriteLine($"*** CLIENTE NÃO ENVIADO: {cliente.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                    }
                }
                catch (Exception ex)
                {
                    log.Status     = StatusLog.ERRO.ToString();
                    log.Observacao = ex.ToString();
                    _logEnvioRepository.InserirLogEnvio(log);
                    WriteLine($"*** CLIENTE NÃO ENVIADO: {cliente.Nome} Data: {DateTime.Now.ToLongTimeString()} ***");
                }
            }
        }