Пример #1
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            var xml = this.CarregarMensagem <Pollux.MSG0267>(mensagem);

            List <Intelbras.Message.Helper.Entities.ProjetoItem> lstProjetoItem = new List <Pollux.Entities.ProjetoItem>();

            if (string.IsNullOrEmpty(xml.CodigoRevenda) && string.IsNullOrEmpty(xml.CodigoDistribuidor) && string.IsNullOrEmpty(xml.CodigoExecutivo) && string.IsNullOrEmpty(xml.CNPJCliente) && (!xml.SituacaoProjeto.HasValue))
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "É necessário informar ao menos 1 critério de busca para a consulta.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0267R1>(numeroMensagem, retorno));
            }

            string cnpjCliente = "";

            if (!String.IsNullOrEmpty(xml.CNPJCliente))
            {
                cnpjCliente = Servicos.Helper.FormatarCnpj(xml.CNPJCliente);
            }
            else
            {
                cnpjCliente = "";
            }

            List <ClientePotencial> lstProjetos = new Servicos.LeadService(this.Organizacao, this.IsOffline).ListarProjetosPor(xml.CodigoRevenda, xml.CodigoDistribuidor, xml.CodigoExecutivo, cnpjCliente, xml.SituacaoProjeto, xml.CodigoSegmento, xml.CodigoUnidadeNegocio);

            #region Lista

            if (lstProjetos != null && lstProjetos.Count > 0)
            {
                foreach (ClientePotencial crmItem in lstProjetos)
                {
                    Pollux.Entities.ProjetoItem objPollux = new Pollux.Entities.ProjetoItem();

                    Oportunidade Oportunidade = new Servicos.RepositoryService().Oportunidade.BuscarPor(crmItem);

                    objPollux.NumeroProjeto = crmItem.NumeroProjeto;

                    if (Oportunidade != null)
                    {
                        objPollux.ClassificacaoProjeto = 993520001;
                    }
                    else
                    {
                        objPollux.ClassificacaoProjeto = 993520000;
                    }

                    objPollux.CodigoClientePotencial = crmItem.ID.Value.ToString();

                    if (Oportunidade != null)
                    {
                        objPollux.CodigoOportunidade = Oportunidade.ID.Value.ToString();
                        objPollux.SituacaoProjeto    = ObterRazaoStatusOportunidade(Oportunidade);
                    }
                    else
                    {
                        objPollux.SituacaoProjeto = ObterRazaoStatusClientePotencial(crmItem);
                    }

                    if (crmItem.RevendaIntegrador != null)
                    {
                        objPollux.CodigoRevenda = crmItem.RevendaIntegrador.Id.ToString();
                        objPollux.NomeRevenda   = crmItem.RevendaIntegrador.Name;
                    }
                    else
                    {
                        objPollux.CodigoRevenda = string.Empty;
                        objPollux.NomeRevenda   = string.Empty;
                    }

                    if (crmItem.Distribuidor != null)
                    {
                        objPollux.CodigoDistribuidor = crmItem.Distribuidor.Id.ToString();
                        objPollux.NomeDistribuidor   = crmItem.Distribuidor.Name;
                    }

                    if (crmItem.Executivo != null)
                    {
                        objPollux.CodigoExecutivo = crmItem.Executivo.Id.ToString();
                        objPollux.NomeExecutivo   = crmItem.Executivo.Name;
                    }

                    objPollux.CNPJCliente = crmItem.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    objPollux.RazaoSocial = crmItem.NomeDaEmpresa;
                    if (crmItem.ValorEstimado.HasValue)
                    {
                        objPollux.ReceitaEstimada = crmItem.ValorEstimado;
                    }
                    else
                    {
                        objPollux.ReceitaEstimada = 0;
                    }
                    if (crmItem.DataEstimada != null)
                    {
                        objPollux.DataPrevisaoFechamento = crmItem.DataEstimada.ToLocalTime();
                    }
                    else
                    {
                        objPollux.DataPrevisaoFechamento = null;
                    }

                    if (crmItem.UnidadeNegocio != null)
                    {
                        UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(crmItem.UnidadeNegocio.Id);
                        if (unidadeNegocio != null)
                        {
                            objPollux.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                            objPollux.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                        }
                    }
                    if (crmItem.DataCriacao != null)
                    {
                        objPollux.DataCadastro = crmItem.DataCriacao.ToLocalTime();
                    }
                    else
                    {
                        objPollux.DataCadastro = null;
                    }

                    lstProjetoItem.Add(objPollux);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Não foram encontrados registros que satisfaçam os critérios de pesquisa.";
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0267R1>(numeroMensagem, retorno));
            }

            #endregion

            retorno.Add("ProjetosItens", lstProjetoItem);
            retorno.Add("Resultado", resultadoPersistencia);
            return(CriarMensagemRetorno <Pollux.MSG0267R1>(numeroMensagem, retorno));
        }
