public ICollection <Email> RealizarProcessamentoGerarEmails(IFormatadorEmailServiceFactory formatadorFactory) { if (StatusProcessamentoEtapa != EStatusProcessamentoEtapa.Processando) { throw new CustomException("O processamento de uma etapa só pode ocorrer quando o status for igual a 'Processando'."); } try { IFormatadorEmailService formatador = ObterFomatadorEmail(formatadorFactory); ICollection <Email> emails = new List <Email>(); if (formatador != null) { emails = formatador.FormatarEmails().SelectMany(e => e.DividirDestinatarios()).ToList(); } FinalizarProcessamento(EStatusProcessamentoEtapa.ProcessadoComSucesso); return(emails); } catch (Exception e) { var mensagem = $"Erro ao processar mudança de etapa/envio de e-mail. Contate o suporte.\r\n{e.Message}"; FinalizarProcessamento(EStatusProcessamentoEtapa.ErroProcessamento, mensagem); return(new List <Email>()); } }
private void EnviarNotificacaoMudancaEtapa(IFormatadorEmailService formatador, Eleicao eleicao) { foreach (var email in formatador.FormatarEmails()) { _unitOfWork.EmailRepository.Adicionar(email); } }