Пример #1
0
        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));
            }
        }
Пример #2
0
        //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);
        }