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 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)); } }