public Email AdicionarEmailEntradaServico(ConfiguracaoContasEmails configuracaoContaEmail, Email emailPai, IEnumerable <AtividadeParteEnvolvida> partesEnvolvidas, IEnumerable <EmailAnexo> anexos, string endereco, string assunto, string html, string texto, string uIdEmail, string messageId, DateTime criadoEm, string nomeCliente, string identificadorEmail) { var retorno = new Email(); var gerarProtocolo = configuracaoContaEmail.Fila.GerarProtocoloNaEntradaDeEmail ?? false; var criadoPorUserId = ""; long? atendimentoId = null; string protocolo = null; var usuarioAdm = _usuarioServico.ObterPorEmail("*****@*****.**"); if (usuarioAdm != null) { criadoPorUserId = usuarioAdm.Id; } else { retorno.ValidationResult.Add( new ValidationError( "Não foi informado o usuario (Criado Por) e também não possui usuario padrão cadastrado ([email protected])")); return(retorno); } if (gerarProtocolo) { var atendimento = _atendimentoServico.AdicionarNovoAtendimento(null, criadoPorUserId, null); if (!atendimento.ValidationResult.IsValid) { retorno.ValidationResult = atendimento.ValidationResult; return(retorno); } atendimentoId = atendimento.Id; protocolo = atendimento.Protocolo; } if (emailPai == null) { emailPai = new Email(); } if (emailPai.Atividade == null) { emailPai.Atividade = new Atividade(); } retorno = AdicionarEmail(criadoPorUserId, emailPai.Atividade.ResponsavelPorUserId, criadoEm, emailPai.Atividade.OcorrenciaId, emailPai.Atividade.ContratoId, atendimentoId, emailPai.Atividade.PessoasFisicasId, emailPai.Atividade.PessoasJuridicasId, emailPai.Atividade.PotenciaisClientesId, emailPai.Atividade.Id, assunto, string.Format("E-mail importado pelo serviço em {0}", DateTime.Now), endereco, html, texto, messageId, uIdEmail, "E", assunto, emailPai.Id > 0 ? emailPai.Id : (long?)null, configuracaoContaEmail.Id, (int)configuracaoContaEmail.FilasId, partesEnvolvidas, anexos, null, identificadorEmail); if (!retorno.ValidationResult.IsValid) { return(retorno); } var enviarEmailResposta = configuracaoContaEmail.Fila.EnviarEmailComProtocoloGerado ?? false; if (!enviarEmailResposta) { return(retorno); } if (!configuracaoContaEmail.Fila.EmailModeloEnvioProtocoloEmailsModeloId.HasValue) { return(retorno); } var htmlModelo = _emailModelServico.ObterPorId( (int)configuracaoContaEmail.Fila.EmailModeloEnvioProtocoloEmailsModeloId); if (htmlModelo == null) { return(retorno); } html = htmlModelo.Html.Replace("[PROTOCOLO]", protocolo); html = html.Replace("[NOME_CLIENTE]", !string.IsNullOrEmpty(nomeCliente) ? nomeCliente : ""); var partesEnvolvidasResposta = (from envolvido in partesEnvolvidas where envolvido.TipoParteEnvolvida == TipoParteEnvolvida.Remetente.Value select new AtividadeParteEnvolvida(envolvido.Email, envolvido.Nome, TipoParteEnvolvida.Destinatario.Value)) .ToList(); if (configuracaoContaEmail.Fila.ContaParaDisparoDeEmailConfiguracaoContasEmailsId.HasValue) { var contaDisparo = _configuracaoContaEmailServico.ObterPorId( (int)configuracaoContaEmail.Fila.ContaParaDisparoDeEmailConfiguracaoContasEmailsId); if (contaDisparo != null) { if (contaDisparo.Id > 0) { partesEnvolvidasResposta.Add(new AtividadeParteEnvolvida(contaDisparo.Email, contaDisparo.Descricao, TipoParteEnvolvida.Remetente.Value)); } } } else { partesEnvolvidasResposta.Add(new AtividadeParteEnvolvida(configuracaoContaEmail.Email, configuracaoContaEmail.Descricao, TipoParteEnvolvida.Remetente.Value)); } var filaEnvioEmailComum = _filaServico.ObterFilasPorNome("ENVIO_EMAIL_COMUM"); long?respostaFilaId = null; if (filaEnvioEmailComum.Any()) { respostaFilaId = filaEnvioEmailComum.FirstOrDefault().Id; } var retornoResposta = AdicionarEmail(criadoPorUserId, null, null, null, null, atendimentoId, emailPai.Atividade.PessoasFisicasId, emailPai.Atividade.PessoasJuridicasId, emailPai.Atividade.PotenciaisClientesId, null, "Resposta Automatica", string.Format("E-mail respondido pelo serviço em {0}", DateTime.Now), endereco, html, null, null, null, "S", "Resposta Automática", null, configuracaoContaEmail.Id, respostaFilaId.HasValue ? (int)respostaFilaId : (int)configuracaoContaEmail.FilasId, partesEnvolvidasResposta, new List <EmailAnexo>(), null, identificadorEmail); return(retorno); }