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