示例#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);



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

                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        var entidade = (Entity)context.InputParameters["Target"];
                        Domain.Model.ProdutoEstabelecimento produtoEstabelecimento = entidade.Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline, service);
                        string lstResposta = new Domain.Servicos.ProdutoEstabelecimentoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(produtoEstabelecimento);
                    }

                    break;

                    #endregion

                    #region Update

                case Domain.Enum.Plugin.MessageName.Update:

                    if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity)
                    {
                        var    prodEstabPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline, service);
                        string lstResposta   = new Domain.Servicos.ProdutoEstabelecimentoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(prodEstabPost);
                    }

                    break;

                    #endregion

                    #region Delete

                case Domain.Enum.Plugin.MessageName.Delete:

                    if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                    {
                        var    prodEstabPost = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline, service);
                        string lstResposta   = new Domain.Servicos.ProdutoEstabelecimentoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramentoDelete(prodEstabPost);
                    }
                    break;

                    #endregion
                }
            }
            catch (Exception ex)
            {
                trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), "Account", DateTime.Now));
                trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
示例#2
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            ProEstabServ = new Domain.Servicos.ProdutoEstabelecimentoService(context.OrganizationName, context.IsExecutingOffline);

            try
            {
                Entity entidade = new Entity();
                Domain.Model.ProdutoEstabelecimento prodEstabAtual = new Domain.Model.ProdutoEstabelecimento(context.OrganizationName, context.IsExecutingOffline);

                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                    {
                    case Domain.Enum.Plugin.MessageName.Create:

                        #region Popula o objeto prodEstabAtual com o contexto

                        entidade       = (Entity)context.InputParameters["Target"];
                        prodEstabAtual = entidade.Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline);

                        #endregion

                        JaExisteProduto(prodEstabAtual);

                        break;

                    case Domain.Enum.Plugin.MessageName.Update:

                        if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                        {
                            #region Popula o objeto ProdEstabOriginal com a pre-image

                            entidade = (Entity)context.PreEntityImages["imagem"];
                            Domain.Model.ProdutoEstabelecimento ProdEstabOriginal = entidade.Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline);

                            #endregion

                            #region Popula objeto ProdEstabAlterado com o contexto alterado

                            Entity entidadeAlterada = (Entity)context.InputParameters["Target"];
                            Domain.Model.ProdutoEstabelecimento ProdEstabAlterado = entidadeAlterada.Parse <Domain.Model.ProdutoEstabelecimento>(context.OrganizationName, context.IsExecutingOffline);

                            #endregion

                            #region Popula objeto prodEstabAtual mesclando o que foi alterado com os dados originais, para efeito de validação

                            prodEstabAtual.Produto = ProdEstabAlterado.Produto != null ? ProdEstabAlterado.Produto : ProdEstabOriginal.Produto;

                            prodEstabAtual.ID = ProdEstabAlterado.ID != null ? ProdEstabAlterado.ID : ProdEstabOriginal.ID;


                            if (ProdEstabAlterado.Estabelecimento == null)
                            {
                                return;
                            }

                            if (prodEstabAtual.Estabelecimento == null)
                            {
                                if (ProdEstabOriginal.Estabelecimento.Id != ProdEstabAlterado.Estabelecimento.Id)
                                {
                                    return;
                                }
                            }

                            #endregion


                            if (prodEstabAtual.Estabelecimento.Id != ProdEstabAlterado.Estabelecimento.Id)
                            {
                                return;
                            }

                            JaExisteProduto(prodEstabAtual);
                        }

                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                var msg = Util.Utilitario.TratarErro(ex);
                throw new InvalidPluginExecutionException(msg);
            }
        }