示例#1
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var                         context           = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            ITracingService             trace             = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IOrganizationServiceFactory serviceFactory    = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service           = serviceFactory.CreateOrganizationService(null);
            var                         ServiceListaPreco = new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(context.OrganizationName, context.IsExecutingOffline, service);

            try
            {
                var entidade = ((Entity)context.InputParameters["Target"]).Parse <Domain.Model.ItemListaPreco>(context.OrganizationName, context.IsExecutingOffline, service);

                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                case Domain.Enum.Plugin.MessageName.Create:

                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        ServiceListaPreco.VerificaBUItemXListaDePreco(entidade);
                    }
                    break;

                case Domain.Enum.Plugin.MessageName.Update:

                    if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                    {
                        var entidadePre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.ItemListaPreco>(context.OrganizationName, context.IsExecutingOffline);

                        if (entidade.ListaPrecos == null)
                        {
                            entidade.ListaPrecos = new SDKore.DomainModel.Lookup(entidadePre.ListaPrecos.Id, SDKore.Crm.Util.Utility.GetEntityName <Intelbras.CRM2013.Domain.Model.ListaPreco>());
                        }

                        if (entidade.ProdutoID == null)
                        {
                            entidade.ProdutoID = new SDKore.DomainModel.Lookup(entidadePre.ProdutoID.Id, SDKore.Crm.Util.Utility.GetEntityName <Intelbras.CRM2013.Domain.Model.Product>());
                        }

                        ServiceListaPreco.VerificaBUItemXListaDePreco(entidade);
                    }
                    break;
                }
            }
            catch (Exception ex)
            {
                trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), "Product Price Level", DateTime.Now));
                trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
