public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { var xml = this.CarregarMensagem <Pollux.MSG0100>(mensagem); List <ProdutoPortfolio> lstProdutoPortifolio = null; List <Pollux.Entities.ProdutoPortifolio> lstPolluxPortifolio = new List <Pollux.Entities.ProdutoPortifolio>(); ProdutoPortfolio objeto = this.DefinirPropriedades(xml); if (!String.IsNullOrEmpty(xml.Classificacao)) { Classificacao classif = new Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.Classificacao)); if (classif != null) { classificacaoId = classif.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Classificação - " + xml.Classificacao + " - não cadastrada no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } } else { //new resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "O campo Classificação é obrigatorio."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } if (!String.IsNullOrEmpty(xml.UnidadeNegocio)) { UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.UnidadeNegocio); if (unidadeNeg != null) { unidadeNegocioId = unidadeNeg.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeNegocio - " + xml.UnidadeNegocio + " - não cadastrada no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } } if (!String.IsNullOrEmpty(xml.Conta)) { Conta objetoConta = new Servicos.ContaService(this.Organizacao, this.IsOffline).BuscaConta(new Guid(xml.Conta)); if (objetoConta != null && objetoConta.Status.Value == 0) { #region Conta sem categoria de canal ativa //Regra: É preciso recuperar as unidades de negócios com qual o canal possui relacionamento que estão registradas na entidade "Categorias do Canal". //Se não forem encontrados registros, o calculo do portfólio deve ser interrompido e deve ser retornado ao ESB como resultado "Falha"." var categoriaCanal = new Servicos.CategoriaCanalService(this.Organizacao, this.IsOffline).ListarPor(objetoConta.ID, unidadeNegocioId); if (categoriaCanal == null || categoriaCanal.Count.Equals(0)) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(CRM):Conta não possui relacionamento com unidades de negócio Intelbras"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } #endregion #region Nenhum portfólio encontrado if (unidadeNegocioId != null) { var portifolio = new Servicos.PortfolioService(this.Organizacao, this.IsOffline).ListPortifolios(unidadeNegocioId.Value, classificacaoId.Value); if (portifolio.Count == 0) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(CRM): Não foram encontrados portfólios para a classificação da conta"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } } #endregion #region Nenhum produto de portfólio encontrado lstProdutoPortifolio = new Servicos.ProdutoService(this.Organizacao, this.IsOffline).ProdutosPortfolio(objetoConta, classificacaoId, unidadeNegocioId); if (lstProdutoPortifolio != null && lstProdutoPortifolio.Count > 0) { lstPolluxPortifolio = this.CarregarListaProdutoPortifolio(lstProdutoPortifolio); } else { //verifica se existe portfolios sem produto var portifolio = new Servicos.PortfolioService(this.Organizacao, this.IsOffline).VerificaPortfolio(objetoConta, classificacaoId, unidadeNegocioId); if (portifolio.Count > 0) { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(CRM): Foram encontrados portfólios mas nenhum produto relacionado aos mesmos."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } else { //Erro Lista Portifolio vazia resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(CRM): Não foram encontrados portfólios para a classificação da conta"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } } #endregion } else { //Conta inativa ou não existe //Conta nao encontrada resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "(CRM): Conta não existente e/ ou inativa"; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador do Canal não enviado."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } if (lstPolluxPortifolio.Count > 0) { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso."; retorno.Add("ProdutoItem", lstPolluxPortifolio); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } else { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Produtos Itens não encontrados no Crm."; retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0100R1>(numeroMensagem, retorno)); } }
//public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) //{ // try // { // //Trace.Add("Mensagem " + numeroMensagem + " XML: {0}", mensagem); // usuarioIntegracao = usuario; // Intelbras.Message.Helper.MSG0111 xml = this.CarregarMensagem<Pollux.MSG0111>(mensagem); // ParametroGlobal objeto = this.DefinirPropriedades(xml); // if (!resultadoPersistencia.Sucesso) // { // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // } // objeto = new Domain.Servicos.ParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(tipoParamentroCod, unidadeNegocioId, classificacaoId, categoriaId, nivelPosVendaId, compromissoId, beneficioId,null); // if (objeto == null) // { // resultadoPersistencia.Sucesso = true; // resultadoPersistencia.Mensagem = "Registro não encontrado!"; // } // else // { // Pollux.Entities.ParametroGlobal objRetorno = new Pollux.Entities.ParametroGlobal(); // objRetorno.TipoDado = objeto.TipoDado; // objRetorno.Valor = objeto.Valor; // retorno.Add("ParametroGlobal", objRetorno); // resultadoPersistencia.Sucesso = true; // resultadoPersistencia.Mensagem = "Integração ocorrida com sucesso"; // } // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // } // catch (Exception e) // { // resultadoPersistencia.Sucesso = false; // resultadoPersistencia.Mensagem = SDKore.Helper.Error.Handler(e); // retorno.Add("Resultado", resultadoPersistencia); // return CriarMensagemRetorno<Pollux.MSG0111R1>(numeroMensagem, retorno); // //throw new ArgumentException(e.Message); // } //} #endregion #region Definir Propriedades public ParametroGlobal DefinirPropriedades(Intelbras.Message.Helper.MSG0111 xml) { ParametroGlobal crm = new ParametroGlobal(this.Organizacao, this.IsOffline); //Obrigatorio TipodeParametroGlobal tipoParamentro = new Servicos.TipodeParametroGlobalService(this.Organizacao, this.IsOffline).ObterPor(xml.TipoParametroGlobal); if (tipoParamentro != null && tipoParamentro.Codigo.HasValue) { tipoParamentroCod = tipoParamentro.Codigo.Value; crm.TipoParametro = new Lookup(tipoParamentro.ID.Value, ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "TipoParametroGlobal/Codigo não cadastrada no Crm."; return(crm); } //Não Obrigatório if (!String.IsNullOrEmpty(xml.CodigoBeneficio)) { if (xml.CodigoBeneficio.Length == 36) { crm.Beneficio = new Lookup((Guid)(TransformaGuid(xml.CodigoBeneficio)), ""); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid)."; return(crm); } } //Não obrigatorio if (!String.IsNullOrEmpty(xml.CodigoClassificacao)) { Classificacao classificacao = new Servicos.ClassificacaoService(this.Organizacao, this.IsOffline).BuscaClassificacao(new Guid(xml.CodigoClassificacao)); if (classificacao != null) { crm.Classificacao = new Lookup(classificacao.ID.Value, ""); classificacaoId = classificacao.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Classificação não cadastrada no Crm."; return(crm); } } //Não obrigatorio if (!String.IsNullOrEmpty(xml.CodigoCategoria)) { Categoria categoria = new Servicos.CategoriaService(this.Organizacao, this.IsOffline).ObterPor(new Guid(xml.CodigoCategoria)); if (categoria != null) { crm.Categoria = new Lookup(categoria.ID.Value, ""); categoriaId = categoria.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Categoria não cadastrada no Crm."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoCompromisso)) { if (xml.CodigoCompromisso.Length == 36) { crm.Compromisso = new Lookup(new Guid(xml.CodigoCompromisso), ""); compromissoId = new Guid(xml.CodigoCompromisso); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoCompromisso fora do padrão (Guid)."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoBeneficio)) { if (xml.CodigoBeneficio.Length == 36) { crm.Beneficio = new Lookup(new Guid(xml.CodigoBeneficio), ""); beneficioId = new Guid(xml.CodigoBeneficio); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador CodigoBeneficio fora do padrão (Guid)."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoUnidadeNegocio)) { UnidadeNegocio unidadeNeg = new Servicos.UnidadeNegocioService(this.Organizacao, this.IsOffline).BuscaUnidadeNegocioPorChaveIntegracao(xml.CodigoUnidadeNegocio); if (unidadeNeg != null) { crm.UnidadeNegocio = new Lookup(unidadeNeg.ID.Value, ""); unidadeNegocioId = unidadeNeg.ID.Value; } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "UnidadeNegocio não cadastrada no Crm."; return(crm); } } //Não Obrigatorio if (!String.IsNullOrEmpty(xml.CodigoNivelPosVenda)) { if (xml.CodigoNivelPosVenda.Length == 36) { crm.NivelPosVenda = new Lookup(new Guid(xml.CodigoNivelPosVenda), ""); nivelPosVendaId = new Guid(xml.CodigoNivelPosVenda); } else { resultadoPersistencia.Sucesso = false; resultadoPersistencia.Mensagem = "Identificador NivelPosVenda fora do padrão (Guid)."; return(crm); } } return(crm); }