locked
Plugin MessageName Create for update record RRS feed

  • Question

  • Hi

    I have a plugin that identifies the record if it exists it updates. If you are new should be the path of creation. The plugin is updating and creating a new record.

    Code:

            public void Execute(IServiceProvider serviceProvider)
            {
                try
                {
                    Entity entidade = null;
                    IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) entidade = (Entity)context.InputParameters["Target"];
    
                    IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                    IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);
    
                    if (context.MessageName.ToUpper() != "CREATE") { return; }
                    if (entidade != null)
                    {
                       
                        ColumnSet attributes = new ColumnSet(new string[] { "corp_chave_integracao", "corp_grupo_empresaid", "corp_nome_grupo" });
    
                        QueryExpression queryL = new QueryExpression("corp_grupo_empresa");
                       
                         queryL.ColumnSet = attributes;
                       // queryL.ColumnSet = new ColumnSet("corp_chave_integracao", "corp_grupo_empresaid", "corp_nome_grupo");
    
                        queryL.Criteria.AddCondition(new ConditionExpression("corp_chave_integracao", ConditionOperator.Equal, entidade.Attributes["corp_chave_integracao"]));
    
                        var colecaoL = service.RetrieveMultiple(queryL);
    
                        
                        if (colecaoL.Entities.Count > 0)
                        {
                          
    
                                var nomeGrupo = entidade.Attributes["corp_nome_grupo"];
                                var ChaveIntegracao = entidade.Attributes["corp_chave_integracao"];
                                
                                Entity grupoEmpresa = new Entity("corp_grupo_empresa");
    
                                //grupoEmpresa = service.Retrieve("corp_grupo_empresa", colecaoL.Entities[0].Id, attributes);
    
                                grupoEmpresa["corp_nome_grupo"] = nomeGrupo;
                                grupoEmpresa["corp_chave_integracao"] = ChaveIntegracao;
                                grupoEmpresa["corp_grupo_empresaid"] = colecaoL.Entities[0].Id;
    
                                service.Update(grupoEmpresa);
    
                                //throw new InvalidPluginExecutionException();                            
    
                            
                        }
    
                    }
    
                }
                catch (Exception ex)
                {
                    //Log.Tratar(ex);
                    throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex);
                }
    
            }



    • Edited by Tiagovnrio Friday, July 25, 2014 2:14 PM
    Friday, July 25, 2014 1:46 PM