Пример #2
0
        public ClientePotencial DefinirPropriedades(Intelbras.Message.Helper.MSG0268 xml)
        {
            var crm = new Model.ClientePotencial(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml

            crm.IntegrarNoPlugin = true;

            if (!String.IsNullOrEmpty(xml.NumeroProjeto))
            {
                ClientePotencial cliente = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto);
                if (cliente != null)
                {
                    crm.NumeroProjeto   = xml.NumeroProjeto;
                    crm.StatusValidacao = cliente.StatusValidacao;
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "NumeroProjeto informado não existe para ser atualizado.";
                    return(crm);
                }
            }

            if (!String.IsNullOrEmpty(xml.CodigoClientePotencial))
            {
                crm.ID = new Guid(xml.CodigoClientePotencial);
            }
            else
            {
                crm.RazaoStatus = 993520003;

                originadoExtranet = true;
            }

            if (!String.IsNullOrEmpty(xml.CodigoRevenda) && xml.CodigoRevenda.Length == 36)
            {
                crm.RevendaIntegrador = new Lookup(new Guid(xml.CodigoRevenda), "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoRevenda não enviado ou fora do padrão (Guid).";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoDistribuidor) && xml.CodigoDistribuidor.Length == 36)
            {
                crm.Distribuidor = new Lookup(new Guid(xml.CodigoDistribuidor), "");
            }

            Contato executivo = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoExecutivo));
            if (executivo != null)
            {
                crm.Executivo = new Lookup(executivo.ID.Value, "");
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CNPJCliente))
            {
                crm.Cnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCnpj(xml.CNPJCliente);
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "CNPJCliente não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.RazaoSocial))
            {
                crm.NomeDaEmpresa = xml.RazaoSocial;
                crm.Topico        = xml.RazaoSocial;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "RazaoSocial não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.NomeContatoCliente))
            {
                crm.NomeCompletoDoContato = xml.NomeContatoCliente;

                if (xml.NomeContatoCliente.Contains(" "))
                {
                    crm.PrimeiroNomeDoContato = xml.NomeContatoCliente.Substring(0, xml.NomeContatoCliente.IndexOf(' '));
                    crm.SobreNomeDoContato    = xml.NomeContatoCliente.Substring(xml.NomeContatoCliente.IndexOf(' ') + 1, (xml.NomeContatoCliente.Length - xml.NomeContatoCliente.IndexOf(' ') - 1));
                }
                else
                {
                    crm.PrimeiroNomeDoContato = xml.NomeContatoCliente;
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "NomeContatoCliente não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.TelefoneContatoCliente))
            {
                crm.TelefoneComercial = xml.TelefoneContatoCliente;
                crm.TelefoneCelular   = xml.TelefoneContatoCliente;
            }

            if (!String.IsNullOrEmpty(xml.EmailContatoCliente))
            {
                crm.Email = xml.EmailContatoCliente;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "EmailContatoCliente não enviado.";
                return(crm);
            }

            if (xml.TipoProjeto.HasValue)
            {
                crm.TipoProjeto = xml.TipoProjeto;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "TipoProjeto não enviado.";
                return(crm);
            }

            if (xml.EnvolverEngenharia.HasValue)
            {
                if (xml.EnvolverEngenharia.Value == 993520000)
                {
                    crm.EnvolverEngenharia = true;
                }
                else
                {
                    crm.EnvolverEngenharia = false;
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "EnvolverEngenharia não enviado.";
                return(crm);
            }

            if (xml.ReceitaEstimada.HasValue)
            {
                crm.ValorEstimado = (decimal)xml.ReceitaEstimada;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "ReceitaEstimada não enviado.";
                return(crm);
            }

            if (xml.DataPrevisaoFechamento.HasValue)
            {
                crm.DataEstimada = (DateTime)xml.DataPrevisaoFechamento;

                crm.DataProximaInteracao = DateTime.Now.AddDays(30);
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DataPrevisaoFechamento não enviado.";
                return(crm);
            }

            if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio))
            {
                UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio);
                if (unidadeNegocio != null)
                {
                    crm.UnidadeNegocio = new Lookup(unidadeNegocio.Id, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "CodigoUnidadeNegocio não enencontrado no CRM.";
                    return(crm);
                }
            }


            if (!String.IsNullOrEmpty(xml.DescricaoProjeto))
            {
                crm.Descricao = xml.DescricaoProjeto;
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "DescricaoProjeto não enviado ou fora do padrão (Guid).";
                return(crm);
            }

            if (xml.CotacaoEnviada.HasValue)
            {
                crm.CotacaoEnviada = xml.CotacaoEnviada;
            }

            if (xml.TipoSolucao.HasValue)
            {
                crm.TipoSolucao = xml.TipoSolucao;
            }
            else
            {
                crm.AddNullProperty("TipoSolucao");
            }

            if (xml.PossivelDuplicidade.HasValue)
            {
                crm.PossivelDuplicidade = (bool)xml.PossivelDuplicidade;
            }

            #endregion

            #region Endereco
            crm.Endereco1CEP    = xml.EnderecoClienteFinal.CEP;
            crm.Endereco1Rua    = xml.EnderecoClienteFinal.Logradouro;
            crm.Endereco1Numero = xml.EnderecoClienteFinal.Numero;
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Complemento))
            {
                crm.Endereco1Complemento = xml.EnderecoClienteFinal.Complemento;
            }
            crm.Endereco1Bairro = xml.EnderecoClienteFinal.Bairro;
            //Cidade
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Cidade))
            {
                Municipio cidade = new Intelbras.CRM2013.Domain.Servicos.MunicipioServices(this.Organizacao, this.IsOffline).BuscaCidade(xml.EnderecoClienteFinal.Cidade);

                if (cidade != null && cidade.ID.HasValue)
                {
                    crm.Endereco1Municipioid = new Lookup(cidade.ID.Value, "");
                    crm.Endereco1Municipio   = cidade.Nome;
                }
            }

            //Estado
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Estado))
            {
                Estado estado = new Intelbras.CRM2013.Domain.Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstado(xml.EnderecoClienteFinal.Estado);

                if (estado != null && estado.ID.HasValue)
                {
                    crm.Endereco1Estadoid = new Lookup(estado.ID.Value, "");
                }
            }

            //Pais
            if (!String.IsNullOrEmpty(xml.EnderecoClienteFinal.Pais))
            {
                Pais Pais = new Intelbras.CRM2013.Domain.Servicos.PaisServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoClienteFinal.Pais);

                if (Pais != null && Pais.ID.HasValue)
                {
                    crm.Endereco1Pais = new Lookup(Pais.ID.Value, "");
                }
            }
            #endregion

            return(crm);
        }
