public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { usuarioIntegracao = usuario; var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0268>(mensagem)); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); } objeto = new Domain.Servicos.LeadService(this.Organizacao, this.IsOffline).Persistir(objeto); var objeto2 = this.DefinirPropriedades2(this.CarregarMensagem <Pollux.MSG0268>(mensagem), new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value)); if (objeto2 != null) { if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); } new Servicos.RepositoryService().Oportunidade.Update(objeto2); } #region Lista de Produtos if (objeto.StatusValidacao != (int)Enum.StatusDaValidacao.Aceito) { List <ProdutoProjeto> lstProdutosProjeto = this.DefinirPropriedadesProdutos(this.CarregarMensagem <Pollux.MSG0268>(mensagem), new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value)); var produtosTemp = new Domain.Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).Persistir(lstProdutosProjeto); new Domain.Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).AtualizarListagemProdutos(objeto.ID.Value, produtosTemp); } #endregion if (objeto != null) { if (originadoExtranet) { //seta um usuário do comercial como proprietário de cliente potencial originado na extranet new Servicos.UtilService(this.Organizacao, this.IsOffline).MudarProprietarioRegistro("systemuser", new Guid(SDKore.Configuration.ConfigurationManager.GetSettingValue("ProprietarioComercial")), "lead", objeto.ID.Value); } while (string.IsNullOrEmpty(objeto.NumeroProjeto)) { objeto = new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value); } retorno.Add("NumeroProjeto", objeto.NumeroProjeto); retorno.Add("CodigoClientePotencial", objeto.ID.Value.ToString()); if (objeto2 != null) { retorno.Add("CodigoOportunidade", objeto2.ID.Value.ToString()); } retorno.Add("Resultado", resultadoPersistencia); } return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); }
public List <ProdutoProjeto> DefinirPropriedadesProdutos(Intelbras.Message.Helper.MSG0268 xml, ClientePotencial ClientePotencial) { List <ProdutoProjeto> lstRetorno = new List <ProdutoProjeto>(); #region Lista ProdutoProjeto foreach (var item in xml.ListaProdutosProjeto) { //verificar se o vinculo existe criar ou editar ProdutoProjeto produtoProjeto = new ProdutoProjeto(this.Organizacao, this.IsOffline); if (!String.IsNullOrEmpty(item.CodigoProdutoClientePotencial)) { ProdutoProjeto produtoProjetoTemp = new Servicos.RepositoryService().ProdutoProjeto.Retrieve(new Guid(item.CodigoProdutoClientePotencial)); //new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProdutoClientePotencial); if (produtoProjeto == null) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Produto não cadastrado no Crm!"; return(null); } produtoProjeto = produtoProjetoTemp; } if (!String.IsNullOrEmpty(item.CodigoProduto)) { Product produto = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).BuscaPorCodigo(item.CodigoProduto); if (produto != null) { produtoProjeto.Produto = new Lookup(produto.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Produto não cadastrado no Crm!"; return(null); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Codigo Produto não enviado."; return(null); } produtoProjeto.ClientePotencial = new Lookup(ClientePotencial.ID.Value, ""); produtoProjeto.ValorUnitario = (item.PrecoUnitario == null) ? 0 : item.PrecoUnitario; produtoProjeto.Quantidade = item.Quantidade; produtoProjeto.ValorTotal = (item.ValorTotal == null) ? 0 : item.ValorTotal; lstRetorno.Add(produtoProjeto); } #endregion return(lstRetorno); }
public ParametroBeneficio DefinirPropriedades(Intelbras.Message.Helper.MSG0142 xml) { var crm = new Model.ParametroBeneficio(this.Organizacao, this.IsOffline); if (!String.IsNullOrEmpty(xml.CodigoBeneficio) && xml.CodigoBeneficio.Length == 36) { Beneficio beneficio = new Servicos.RepositoryService(this.Organizacao, this.IsOffline).Beneficio.Retrieve(new Guid(xml.CodigoBeneficio)); if (beneficio != null) { crm.Beneficio = new Lookup(beneficio.ID.Value, ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Codigo Beneficio não enviado ou fora do padrão(Guid)."; return(crm); } return(crm); }
public string Executar(string mensagem, string numeroMensagem, Usuario usuario) { usuarioIntegracao = usuario; var xml = this.CarregarMensagem <Pollux.MSG0288>(mensagem); bool reaberta = false; // Variável de controle de acesso List <Intelbras.Message.Helper.Entities.AtendimentoTelefonico> lstAtendimentosTelefonicos = new List <Pollux.Entities.AtendimentoTelefonico>(); #region Leitura do xml atualização ocorrencia e montagem retorno if (xml.AtendimentoTelefonico != null) { foreach (Pollux.Entities.AtendimentoTelefonico atendimentoTelefonico in xml.AtendimentoTelefonico) { if (!string.IsNullOrEmpty(atendimentoTelefonico.ProtocoloTelefonico)) { Ocorrencia ocorrencia = new Servicos.RepositoryService(this.Organizacao, this.IsOffline).Ocorrencia.ObterPorProtocoloTelefonico(atendimentoTelefonico.ProtocoloTelefonico); if (ocorrencia != null) { //Reabre a ocorrência, para que salve os dados do protocola de atendimento. bool ocorrenciaEstavaFechada = (ocorrencia.RazaoStatus.Value == (int)StatusDaOcorrencia.Resolvido); if (ocorrenciaEstavaFechada) { (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.ReabrirOcorrencia(ocorrencia); ocorrencia.RazaoStatus = (int)StatusDaOcorrencia.Aberta; ocorrencia.ManterAberto = true; reaberta = true; ocorrencia.Atualizar(); } if (atendimentoTelefonico.DuracaoChamada.HasValue) { ocorrencia.DuracaoChamada = atendimentoTelefonico.DuracaoChamada; } if (!string.IsNullOrEmpty(atendimentoTelefonico.NomeQuestionario)) { List <QuestionarioPergunta> lstQuestionarioPergunta = new Servicos.QuestionarioPerguntaServices(this.Organizacao, this.IsOffline).ListarQuestionarioPerguntaPorNomeQuestionario(atendimentoTelefonico.NomeQuestionario); if (atendimentoTelefonico.PesquisaSatisfacao != null) { if (atendimentoTelefonico.PesquisaSatisfacao.Count > 0) { foreach (var pesquisaSatisfacao in atendimentoTelefonico.PesquisaSatisfacao) { foreach (var pergunta in lstQuestionarioPergunta) { if (pesquisaSatisfacao.Questao == pergunta.Ordem) { List <QuestionarioOpcao> lstOpcoesResposta = new Servicos.QuestionarioOpcaoServices(this.Organizacao, this.IsOffline).ListarQuestionarioOpcaoPor((Guid)pergunta.ID); foreach (QuestionarioOpcao opcaoItem in lstOpcoesResposta) { if (opcaoItem.Nome == pesquisaSatisfacao.ValorPesquisa.ToString()) { //Cria o vínculo da Resposta com a ocorrência QuestionarioResposta questionarioRespostaCreate = new QuestionarioResposta(); questionarioRespostaCreate.QuestionarioOpcao = new Lookup(opcaoItem.Id, "itbc_questionarioresposta"); questionarioRespostaCreate.QuestionarioRespostaOcorrencia = new Lookup(ocorrencia.Id, "incident"); new RepositoryService(this.Organizacao, this.IsOffline).QuestionarioResposta.Create(questionarioRespostaCreate); } } } } } } } } if (atendimentoTelefonico.TempoFila.HasValue) { ocorrencia.TempoFila = atendimentoTelefonico.TempoFila; } if (atendimentoTelefonico.TempoWrap.HasValue) { ocorrencia.TempoWrap = atendimentoTelefonico.TempoWrap; } if (!String.IsNullOrEmpty(atendimentoTelefonico.NumeroFilaEntrada)) { ocorrencia.NumeroFilaEntrada = atendimentoTelefonico.NumeroFilaEntrada; } if (!String.IsNullOrEmpty(atendimentoTelefonico.CodigoProdutoURA)) { ocorrencia.CodigoProdutoURA = atendimentoTelefonico.CodigoProdutoURA; } try { if (reaberta == true) // Entrou no if de cancelada ou resolvida { ocorrencia.ManterAberto = false; reaberta = false; ocorrencia.Atualizar(); } else { ocorrencia.Atualizar(); } //Antes de resolver a ocorrência, precisa preencher a resolução SolucaoOcorrencia solucaoOcorrencia = new SolucaoOcorrencia(this.Organizacao, this.IsOffline) { DataHoraConclusao = DateTime.Now, Nome = "Rotina Histórico do Protocolo de atendimento", OcorrenciaId = ocorrencia.Id }; //Fecha a ocorrência, caso ela já estivesse fechada. if (ocorrenciaEstavaFechada) { (new CRM2013.Domain.Servicos.RepositoryService()).Ocorrencia.FecharOcorrencia(ocorrencia, solucaoOcorrencia); } if (ocorrencia != null) { Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico(); objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico; objPollux.NumeroOcorrencia = ocorrencia.Numero; objPollux.Mensagem = "Ocorrência atualizada com sucesso!"; lstAtendimentosTelefonicos.Add(objPollux); } } catch (Exception e) { if (ocorrencia != null) { Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico(); objPollux.ProtocoloTelefonico = ocorrencia.ProtocoloTelefonico; objPollux.NumeroOcorrencia = ocorrencia.Numero; objPollux.Mensagem = "Falha na atualização da Ocorrência: '" + e.Message + "'."; lstAtendimentosTelefonicos.Add(objPollux); } } } else { Pollux.Entities.AtendimentoTelefonico objPollux = new Pollux.Entities.AtendimentoTelefonico(); objPollux.ProtocoloTelefonico = atendimentoTelefonico.ProtocoloTelefonico; objPollux.Mensagem = "Não encontrou ocorrência com esse Protocolo."; lstAtendimentosTelefonicos.Add(objPollux); } } } } #endregion resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso!"; retorno.Add("AtendimentoTelefonicoAtualizado", lstAtendimentosTelefonicos); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0288R1>(numeroMensagem, retorno)); }
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)); }
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); }
public Oportunidade DefinirPropriedades2(Intelbras.Message.Helper.MSG0268 xml, ClientePotencial ClientePotencial) { #region Propriedades Crm->Xml var crm2 = new Servicos.RepositoryService().Oportunidade.BuscarPor(ClientePotencial); if (crm2 != null) { crm2.IntegrarNoPlugin = true; crm2.NumeroProjeto = ClientePotencial.NumeroProjeto; if (!String.IsNullOrEmpty(xml.CodigoRevenda) && xml.CodigoRevenda.Length == 36) { if ((crm2.RevendaIntegrador == null) || (crm2.RevendaIntegrador.Id.ToString() != xml.CodigoRevenda)) { crm2.RevendaIntegrador = new Lookup(new Guid(xml.CodigoRevenda), ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoRevenda não enviado ou fora do padrão (Guid)."; return(crm2); } Contato executivo = new Intelbras.CRM2013.Domain.Servicos.ContatoService(this.Organizacao, this.IsOffline).BuscaContato(new Guid(xml.CodigoExecutivo)); if (executivo != null) { if ((crm2.Executivo == null) || (crm2.Executivo.Id != executivo.ID.Value)) { crm2.Executivo = new Lookup(executivo.ID.Value, ""); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "CodigoExecutivo não encontrado no Crm."; return(crm2); } if (xml.DataEnvioCotacao.HasValue) { crm2.DataEnvioCotacao = xml.DataEnvioCotacao; } else { crm2.DataEnvioCotacao = null; } if (xml.TeveReuniao.HasValue) { crm2.TeveReuniao = xml.TeveReuniao; } else { crm2.TeveReuniao = (Int32)this.PreencherAtributoVazio("int"); } if (xml.DataReuniao.HasValue) { crm2.DataReuniao = xml.DataReuniao; } else { crm2.DataReuniao = null; } if (xml.DataEstimativaAprovacao.HasValue) { crm2.DataEstimativaAprovacao = xml.DataEstimativaAprovacao; } else { crm2.DataEstimativaAprovacao = null; } if (xml.PropostaAprovada.HasValue) { crm2.PropostaAprovada = xml.PropostaAprovada; } else { crm2.PropostaAprovada = (Int32)PreencherAtributoVazio("int"); } if (xml.DataAprovacao.HasValue) { crm2.DataAprovacao = xml.DataAprovacao; } else { crm2.DataAprovacao = null; } if (xml.DataEnvioPedidos.HasValue) { crm2.DataEnvioPedidos = xml.DataEnvioPedidos; } else { crm2.DataEnvioPedidos = null; } if (xml.PedidosFaturados.HasValue) { crm2.PedidosFaturados = xml.PedidosFaturados; } else { crm2.PedidosFaturados = 993520001; } #endregion return(crm2); } return(null); }
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)); } }