示例#2
0
        public Contato DefinirPropriedades(Intelbras.Message.Helper.MSG0058 xml)
        {
            var crm = new Contato(this.Organizacao, this.IsOffline);

            #region Propriedades Crm->Xml
            crm.IntegrarNoPlugin = true;
            if (!String.IsNullOrEmpty(xml.Email))
            {
                crm.Email1 = xml.Email;
            }
            else
            {
                crm.AddNullProperty("Email1");
            }

            if (!String.IsNullOrEmpty(xml.EmailAlternativo))
            {
                crm.Email2 = xml.EmailAlternativo;
            }
            else
            {
                crm.AddNullProperty("Email2");
            }

            if (!String.IsNullOrEmpty(xml.Naturalidade))
            {
                crm.Naturalidade = xml.Naturalidade;
            }

            else
            {
                crm.AddNullProperty("Naturalidade");
            }

            if (!String.IsNullOrEmpty(xml.Nacionalidade))
            {
                crm.Nacionalidade = xml.Nacionalidade;
            }
            else
            {
                crm.AddNullProperty("Nacionalidade");
            }

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

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

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

            if (!String.IsNullOrEmpty(xml.RamalFax))
            {
                crm.RamalFax = xml.RamalFax;
            }
            else
            {
                crm.AddNullProperty("RamalFax");
            }

            if (!String.IsNullOrEmpty(xml.Celular))
            {
                crm.TelefoneCelular = xml.Celular;
            }
            else
            {
                crm.AddNullProperty("TelefoneCelular");
            }

            if (!String.IsNullOrEmpty(xml.TelefoneAssistente))
            {
                crm.TelefoneAssistente = xml.TelefoneAssistente;
            }
            else
            {
                crm.AddNullProperty("TelefoneAssistente");
            }

            if (!String.IsNullOrEmpty(xml.CNPJ))
            {
                if (xml.CNPJ.Length == 11)
                {
                    crm.CpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCpf(xml.CNPJ);
                }
                else
                {
                    crm.CpfCnpj = xml.CNPJ;
                }
            }
            else if (!String.IsNullOrEmpty(xml.CPF))
            {
                if (xml.CPF.Length == 11)
                {
                    crm.CpfCnpj = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCpf(xml.CPF);
                }
                else
                {
                    crm.CpfCnpj = xml.CPF;
                }
            }
            else
            {
                crm.AddNullProperty("CpfCnpj");
            }

            if (!String.IsNullOrEmpty(xml.TipoObjetoCanal) && !String.IsNullOrEmpty(xml.Canal))
            {
                string tipoObjetoCanal;
                if (xml.TipoObjetoCanal == "account" || xml.TipoObjetoCanal == "contact")
                {
                    tipoObjetoCanal = xml.TipoObjetoCanal;
                    crm.AssociadoA  = new Lookup(new Guid(xml.Canal), xml.TipoObjetoCanal);
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "TipoObjetoCanal ou Canal fora do padrão.";
                    return(crm);
                }
            }
            else
            {
                crm.AddNullProperty("AssociadoA");
            }
            //Pode ser um Representante, que não tenha ligação com nenhum canal
            //else
            //{
            //    resultadoPersistencia.Sucesso = false;
            //    resultadoPersistencia.Mensagem = "TipoObjetoCanal ou Canal não enviado.";
            //    return crm;
            //}

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

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

            if (xml.DataNascimento.HasValue)
            {
                crm.Aniversario = xml.DataNascimento.Value;
            }
            else
            {
                crm.AddNullProperty("Aniversario");
            }

            if (!String.IsNullOrEmpty(xml.TelefoneGerente))
            {
                crm.TelefoneGerente = xml.TelefoneGerente;
            }
            else
            {
                crm.AddNullProperty("TelefoneGerente");
            }

            if (!String.IsNullOrEmpty(xml.RamalTelefoneAlternativo))
            {
                crm.Ramal2 = xml.RamalTelefoneAlternativo;
            }
            else
            {
                crm.AddNullProperty("Ramal2");
            }

            if (!String.IsNullOrEmpty(xml.RG))
            {
                crm.DocIdentidade = xml.RG;
            }
            else
            {
                crm.AddNullProperty("DocIdentidade");
            }

            if (xml.Escolaridade.HasValue && xml.Escolaridade.Value != -1)
            {
                crm.Escolaridade = xml.Escolaridade.Value;
            }
            else
            {
                crm.AddNullProperty("Escolaridade");
            }

            if (!String.IsNullOrEmpty(xml.TelefoneAlternativo))
            {
                crm.TelefoneComercial2 = xml.TelefoneAlternativo;
            }
            else
            {
                crm.AddNullProperty("TelefoneComercial2");
            }

            if (xml.TipoContato.HasValue)
            {
                crm.TipoRelacao = xml.TipoContato.Value;
            }
            else
            {
                crm.AddNullProperty("TipoRelacao");
            }

            if (!String.IsNullOrEmpty(xml.Telefone))
            {
                crm.TelefoneComercial = xml.Telefone;
            }
            else
            {
                crm.AddNullProperty("TelefoneComercial");
            }

            if (!String.IsNullOrEmpty(xml.NomeContato))
            {
                crm.PrimeiroNome = xml.NomeContato;
            }
            if (!String.IsNullOrEmpty(xml.DescricaoContato))
            {
                crm.Descricao = xml.DescricaoContato;
            }
            else
            {
                crm.AddNullProperty("Descricao");
            }

            if (!String.IsNullOrEmpty(xml.NumeroContato))
            {
                crm.NumeroContato = xml.NumeroContato;
            }
            else
            {
                crm.AddNullProperty("NumeroContato");
            }

            if (!String.IsNullOrEmpty(xml.SegundoNome))
            {
                crm.SegundoNome = xml.SegundoNome;
            }
            else
            {
                crm.AddNullProperty("SegundoNome");
            }

            if (!String.IsNullOrEmpty(xml.Ramal))
            {
                crm.Ramal1 = xml.Ramal;
            }
            else
            {
                crm.AddNullProperty("Ramal1");
            }

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

            if (!String.IsNullOrEmpty(xml.OrgaoExpeditor))
            {
                crm.EmissorDocIdentidade = xml.OrgaoExpeditor;
            }
            else
            {
                crm.AddNullProperty("EmissorDocIdentidade");
            }

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

            if (!String.IsNullOrEmpty(xml.NomeGerente))
            {
                crm.Gerente = xml.NomeGerente;
            }
            else
            {
                crm.AddNullProperty("Gerente");
            }

            if (!String.IsNullOrEmpty(xml.NomeFilhos))
            {
                crm.NomeFilhos = xml.NomeFilhos;
            }
            else
            {
                crm.AddNullProperty("NomeFilhos");
            }

            if (!String.IsNullOrEmpty(xml.Fax))
            {
                crm.Fax = xml.Fax;
            }
            else
            {
                crm.AddNullProperty("Fax");
            }

            if (!String.IsNullOrEmpty(xml.NomeAssistente))
            {
                crm.Assistente = xml.NomeAssistente;
            }
            else
            {
                crm.AddNullProperty("Assistente");
            }

            if (!String.IsNullOrEmpty(xml.Saudacao))
            {
                crm.Saudacao = xml.Saudacao;
            }
            else
            {
                crm.AddNullProperty("Saudacao");
            }

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

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

            if (xml.DataEspecial.HasValue)
            {
                crm.DatasEspeciais = xml.DataEspecial.Value;
            }
            else
            {
                crm.AddNullProperty("DatasEspeciais");
            }

            if (xml.TemFilhos.HasValue)
            {
                crm.TemFilhos = xml.TemFilhos.Value == 2 ? 0 : 1;
            }
            else
            {
                crm.AddNullProperty("TemFilhos");
            }

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

            if (!String.IsNullOrEmpty(xml.Departamento))
            {
                crm.Departamento = xml.Departamento;
            }
            else
            {
                crm.AddNullProperty("Departamento");
            }

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

            if (!String.IsNullOrEmpty(xml.DescricaoPapelCanal))
            {
                crm.DescricaoPapelCanal = xml.DescricaoPapelCanal;
            }
            else
            {
                crm.AddNullProperty("DescricaoPapelCanal");
            }

            if (xml.ListaAreaAtuacao != null && xml.ListaAreaAtuacao.Count > 0)
            {
                crm.AreaAtuacaoTexto = "";
                foreach (var areaAtuacao in xml.ListaAreaAtuacao)
                {
                    if (!String.IsNullOrEmpty(areaAtuacao.ToString()))
                    {
                        crm.AreaAtuacaoTexto += areaAtuacao.ToString() + ",";
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Área de Atuação " + areaAtuacao.ToString() + " não contém um código válido";
                        return(null);
                    }
                }
            }

            if (!String.IsNullOrEmpty(xml.DescricaoAreaAtuacao))
            {
                crm.DescricaoAreaAtuacao = xml.DescricaoAreaAtuacao;
            }
            else
            {
                crm.AddNullProperty("DescricaoAreaAtuacao");
            }

            if (!String.IsNullOrEmpty(xml.Sobrenome))
            {
                crm.Sobrenome = xml.Sobrenome;
            }
            else
            {
                crm.AddNullProperty("Sobrenome");
            }

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

            if (!String.IsNullOrEmpty(xml.CodigoContato))
            {
                crm.ID = new Guid(xml.CodigoContato);
            }

            if (!String.IsNullOrEmpty(xml.Regiao))
            {
                crm.Endereco1Regiaoid = new Lookup(new Guid(xml.Regiao), "");
            }
            else
            {
                crm.AddNullProperty("Endereco1Regiaoid");
            }

            if (!String.IsNullOrEmpty(xml.NomeConjuge))
            {
                crm.NomeConjuge = xml.NomeConjuge;
            }
            else
            {
                crm.AddNullProperty("NomeConjuge");
            }

            if (xml.IntegraIntelbrasPontua != null)
            {
                crm.IntegraIntelbrasPontua = xml.IntegraIntelbrasPontua;
            }
            else
            {
                crm.IntegraIntelbrasPontua = false;
            }

            crm.IntegradoEm          = DateTime.Now;
            crm.IntegradoPor         = usuarioIntegracao.NomeCompleto;
            crm.UsuarioIntegracao    = xml.LoginUsuario;
            crm.IntegrarNoBarramento = true;

            if (!String.IsNullOrEmpty(xml.IMEI))
            {
                crm.IMEI = xml.IMEI;
            }
            else
            {
                crm.AddNullProperty("IMEI");
            }

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

            if (xml.AcessoAPP.HasValue)
            {
                crm.AcessoAPPISOL = xml.AcessoAPP;
            }

            if (!string.IsNullOrEmpty(xml.Treinamentos))
            {
                crm.Treinamento = xml.Treinamentos;
            }

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

            #region Services

            if (!String.IsNullOrEmpty(xml.Loja))
            {
                crm.Loja = new Lookup(new Guid(xml.Loja), "");
            }
            else
            {
                crm.AddNullProperty("Loja");
            }

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

            crm.Status = xml.Situacao;

            if (xml.CodigoCliente.HasValue)
            {
                crm.CodigoRemetente = xml.CodigoCliente.ToString();
            }

            // Moeda
            if (!String.IsNullOrEmpty(xml.Moeda))
            {
                Model.Moeda moeda = new Model.Moeda(this.Organizacao, this.IsOffline);
                moeda = new Intelbras.CRM2013.Domain.Servicos.MoedaService(this.Organizacao, this.IsOffline).BuscaMoedaPorNome(xml.Moeda);

                if (moeda != null && moeda.ID.HasValue)
                {
                    crm.Moeda = new Lookup(moeda.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "Moeda não encontrado!";
                    return(crm);
                }
            }
            else
            {
                crm.AddNullProperty("Moeda");
            }

            // ListaPreco
            if (!String.IsNullOrEmpty(xml.ListaPreco))
            {
                Model.ListaPreco listaPreco = new Model.ListaPreco(this.Organizacao, this.IsOffline);
                listaPreco = new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(this.Organizacao, this.IsOffline).BuscaListaPreco(xml.ListaPreco);

                if (listaPreco != null && listaPreco.ID.HasValue)
                {
                    crm.ListaPrecos = new Lookup(listaPreco.ID.Value, "");
                }
                else
                {
                    resultadoPersistencia.Sucesso  = false;
                    resultadoPersistencia.Mensagem = "ListaPreco não encontrado!";
                    return(crm);
                }
            }
            else
            {
                crm.AddNullProperty("ListaPrecos");
            }

            if (xml.EnderecoPrincipal != null)
            {
                // Cidade
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Cidade))
                {
                    Model.Municipio cidade = new Model.Municipio(this.Organizacao, this.IsOffline);
                    cidade = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaMunicipio(xml.EnderecoPrincipal.Cidade);

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

                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Cidade não encontrada!";
                        return(crm);
                    }
                }

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

                    if (estado != null && estado.ID.HasValue)
                    {
                        crm.Endereco1Estadoid = new Lookup(estado.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "Estado não encontrado!";
                        return(crm);
                    }
                }

                // País
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Pais))
                {
                    Model.Pais pais = new Model.Pais(this.Organizacao, this.IsOffline);
                    pais = new Intelbras.CRM2013.Domain.Servicos.EnderecoServices(this.Organizacao, this.IsOffline).BuscaPais(xml.EnderecoPrincipal.Pais);

                    if (pais != null && pais.ID.HasValue)
                    {
                        crm.Endereco1Pais = new Lookup(pais.ID.Value, "");
                    }
                    else
                    {
                        resultadoPersistencia.Sucesso  = false;
                        resultadoPersistencia.Mensagem = "País não encontrado!";
                        return(crm);
                    }
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Endereço Principal não enviado!";
                return(crm);
            }

            ///TODO: ClientePotencialOriginador - Aguardar Rollout - Modelagem não prevista para esta etapa.

            if (!String.IsNullOrEmpty(xml.ClientePotencialOriginador))
            {
                crm.ClientePotencialOriginador = new Lookup(new Guid(xml.ClientePotencialOriginador), "");
            }
            else
            {
                crm.AddNullProperty("ClientePotencialOriginador");
            }

            #endregion

            #region Bloco Endereco
            ///Bloco Endereco

            if (xml.EnderecoPrincipal != null)
            {
                if (xml.EnderecoPrincipal.TipoEndereco.HasValue)
                {
                    crm.Endereco1TipoEndereco = xml.EnderecoPrincipal.TipoEndereco.Value;
                }
                else
                {
                    crm.AddNullProperty("Endereco1TipoEndereco");
                }

                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.NomeEndereco))
                {
                    crm.Endereco1Nome = xml.EnderecoPrincipal.NomeEndereco;
                }
                else
                {
                    crm.AddNullProperty("Endereco1Nome");
                }

                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Logradouro))
                {
                    crm.Endereco1Rua = xml.EnderecoPrincipal.Logradouro;
                }
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Numero))
                {
                    crm.Endereco1Numero = xml.EnderecoPrincipal.Numero;
                }
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Complemento))
                {
                    crm.Endereco1Complemento = xml.EnderecoPrincipal.Complemento;
                }
                else
                {
                    crm.AddNullProperty("Endereco1Complemento");
                }

                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Bairro))
                {
                    crm.Endereco1Bairro = xml.EnderecoPrincipal.Bairro;
                }
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.CEP))
                {
                    crm.Endereco1CEP = Intelbras.CRM2013.Domain.Servicos.Helper.FormatarCep(xml.EnderecoPrincipal.CEP);
                }
                if (!String.IsNullOrEmpty(xml.EnderecoPrincipal.Telefone))
                {
                    crm.Endereco1Telefone = xml.EnderecoPrincipal.Telefone;
                }
                else
                {
                    crm.AddNullProperty("Endereco1Telefone");
                }

                if (xml.MetodoEntrega.HasValue)
                {
                    crm.Endereco1MetodoEntrega = xml.MetodoEntrega.Value;
                }
                else
                {
                    crm.AddNullProperty("Endereco1MetodoEntrega");
                }
            }
            else
            {
                resultadoPersistencia.Sucesso  = false;
                resultadoPersistencia.Mensagem = "Endereço Principal não enviado!";
                return(crm);
            }

            #endregion

            #endregion

            return(crm);
        }