private async void EnviarParaContabilidadeCmd_Execute(Window window) { var periodo = DateTime.ParseExact(Ano + Mes, "yyyyMM", CultureInfo.InvariantCulture); string path = await _geradorZip.GerarZipEnvioContabilidadeAsync(periodo); if (!string.IsNullOrWhiteSpace(path)) { MessageBox.Show("Arquivos gerados com sucesso!", "Sucesso!", MessageBoxButton.OK, MessageBoxImage.Information); } else { MessageBox.Show("Houve um erro ao tentar gerar os arquivos para envio. Tente novamente e, se o erro persistir, contate o suporte.", "Erro!", MessageBoxButton.OK, MessageBoxImage.Information); } window.Close(); }
public Task EnviarNotasParaContabilidade(int diaParaEnvio) { return(Task.Run(async() => { var historicoPeriodoCount = await _historicoEnvioContabilidadeRepository.GetHistoricoByPeriodoAsync(DateTime.Now.AddMonths(-1)); if (DateTime.Now.Day >= diaParaEnvio && historicoPeriodoCount == 0) { var periodo = DateTime.Now.AddMonths(-1); var periodoStr = periodo.ToString("MM/yyyy"); var path = await _geradorZip.GerarZipEnvioContabilidadeAsync(periodo); if (string.IsNullOrWhiteSpace(path)) { throw new Exception("Ocorreu um erro ao gerar os arquivos das notas fiscais!"); } try { var emissor = _emitenteRepository.GetEmitente(); string fromAccount = ConfigurationManager.AppSettings["fromMailAccount"]; string fromMail = ConfigurationManager.AppSettings["fromMailName"]; var fromAddress = new MailAddress(fromAccount, fromMail); var toAddress = new MailAddress(ConfigurationManager.AppSettings["toMailAccount"], ConfigurationManager.AppSettings["toMailName"]); string fromPassword = ConfigurationManager.AppSettings["fromMailPassword"]; var subject = string.Concat("Notas Fiscais " + periodoStr, " - ", emissor.RazaoSocial, " - ", emissor.CNPJ); const string body = "Notas fiscais em anexo a esse e-mail. \n\nEsta é uma mensagem automática."; var smtp = new SmtpClient { Host = "smtp.outlook.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) }; var data = new Attachment(path, MediaTypeNames.Application.Octet); using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { message.Attachments.Add(data); smtp.Send(message); } _historicoEnvioContabilidadeRepository.Salvar(new HistoricoEnvioContabilidade { DataEnvio = DateTime.Now, Periodo = periodoStr }); } catch (Exception e) { log.Error(e); if (e.GetType() == typeof(SmtpException)) { throw new Exception( "Não foi possível enviar o e-mail para a contabilidade, verifique sua conexão com a internet.", e); } if (!_hasAlreadyTried) { await EnviarNotasParaContabilidade(diaParaEnvio); } else { historicoPeriodoCount = await _historicoEnvioContabilidadeRepository.GetHistoricoByPeriodoAsync( DateTime.Now.AddMonths(-1)); if (historicoPeriodoCount == 0) { throw new Exception("Ocorreu um erro ao tentar enviar as notas para a contabilidade."); } } _hasAlreadyTried = true; } } })); }