Beispiel #1
0
        public FacadeContato(IPluginExecutionContext contexto)
        {
            entidade      = PluginHelper.GetDynamicEntity(contexto);
            this.contexto = contexto;

            this.Organizacao = contexto.OrganizationName;
            this.Id          = PluginHelper.GetEntityId(contexto);
            this.MessageName = contexto.MessageName;

            var factory = new FactoryContato(this.Organizacao);

            if (this.PreImage != null)
            {
                this.contato = factory.CriarContato(this.PreImage, entidade);
            }
            else if (this.PostImage != null)
            {
                this.contato = factory.CriarContato(this.PostImage, entidade);
            }
            else
            {
                this.contato = factory.CriarContato(entidade);
                if (this.contato.Id == Guid.Empty)
                {
                    this.contato.Id = PluginHelper.GetEntityId(contexto);
                }
            }
        }
Beispiel #2
0
        public void PodeIntegrar(ref DynamicEntity entity)
        {
            if (!entity.Properties.Contains("parentcustomerid") &&
                !entity.Properties.Contains("firstname") &&
                !entity.Properties.Contains("emailaddress1"))
            {
                return;
            }

            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_status_integracao", string.Empty);
            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_mensagem", string.Empty);
            entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_chave_integracao", string.Empty);


            // var factory = new FactoryContato(this.Organizacao);
            // var contatoAtual = factory.CriarContato(PluginHelper.GetDynamicEntity(contexto));


            bool integra = this.contato.PodeIntegrarComERP();

            this.IntegraConnector(ref entity, integra);

            // Se o contato estiver integrado com ERP e após salvar não cair mais na regra, precisa excluir de lá.
            if (this.MessageName == Microsoft.Crm.Sdk.MessageName.Update && !integra)
            {
                if (this.PreImage == null)
                {
                    throw new ArgumentNullException("PreImage", "Não foi encontrado a preImage");
                }

                var factory       = new FactoryContato(this.Organizacao);
                var contatoAntigo = factory.CriarContato(this.PreImage);

                if (contatoAntigo.PodeIntegrarComERP())
                {
                    this.IntegraConnector(ref entity, true, 'D');
                }
            }
        }