Пример #3
0
        public Postagem DefinirPropriedades(Intelbras.Message.Helper.MSG0270 xml)
        {
            var crm = new Model.Postagem(this.Organizacao, this.IsOffline);

            if (!String.IsNullOrEmpty(xml.NumeroProjeto))
            {
                ClientePotencial cliente = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto);
                if (cliente != null)
                {
                    Oportunidade oportunidade = new Servicos.RepositoryService().Oportunidade.BuscarPor(cliente);

                    if (xml.ClassificacaoProjeto.HasValue)
                    {
                        if (xml.ClassificacaoProjeto == 993520000) // Cliente Potencial
                        {
                            crm.CriadoEm         = xml.DataAtividade;
                            crm.UsuarioAtividade = new Lookup(usuarioIntegracao.Id, "");

                            Contato contato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoContato));
                            if (contato != null)
                            {
                                crm.Texto = "Mensagem postada por " + contato.Nome + ": " + xml.DescricaoAtividade;
                            }
                            else
                            {
                                resultadoPersistencia.Sucesso  = false;
                                resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm.";
                                return(crm);
                            }
                            crm.ReferenteA = new SDKore.DomainModel.Lookup(cliente.ID.Value, "lead");
                            crm.Source     = 2;
                        }
                        if (xml.ClassificacaoProjeto == 993520001)  // Oportunidade
                        {
                            if (oportunidade != null)
                            {
                                crm.CriadoEm         = xml.DataAtividade;
                                crm.UsuarioAtividade = new Lookup(usuarioIntegracao.Id, "");
                                Contato contato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoContato));
                                if (contato != null)
                                {
                                    crm.Texto = "Mensagem postada por " + contato.Nome + ": " + xml.DescricaoAtividade;
                                }
                                else
                                {
                                    resultadoPersistencia.Sucesso  = false;
                                    resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm.";
                                    return(crm);
                                }
                                crm.ReferenteA = new SDKore.DomainModel.Lookup(oportunidade.ID.Value, "opportunity");
                                crm.Source     = 2;
                            }
                        }
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "ClassificacaoProjeto não informado, campo obrigatório.";
                        return(crm);
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "NumeroProjeto informado não existe para ser atualizado.";
                    return(crm);
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "NumeroProjeto não informado, campo obrigatório.";
                return(crm);
            }

            return(crm);
        }
