private void IntegraConnector(ref DynamicEntity entity, bool integra, char action = ' ') { if (integra) { entity = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entity, "new_exporta_erp", "1"); } else { entity.Properties.Remove("new_exporta_erp"); } if (action == ' ' && integra) { switch (this.MessageName) { case Microsoft.Crm.Sdk.MessageName.Create: action = 'C'; break; case Microsoft.Crm.Sdk.MessageName.Update: action = 'W'; break; case Microsoft.Crm.Sdk.MessageName.Delete: action = 'D'; break; } } this.contexto.SharedVariables.Properties.Add(new PropertyBagEntry("action", action)); }
private DynamicEntity ValidaStatusDoDiagnostico(DynamicEntity entidade) { var quantidadeEhNulaOuZero = true; var geraTroca = true; if (entidade.Properties.Contains("new_qtd_solicitada")) { if ((entidade.Properties["new_qtd_solicitada"] as CrmNumber).Value != 0) { quantidadeEhNulaOuZero = false; } } if (entidade.Properties.Contains("new_gera_troca")) { if ((entidade.Properties["new_gera_troca"] as CrmBoolean).Value == false) { geraTroca = false; } } if (quantidadeEhNulaOuZero || !geraTroca) { entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "statuscode", new Status() { Value = 4 }); } return(entidade); }
private void Create() { Cliente cliente = new FactoryCliente(this.OrganizacaoName, this.Id).Instanciar(this.Entidade); if (cliente.ExisteDuplicidade()) { throw new ArgumentException("O cliente não pode ser criado, existe duplicidade no CPF/CNPJ ou Código do Cliente"); } PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(this.Entidade, "new_sem_masc_cnpj_cpf", cliente.ObterCpfCnpjSemMascara()); }
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'); } } }
protected void ModeloEmailIsol(IPluginExecutionContext context) { if (entidade.Properties.Contains("regardingobjectid") || entidade.Properties.Contains("description")) { Lookup regardingobjectid = null; string description = string.Empty; DynamicEntity preImage = GetPreImage(context); if (preImage != null) { if (preImage.Properties.Contains("regardingobjectid")) { regardingobjectid = preImage.Properties["regardingobjectid"] as Lookup; } if (preImage.Properties.Contains("description")) { description = preImage.Properties["description"].ToString(); } } if (entidade.Properties.Contains("regardingobjectid")) { regardingobjectid = entidade.Properties["regardingobjectid"] as Lookup; } if (entidade.Properties.Contains("description")) { description = entidade.Properties["description"].ToString(); } if (regardingobjectid != null) { if (regardingobjectid.type == EntityName.incident.ToString()) { if (description.Contains("{link_ocorrencia_isol}")) { string link = string.Format("<a href=\"{0}\">Clique Aqui</a>", CriarLink(regardingobjectid.Value, "LINK_ISOL_FECHAMENTO", context.OrganizationName)); description = description.Replace("{link_ocorrencia_isol}", link); } if (description.Contains("{link_ocorrencia_impressao}")) { string link = string.Format("<a href=\"{0}\">Clique Aqui</a>", CriarLink(regardingobjectid.Value, "LINK_ISOL_OS", context.OrganizationName)); description = description.Replace("{link_ocorrencia_impressao}", link); } if (description.Contains("{valor_linha_contrato}")) { var ocorrencia = new Ocorrencia() { Id = regardingobjectid.Value }; var linhaDeContrato = DomainService.RepositoryLinhaDoContrato.ObterPor(ocorrencia, "new_valor_pago"); string valorPago = (linhaDeContrato != null && linhaDeContrato.PrecoPago.HasValue) ? linhaDeContrato.PrecoPago.Value.ToString("F") : "0,00"; description = description.Replace("{valor_linha_contrato}", valorPago); } entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "description", description); } } } }
public void Execute(IPluginExecutionContext context) { DateTime inicioExecucao = DateTime.Now; try { var prop = context.InputParameters.Properties; if (prop.Contains("Target") && prop["Target"] is DynamicEntity) { PluginHelper.LogEmArquivo(context, "INICIO;", inicioExecucao.ToString(), ""); var organizacao = new Organizacao(context.OrganizationName); var entidade = prop["Target"] as DynamicEntity; FacadeOcorrencia facade = new FacadeOcorrencia(context); facade.Atender(); #region inserir resultado do atendimento do contexto #region reincidencia if (facade.Ocorrencia.OcorrenciaPai != null) { if (facade.Ocorrencia.OcorrenciaPai.Id != Guid.Empty) { entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_reincidenteid", new Lookup("incident", facade.Ocorrencia.OcorrenciaPai.Id)); } if (facade.Ocorrencia.OcorrenciaPai.DataDeCriacao != DateTime.MinValue) { context.SharedVariables.Properties.Add( new PropertyBagEntry("dataCriacaoReincidente", facade.Ocorrencia.OcorrenciaPai.DataDeCriacao.ToString()) ); } } #endregion #region SLA var sla = new CrmDateTime() { IsNull = true, IsNullSpecified = true }; if (facade.Ocorrencia.DataSLA.HasValue) { sla = new CrmDateTime(facade.Ocorrencia.DataSLA.Value.ToString("yyyy-MM-dd HH:mm:ss")); } entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "followupby", sla); var escalacao = new CrmDateTime() { IsNull = true, IsNullSpecified = true }; if (facade.Ocorrencia.DataEscalacao.HasValue) { escalacao = new CrmDateTime(facade.Ocorrencia.DataEscalacao.Value.ToString("yyyy-MM-dd HH:mm:ss")); } entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_data_hora_escalacao", escalacao); #endregion #region árvore de assunto if (facade.Ocorrencia.EstruturaDeAssunto != null) { foreach (Assunto item in facade.Ocorrencia.EstruturaDeAssunto) { if (item.TipoDeAssunto != TipoDeAssunto.Vazio) { entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, item.CampoRelacionadoNaOcorrencia, new Lookup("subject", item.Id)); } } } #endregion #region Valor do Serviço if (facade.Ocorrencia.ValorServico.HasValue) { var ValorServicoCRM = new CrmMoney(facade.Ocorrencia.ValorServico.Value); entidade = PluginHelper.AdicionarPropriedadeEmEntidadeDinamica(entidade, "new_valor_servico", ValorServicoCRM); } #endregion #endregion PluginHelper.LogEmArquivo(context, "FIM;", inicioExecucao.ToString(), DateTime.Now.ToString()); } } catch (Exception ex) { PluginHelper.TratarExcecao(ex, TipoDeLog.PluginIncident); PluginHelper.LogEmArquivo(context, "ERRO;", inicioExecucao.ToString(), DateTime.Now.ToString()); } }