Пример #4
0
        public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario)
        {
            try
            {
                usuarioIntegracao = usuario;
                ClientePotencial clientePotencialConsulta = null;
                Oportunidade     oportunidadeConsulta     = null;

                var xml = this.CarregarMensagem <Pollux.MSG0269>(mensagem);
                Pollux.Entities.ProjetoItem projetoItem = new Pollux.Entities.ProjetoItem();

                if (!string.IsNullOrEmpty(xml.NumeroProjeto))
                {
                    clientePotencialConsulta = new Servicos.LeadService(this.Organizacao, this.IsOffline).ObterPorNumeroProjeto(xml.NumeroProjeto);
                    if (clientePotencialConsulta != null)
                    {
                        oportunidadeConsulta = new Servicos.RepositoryService().Oportunidade.BuscarPor(clientePotencialConsulta);
                    }

                    if (clientePotencialConsulta == null)
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Valor do parâmetro " + xml.NumeroProjeto + " não encontrado.";
                        retorno.Add("Resultado", resultadoPersistencia);
                        return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
                    }
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Parâmetro obrigatório para a consulta não enviado.";
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
                }

                if (oportunidadeConsulta != null)
                {
                    projetoItem.NumeroProjeto          = clientePotencialConsulta.NumeroProjeto;
                    projetoItem.ClassificacaoProjeto   = 993520001;
                    projetoItem.CodigoClientePotencial = oportunidadeConsulta.ClientePotencialOriginador.Id.ToString();
                    projetoItem.CodigoOportunidade     = oportunidadeConsulta.Id.ToString();
                    projetoItem.SituacaoProjeto        = ObterRazaoStatusOportunidade(oportunidadeConsulta);
                    if (oportunidadeConsulta.RevendaIntegrador != null)
                    {
                        projetoItem.CodigoRevenda = oportunidadeConsulta.RevendaIntegrador.Id.ToString();
                        projetoItem.NomeRevenda   = oportunidadeConsulta.RevendaIntegrador.Name;
                    }

                    if (oportunidadeConsulta.Distribuidor != null)
                    {
                        projetoItem.CodigoDistribuidor = oportunidadeConsulta.Distribuidor.Id.ToString();
                        projetoItem.NomeDistribuidor   = oportunidadeConsulta.Distribuidor.Name;
                    }
                    if (oportunidadeConsulta.Executivo != null)
                    {
                        projetoItem.CodigoExecutivo = oportunidadeConsulta.Executivo.Id.ToString();
                        projetoItem.NomeExecutivo   = oportunidadeConsulta.Executivo.Name;
                    }
                    projetoItem.CNPJCliente        = clientePotencialConsulta.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    projetoItem.RazaoSocial        = clientePotencialConsulta.NomeDaEmpresa;
                    projetoItem.NomeContatoCliente = clientePotencialConsulta.NomeCompletoDoContato;
                    if (!string.IsNullOrEmpty(clientePotencialConsulta.TelefoneComercial))
                    {
                        projetoItem.TelefoneContatoCliente = clientePotencialConsulta.TelefoneComercial;
                    }
                    projetoItem.EmailContatoCliente = clientePotencialConsulta.Email;
                    projetoItem.TipoProjeto         = clientePotencialConsulta.TipoProjeto;
                    if (clientePotencialConsulta.EnvolverEngenharia)
                    {
                        projetoItem.EnvolverEngenharia = 993520000;
                    }
                    else
                    {
                        projetoItem.EnvolverEngenharia = 993520001;
                    }
                    projetoItem.ReceitaEstimada        = clientePotencialConsulta.ValorEstimado;
                    projetoItem.DataPrevisaoFechamento = clientePotencialConsulta.DataEstimada;
                    UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(clientePotencialConsulta.UnidadeNegocio.Id);
                    if (unidadeNegocio != null)
                    {
                        projetoItem.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                        projetoItem.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                    }
                    projetoItem.DataCadastro     = clientePotencialConsulta.DataCriacao;
                    projetoItem.DescricaoProjeto = clientePotencialConsulta.Descricao;
                    if (clientePotencialConsulta.CotacaoEnviada.HasValue)
                    {
                        projetoItem.CotacaoEnviada = clientePotencialConsulta.CotacaoEnviada;
                    }
                    if (oportunidadeConsulta.DataEnvioCotacao.HasValue)
                    {
                        projetoItem.DataEnvioCotacao = oportunidadeConsulta.DataEnvioCotacao;
                    }
                    if (oportunidadeConsulta.TeveReuniao.HasValue)
                    {
                        projetoItem.TeveReuniao = oportunidadeConsulta.TeveReuniao;
                    }
                    if (oportunidadeConsulta.DataReuniao.HasValue)
                    {
                        projetoItem.DataReuniao = oportunidadeConsulta.DataReuniao;
                    }
                    if (oportunidadeConsulta.DataEstimativaAprovacao.HasValue)
                    {
                        projetoItem.DataEstimativaAprovacao = oportunidadeConsulta.DataEstimativaAprovacao;
                    }
                    if (oportunidadeConsulta.PropostaAprovada.HasValue)
                    {
                        projetoItem.PropostaAprovada = oportunidadeConsulta.PropostaAprovada;
                    }
                    if (oportunidadeConsulta.DataAprovacao.HasValue)
                    {
                        projetoItem.DataAprovacao = oportunidadeConsulta.DataAprovacao;
                    }
                    if (oportunidadeConsulta.DataEnvioPedidos.HasValue)
                    {
                        projetoItem.DataEnvioPedidos = oportunidadeConsulta.DataEnvioPedidos;
                    }
                    if (oportunidadeConsulta.PedidosFaturados.HasValue)
                    {
                        projetoItem.PedidosFaturados = oportunidadeConsulta.PedidosFaturados;
                    }
                    Usuario proprietarioOportunidade = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("opportunity", "opportunityid", oportunidadeConsulta.Id);
                    if (proprietarioOportunidade != null)
                    {
                        projetoItem.CodigoExecutivoIntelbras = proprietarioOportunidade.Id.ToString();
                        projetoItem.NomeExecutivoIntelbras   = proprietarioOportunidade.NomeCompleto;
                    }
                }
                else
                {
                    projetoItem.NumeroProjeto          = clientePotencialConsulta.NumeroProjeto;
                    projetoItem.ClassificacaoProjeto   = 993520000;
                    projetoItem.CodigoClientePotencial = clientePotencialConsulta.Id.ToString();
                    projetoItem.SituacaoProjeto        = ObterRazaoStatusClientePotencial(clientePotencialConsulta);
                    if (clientePotencialConsulta.RevendaIntegrador != null)
                    {
                        projetoItem.CodigoRevenda = clientePotencialConsulta.RevendaIntegrador.Id.ToString();
                        projetoItem.NomeRevenda   = clientePotencialConsulta.RevendaIntegrador.Name;
                    }
                    if (clientePotencialConsulta.Distribuidor != null)
                    {
                        projetoItem.CodigoDistribuidor = clientePotencialConsulta.Distribuidor.Id.ToString();
                        projetoItem.NomeDistribuidor   = clientePotencialConsulta.Distribuidor.Name;
                    }
                    if (clientePotencialConsulta.Executivo != null)
                    {
                        projetoItem.CodigoExecutivo = clientePotencialConsulta.Executivo.Id.ToString();
                        projetoItem.NomeExecutivo   = clientePotencialConsulta.Executivo.Name;
                    }
                    projetoItem.CNPJCliente        = clientePotencialConsulta.Cnpj.Replace("-", "").Replace(".", "").Replace("/", "").Trim();
                    projetoItem.RazaoSocial        = clientePotencialConsulta.NomeDaEmpresa;
                    projetoItem.NomeContatoCliente = clientePotencialConsulta.NomeCompletoDoContato;
                    if (!string.IsNullOrEmpty(clientePotencialConsulta.TelefoneComercial))
                    {
                        projetoItem.TelefoneContatoCliente = clientePotencialConsulta.TelefoneComercial;
                    }
                    projetoItem.EmailContatoCliente = clientePotencialConsulta.Email;
                    projetoItem.TipoProjeto         = clientePotencialConsulta.TipoProjeto;
                    if (clientePotencialConsulta.EnvolverEngenharia)
                    {
                        projetoItem.EnvolverEngenharia = 993520000;
                    }
                    else
                    {
                        projetoItem.EnvolverEngenharia = 993520001;
                    }
                    projetoItem.ReceitaEstimada        = clientePotencialConsulta.ValorEstimado;
                    projetoItem.DataPrevisaoFechamento = clientePotencialConsulta.DataEstimada;
                    UnidadeNegocio unidadeNegocio = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocio(clientePotencialConsulta.UnidadeNegocio.Id);
                    if (unidadeNegocio != null)
                    {
                        projetoItem.CodigoUnidadeNegocio = unidadeNegocio.ChaveIntegracao;
                        projetoItem.NomeUnidadeNegocio   = unidadeNegocio.Nome;
                    }
                    projetoItem.DataCadastro     = clientePotencialConsulta.DataCriacao;
                    projetoItem.DescricaoProjeto = clientePotencialConsulta.Descricao;
                    if (clientePotencialConsulta.CotacaoEnviada.HasValue)
                    {
                        projetoItem.CotacaoEnviada = clientePotencialConsulta.CotacaoEnviada;
                    }

                    Usuario proprietario = new Servicos.UsuarioService(this.Organizacao, this.IsOffline).BuscarProprietario("lead", "leadid", clientePotencialConsulta.Id);
                    if (proprietario != null)
                    {
                        projetoItem.CodigoExecutivoIntelbras = proprietario.Id.ToString();
                        projetoItem.NomeExecutivoIntelbras   = proprietario.NomeCompleto;
                    }

                    if (clientePotencialConsulta.TipoSolucao.HasValue)
                    {
                        projetoItem.TipoSolucao = clientePotencialConsulta.TipoSolucao;
                    }
                }
                #region Endereço
                projetoItem.EnderecoClienteFinal = new Pollux.Entities.Endereco();
                if (!string.IsNullOrEmpty(clientePotencialConsulta.Endereco1CEP))
                {
                    projetoItem.EnderecoClienteFinal.CEP = clientePotencialConsulta.Endereco1CEP.Replace("-", "").PadLeft(8, '0');
                }
                ;
                projetoItem.EnderecoClienteFinal.Logradouro = clientePotencialConsulta.Endereco1Rua;
                projetoItem.EnderecoClienteFinal.Numero     = clientePotencialConsulta.Endereco1Numero;
                if (!string.IsNullOrEmpty(clientePotencialConsulta.Endereco1Complemento))
                {
                    projetoItem.EnderecoClienteFinal.Complemento = clientePotencialConsulta.Endereco1Complemento;
                }
                projetoItem.EnderecoClienteFinal.Bairro = clientePotencialConsulta.Endereco1Bairro;

                if (clientePotencialConsulta.Endereco1Municipioid != null)
                {
                    Municipio municipio = new Servicos.MunicipioServices(this.Organizacao, this.IsOffline).ObterPor(clientePotencialConsulta.Endereco1Municipioid.Id);
                    projetoItem.EnderecoClienteFinal.NomeCidade = municipio.Nome;
                    projetoItem.EnderecoClienteFinal.Cidade     = municipio.ChaveIntegracao;
                }
                if (clientePotencialConsulta.Endereco1Estadoid != null)
                {
                    Estado estado = new Servicos.EstadoServices(this.Organizacao, this.IsOffline).BuscaEstadoPorId(clientePotencialConsulta.Endereco1Estadoid.Id);
                    if (estado != null)
                    {
                        projetoItem.EnderecoClienteFinal.UF     = estado.SiglaUF;
                        projetoItem.EnderecoClienteFinal.Estado = estado.ChaveIntegracao;
                    }
                }
                if (clientePotencialConsulta.Endereco1Pais != null)
                {
                    Pais pais = new Servicos.PaisServices(this.Organizacao, this.IsOffline).BuscaPais(clientePotencialConsulta.Endereco1Pais.Id);
                    if (pais != null)
                    {
                        projetoItem.EnderecoClienteFinal.NomePais = pais.Nome;
                        projetoItem.EnderecoClienteFinal.Pais     = pais.Nome;
                    }
                }

                #endregion

                #region Atividades Projeto
                projetoItem.ListaAtividadesProjeto = new List <Pollux.Entities.AtividadeProjeto>();

                List <Postagem> lstAtividadesClientePotencial = new Servicos.PostagemService(this.Organizacao, this.IsOffline).ListarPorReferenteA(clientePotencialConsulta.Id);

                if (oportunidadeConsulta != null)
                {
                    List <Postagem> lstAtividadesOportunidade = new Servicos.PostagemService(this.Organizacao, this.IsOffline).ListarPorReferenteA(oportunidadeConsulta.Id);

                    if (lstAtividadesOportunidade.Count > 0)
                    {
                        foreach (Postagem postagem in lstAtividadesOportunidade)
                        {
                            Pollux.Entities.AtividadeProjeto atividadeProjeto = new Pollux.Entities.AtividadeProjeto();

                            atividadeProjeto.DataAtividade      = postagem.CriadoEm;
                            atividadeProjeto.CodigoContato      = postagem.UsuarioAtividade.Id.ToString();
                            atividadeProjeto.UsuarioAtividade   = postagem.UsuarioAtividade.Name;
                            atividadeProjeto.DescricaoAtividade = postagem.Texto;

                            projetoItem.ListaAtividadesProjeto.Add(atividadeProjeto);
                        }
                    }
                }
                if (lstAtividadesClientePotencial.Count > 0)
                {
                    foreach (Postagem postagem in lstAtividadesClientePotencial)
                    {
                        Pollux.Entities.AtividadeProjeto atividadeProjeto = new Pollux.Entities.AtividadeProjeto();

                        atividadeProjeto.DataAtividade      = postagem.CriadoEm;
                        atividadeProjeto.CodigoContato      = postagem.UsuarioAtividade.Id.ToString();
                        atividadeProjeto.UsuarioAtividade   = postagem.UsuarioAtividade.Name;
                        atividadeProjeto.DescricaoAtividade = postagem.Texto;

                        projetoItem.ListaAtividadesProjeto.Add(atividadeProjeto);
                    }
                }
                #endregion

                #region Anexos Projeto
                projetoItem.ListaAnexosProjeto = new List <Pollux.Entities.AnexoProjeto>();
                if (oportunidadeConsulta != null)
                {
                    List <DocumentoSharePoint> lstAnexosOportunidade = new Servicos.SharePointSiteService(this.Organizacao, this.IsOffline).ListarPorIdRegistro(oportunidadeConsulta.ID.Value);

                    foreach (DocumentoSharePoint anexo in lstAnexosOportunidade)
                    {
                        try
                        {
                            string urlSite         = ConfigurationManager.GetSettingValue("UrlSiteSharePoint");
                            string urlFolderDetail = "";
                            if (!string.IsNullOrEmpty(anexo.UrlAbsoluta))
                            {
                                urlFolderDetail = anexo.UrlAbsoluta;
                            }
                            else if (!string.IsNullOrEmpty(anexo.UrlRelativa))
                            {
                                urlFolderDetail = urlSite + "/opportunity/" + anexo.UrlRelativa;
                            }
                            using (ClientContext spClientContext = new ClientContext(urlSite))
                            {
                                spClientContext.Credentials = new NetworkCredential(usuarioSharePoint, senhaSharePoint, domain);
                                var rootWeb = spClientContext.Web;

                                Folder pastaPrincipal = rootWeb.GetFolderByServerRelativeUrl(urlFolderDetail);

                                if (pastaPrincipal.Files.AreItemsAvailable)
                                {
                                    spClientContext.Load(pastaPrincipal, fs => fs.Files, p => p.Folders);
                                    spClientContext.ExecuteQuery();
                                    FolderCollection folderCollection = pastaPrincipal.Folders;
                                    FileCollection   fileCollection   = pastaPrincipal.Files;


                                    foreach (var arquivo in fileCollection)
                                    {
                                        Pollux.Entities.AnexoProjeto anexoProjeto = new Pollux.Entities.AnexoProjeto();

                                        anexoProjeto.NomeArquivo    = arquivo.Name;
                                        anexoProjeto.DataArquivo    = arquivo.TimeCreated;
                                        anexoProjeto.UsuarioArquivo = anexo.ModificadoPor.Name;
                                        anexoProjeto.URL            = ObterUrlArquivo(urlSite, arquivo.ServerRelativeUrl);

                                        projetoItem.ListaAnexosProjeto.Add(anexoProjeto);
                                    }
                                }
                            }
                        }
                        catch
                        {
                            continue;
                        }
                    }
                }
                List <DocumentoSharePoint> lstAnexosClientePotencial = new Servicos.SharePointSiteService(this.Organizacao, this.IsOffline).ListarPorIdRegistro(clientePotencialConsulta.ID.Value);

                foreach (DocumentoSharePoint anexo in lstAnexosClientePotencial)
                {
                    try
                    {
                        string urlSite         = ConfigurationManager.GetSettingValue("UrlSiteSharePoint");
                        string urlFolderDetail = "";
                        if (!string.IsNullOrEmpty(anexo.UrlAbsoluta))
                        {
                            urlFolderDetail = anexo.UrlAbsoluta;
                        }
                        else if (!string.IsNullOrEmpty(anexo.UrlRelativa))
                        {
                            urlFolderDetail = urlSite + "/lead/" + anexo.UrlRelativa;
                        }
                        using (ClientContext spClientContext = new ClientContext(urlSite))
                        {
                            spClientContext.Credentials = new NetworkCredential(usuarioSharePoint, senhaSharePoint, domain);
                            var rootWeb = spClientContext.Web;

                            Folder pastaPrincipal = rootWeb.GetFolderByServerRelativeUrl(urlFolderDetail);

                            spClientContext.Load(pastaPrincipal, fs => fs.Files, p => p.Folders);
                            spClientContext.ExecuteQuery();
                            FolderCollection folderCollection = pastaPrincipal.Folders;
                            FileCollection   fileCollection   = pastaPrincipal.Files;

                            foreach (var arquivo in fileCollection)
                            {
                                Pollux.Entities.AnexoProjeto anexoProjeto = new Pollux.Entities.AnexoProjeto();

                                anexoProjeto.NomeArquivo    = arquivo.Name;
                                anexoProjeto.DataArquivo    = arquivo.TimeLastModified;
                                anexoProjeto.UsuarioArquivo = anexo.ModificadoPor.Name;
                                anexoProjeto.URL            = ObterUrlArquivo(urlSite, arquivo.ServerRelativeUrl);

                                projetoItem.ListaAnexosProjeto.Add(anexoProjeto);
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }
                #endregion

                #region Produtos Projeto

                projetoItem.ListaProdutosProjeto = new List <Pollux.Entities.ProdutoProjeto>();
                List <ProdutoProjeto> lstProdutosClientePotencial = new Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).ListarPorClientePotencial(clientePotencialConsulta.Id);

                if (lstProdutosClientePotencial.Count > 0)
                {
                    foreach (ProdutoProjeto produtoCliente in lstProdutosClientePotencial)
                    {
                        Pollux.Entities.ProdutoProjeto produtoProjeto = new Pollux.Entities.ProdutoProjeto();
                        var produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ObterPor(produtoCliente.Produto.Id);

                        produtoProjeto.CodigoProdutoClientePotencial = produtoCliente.Id.ToString();
                        produtoProjeto.CodigoProduto    = produto.Codigo;
                        produtoProjeto.DescricaoProduto = produto.Nome;
                        produtoProjeto.Quantidade       = produtoCliente.Quantidade;
                        produtoProjeto.PrecoUnitario    = produtoCliente.ValorUnitario;
                        produtoProjeto.ValorTotal       = produtoCliente.ValorTotal;

                        projetoItem.ListaProdutosProjeto.Add(produtoProjeto);
                    }
                }

                #endregion

                if (!resultadoPersistencia.Sucesso)
                {
                    retorno.Add("Resultado", resultadoPersistencia);
                    return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
                }

                resultadoPersistencia.Sucesso  = true;
                resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!";
                retorno.Add("ProjetoItem", projetoItem);
                retorno.Add("Resultado", resultadoPersistencia);

                return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
            }
            catch (Exception e)
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e);
                retorno.Add("Resultado", resultadoPersistencia);
                return(CriarMensagemRetorno <Pollux.MSG0269R1>(numeroMensagem, retorno));
            }
        }