Пример #1
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var historicoDistService = new Domain.Servicos.HistoricoDistribuidorService(context.OrganizationName, context.IsExecutingOffline, adminService);

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:
                var entityTargetCreate = context.GetContextEntity();
                var histDistCreate     = entityTargetCreate.Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);

                histDistCreate.Status = (int)Domain.Enum.HistoricoDistribuidor.Statecode.Ativo;
                var historicDistService = new Domain.Servicos.HistoricoDistribuidorService(context.OrganizationName, context.IsExecutingOffline, adminService);
                if (!histDistCreate.IntegrarNoPlugin || histDistCreate.IntegrarNoPlugin == null || histDistCreate.IntegrarNoPlugin.ToString().Equals(""))
                {
                    historicoDistService.Integrar(histDistCreate);
                }

                break;

            case Domain.Enum.Plugin.MessageName.Update:

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

                var entityMergeUpdate = context.GetContextEntity("postimagem");
                var histDistUpdate    = entityMergeUpdate.Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);

                histDistUpdate.IntegrarNoPlugin = historicoDistribuidor.IntegrarNoPlugin;

                if (!histDistUpdate.IntegrarNoPlugin || histDistUpdate.IntegrarNoPlugin == null || histDistUpdate.IntegrarNoPlugin.ToString().Equals(""))
                {
                    historicoDistService.Integrar(histDistUpdate);
                }

                break;

            case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:
                if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity)
                {
                    var histDistServiceState = new Domain.Servicos.HistoricoDistribuidorService(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var histDist             = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    var crmAdmin = SDKore.Configuration.ConfigurationManager.GetSettingValue("ID_CRMADMIN");

                    if (histDist.ModificadoPor.Id != new Guid(crmAdmin))
                    {
                        histDistServiceState.Integrar(histDist);
                    }
                }

                break;
            }
        }
Пример #2
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();

            AcessoExtranet        mAcessoExtranet        = e.Parse <AcessoExtranet>(context.OrganizationName, context.IsExecutingOffline, adminService);
            AcessoExtranetService sAcessoExtranetService = new AcessoExtranetService(context.OrganizationName, context.IsExecutingOffline, adminService);

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

            case Domain.Enum.Plugin.MessageName.Create:

                sAcessoExtranetService.IntegracaoBarramento(mAcessoExtranet);
                break;

                #endregion

                #region Update

            case Domain.Enum.Plugin.MessageName.Update:
                var acessoExtranet = ((Entity)context.PostEntityImages["imagem"])
                                     .Parse <AcessoExtranet>(context.OrganizationName, context.IsExecutingOffline, userService);

                sAcessoExtranetService.IntegracaoBarramento(acessoExtranet);
                break;

                #endregion
            }
        }
Пример #3
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                var e = context.GetContextEntity();
                Domain.Model.Usuario usuario = e.Parse <Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline, userService);
                var ServiceUser = new UsuarioService(context.OrganizationName, context.IsExecutingOffline, userService);

                var entityTargetUpdate = (Entity)context.InputParameters["Target"];
                if (entityTargetUpdate.Attributes.Contains("itbc_codigodoassistcoml"))
                {
                    var codigodoassistcoml = entityTargetUpdate.Attributes["itbc_codigodoassistcoml"];

                    if (codigodoassistcoml != null)
                    {
                        if (ServiceUser.BuscaPorCodigoAssistente((int)codigodoassistcoml) != null)
                        {
                            if (ServiceUser.BuscaPorCodigoAssistente((int)codigodoassistcoml).CodigoAssistenteComercial != 0)
                            {
                                throw new ArgumentException("Ja existe um usuario com o mesmo Codigo Assistente Comercial. Favor informar outro codigo.");
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #4
0
        private void PreenchimentoDeCampos(ref IPluginExecutionContext context, IOrganizationService adminService)
        {
            var target = context.GetContextEntity();

            if (target.Attributes.Contains("itbc_cnaeid"))
            {
                var cnaeCrm = target.Attributes["itbc_cnaeid"] as Microsoft.Xrm.Sdk.EntityReference;
                if (cnaeCrm != null)
                {
                    var cnae = new Domain.Servicos.CnaeService(context.OrganizationName, context.IsExecutingOffline, adminService).ObterPor(cnaeCrm.Id);


                    if (target.Attributes.Contains("itbc_atividadeeconmicaramodeatividade"))
                    {
                        target.Attributes.Remove("itbc_atividadeeconmicaramodeatividade");
                    }

                    if (target.Attributes.Contains("sic"))
                    {
                        target.Attributes.Remove("sic");
                    }

                    target.Attributes.Add("itbc_atividadeeconmicaramodeatividade", cnae.Denominacao);
                    target.Attributes.Add("sic", cnae.Classe);
                }
            }
        }
Пример #5
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            if (context.GetStage() != Stage.PostOperation)
            {
                return;
            }

            var sAcessoKonviva = new AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, null);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.Create:
            {
                var e = context.GetContextEntity();
                var mAcessoKonviva = e.Parse <Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline);

                if (context.SharedVariables.Contains("IntegraKonviva") && Convert.ToBoolean(context.SharedVariables["IntegraKonviva"]))
                {
                    sAcessoKonviva.IntegracaoBarramento(mAcessoKonviva);
                }
                break;
            }

            case MessageName.Update:
            {
                var acessoKonvivaImagem = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, userService);

                if (context.SharedVariables.Contains("IntegraKonviva") && Convert.ToBoolean(context.SharedVariables["IntegraKonviva"]))
                {
                    sAcessoKonviva.IntegracaoBarramento(acessoKonvivaImagem);
                }
                break;
            }
            }
        }
Пример #6
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
                #region Create

            case MessageName.Create:

                var e     = context.GetContextEntity();
                var valor = e.Parse <ValorDoServicoPorPosto>(context.OrganizationName, context.IsExecutingOffline);
                if (valor.SegmentoId == null && valor.ProdutoId == null)
                {
                    throw new InvalidPluginExecutionException("Ação não executada. É necessário o preenchimentos de Produto ou Segmento.");
                }
                break;

                #endregion

                #region Update

            case MessageName.Update:

                var entityMerge = context.PreEntityImages["imagem"];
                var valorUpdate = entityMerge.Parse <ValorDoServicoPorPosto>(context.OrganizationName, context.IsExecutingOffline);
                if (valorUpdate.SegmentoId == null && valorUpdate.ProdutoId == null)
                {
                    throw new InvalidPluginExecutionException("Ação não executada. É necessário o preenchimentos de Produto ou Segmento.");
                }

                break;

                #endregion
            }
        }
Пример #7
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();

            Intelbras.CRM2013.Domain.Model.CompromissosDoPrograma mCompromissoPrograma = e.Parse <Intelbras.CRM2013.Domain.Model.CompromissosDoPrograma>(context.OrganizationName, context.IsExecutingOffline, userService);
            CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, userService);
            ParametroGlobalService     ServiceParametroGlobal     = new ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, userService);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.Update:
            {
                switch ((Stage)context.Stage)
                {
                case Stage.PostOperation:
                    if (mCompromissoPrograma.TipoMonitoramento == (int)Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas)
                    {
                        Domain.Model.ParametroGlobal paramGlobal = ServiceParametroGlobal.ObterFrequenciaAtividadeChecklist(mCompromissoPrograma.ID.Value);

                        if (paramGlobal == null || paramGlobal.Valor == null)
                        {
                            throw new ApplicationException("Operação cancelada. Parâmetro global de frequência de checkList não existe para este compromisso.");
                        }
                    }
                    break;
                }
            }
            break;
            }
        }
Пример #8
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var compromissoCanalService = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService);

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

                Entity entidade = (Entity)context.InputParameters["Target"];
                CompromissosDoCanal compDoCanal = entidade.Parse <CompromissosDoCanal>(context.OrganizationName, context.IsExecutingOffline, adminService);

                // Comentado devido problema com plugin do CRM2015 - não é possível alterar o OwnerId neste ponto - deixei comentado por enquanto
                //var compromissosDoCanalService = new Domain.Servicos.CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService);
                //entidade = compromissosDoCanalService.AtribuiParaOProprietarioDoCanal(entidade, compDoCanal);
                break;

            case Domain.Enum.Plugin.MessageName.Update:

                var entityTargetUpdate    = context.GetContextEntity();
                var entityPreImagetUpdate = context.PreEntityImages["imagem"];

                foreach (var item in entityTargetUpdate.Attributes)
                {
                    entityPreImagetUpdate.Attributes[item.Key] = item.Value;
                }

                var compromissoCanalMergeUpdate = entityPreImagetUpdate.Parse <CompromissosDoCanal>(context.OrganizationName, context.IsExecutingOffline, adminService);

                AtualizaDataValida(compromissoCanalMergeUpdate, compromissoCanalService, ref entityTargetUpdate);

                break;
            }
        }
Пример #9
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                var e = context.GetContextEntity();

                Intelbras.CRM2013.Domain.Model.Beneficio mBeneficio = e.Parse <Intelbras.CRM2013.Domain.Model.Beneficio>(context.OrganizationName, context.IsExecutingOffline);
                BeneficioService ServiceSolicitacaoBeneficio        = new BeneficioService(context.OrganizationName, context.IsExecutingOffline, adminService);

                switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
                {
                case MessageName.Update:
                {
                    switch ((Stage)context.Stage)
                    {
                    case Stage.PostOperation:
                        ServiceSolicitacaoBeneficio.AtivarOrDesativado(mBeneficio);
                        break;
                    }
                    break;
                }
                }
            }
            catch (Exception erro)
            {
                throw new InvalidPluginExecutionException(erro.Message);
            }
        }
Пример #10
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var historicoDistribuidorService = new Domain.Servicos.HistoricoDistribuidorService(context.OrganizationName, context.IsExecutingOffline, adminService);

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

                var entityTargetCreate = context.GetContextEntity();
                var targetCreate       = entityTargetCreate.Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);
                targetCreate.Status = (int)Domain.Enum.HistoricoDistribuidor.Statecode.Ativo;
                historicoDistribuidorService.ValidaCamposObrigatorios(targetCreate);
                historicoDistribuidorService.ValidaDuplicidade(targetCreate, true);

                var revenda      = new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaConta(targetCreate.Revenda.Id);
                var distribuidor = new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaConta(targetCreate.Distribuidor.Id);

                PreencheNome(ref entityTargetCreate, ref revenda, ref distribuidor);

                break;

            case Domain.Enum.Plugin.MessageName.Update:

                var entityTargetMerge  = context.GetContextEntityMerge("imagem");
                var entityTargetUpdate = context.GetContextEntity();
                var targetUpdate       = entityTargetMerge.Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);
                var entityTarget       = (Entity)context.InputParameters["Target"];
                var contaUp            = entityTarget.Parse <Domain.Model.HistoricoDistribuidor>(context.OrganizationName, context.IsExecutingOffline, adminService);

                entityTargetUpdate.Attributes["itbc_datafim"] = contaUp.DataFim;

                if (targetUpdate.Status.Value == (int)Domain.Enum.HistoricoDistribuidor.Statecode.Ativo)
                {
                    historicoDistribuidorService.ValidaCamposObrigatorios(targetUpdate);
                    historicoDistribuidorService.ValidaDuplicidade(targetUpdate, false);
                }

                var revendaUpdate      = new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaConta(targetUpdate.Revenda.Id);
                var distribuidorUpdate = new Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaConta(targetUpdate.Distribuidor.Id);

                PreencheNome(ref entityTargetUpdate, ref revendaUpdate, ref distribuidorUpdate);
                break;
            }
        }
Пример #11
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                var e = context.GetContextEntity();
                Intelbras.CRM2013.Domain.Model.ProdutoListaPSDPPPSCF mProdutoListaPSD = e.Parse <Intelbras.CRM2013.Domain.Model.ProdutoListaPSDPPPSCF>(context.OrganizationName, context.IsExecutingOffline);
                ProdutoListaPSDService ServiceProdutoListaPSD = new ProdutoListaPSDService(context.OrganizationName, context.IsExecutingOffline);

                switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
                {
                case MessageName.Create:
                {
                    switch ((Stage)context.Stage)
                    {
                    case Stage.PreOperation:
                        if (ServiceProdutoListaPSD.ValidarExistenciaPreCreate(ref mProdutoListaPSD))
                        {
                            throw new ArgumentException("(CRM) Produto já vinculado a Lista corrente.");
                        }
                        break;
                    }
                    break;
                }

                case MessageName.Update:
                {
                    switch ((Stage)context.Stage)
                    {
                    case Stage.PreOperation:
                        if (ServiceProdutoListaPSD.ValidarExistencia(ref mProdutoListaPSD))
                        {
                            throw new ArgumentException("(CRM) Produto já vinculado a Lista corrente.");
                        }

                        Domain.Model.ProdutoListaPSDPPPSCF mProdutoListaPSDImage = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.ProdutoListaPSDPPPSCF>(context.OrganizationName, context.IsExecutingOffline, context.UserId);

                        var listaPrecoPSDPPPSCF_Entity = new Entity(SDKore.Crm.Util.Utility.GetEntityName <ListaPrecoPSDPPPSCF>());
                        listaPrecoPSDPPPSCF_Entity["statuscode"] = new OptionSetValue((int)Domain.Enum.ListaPrecoPSDPPPSCF.StatusIntegracao.NaoIntegrado);

                        if (mProdutoListaPSDImage.PSD != null)
                        {
                            listaPrecoPSDPPPSCF_Entity.Id = mProdutoListaPSDImage.PSD.Id;
                            adminService.Update(listaPrecoPSDPPPSCF_Entity);
                        }

                        break;
                    }
                    break;
                }
                }
            }
            catch (Exception erro)
            {
                throw new InvalidPluginExecutionException(SDKore.Helper.Error.GetMessageError(erro));
            }
        }
Пример #12
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
                #region Create

            case MessageName.Create:

                var e         = context.GetContextEntity();
                var pagamento = e.Parse <PagamentoServico>(context.OrganizationName, context.IsExecutingOffline);
                if (pagamento.Ocorrencia == null)
                {
                    pagamento.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Ocorrencia.Retrieve(pagamento.OcorrenciaId.Id);
                }

                if (pagamento.Ocorrencia != null)
                {
                    if (pagamento.Ocorrencia.LimiteOrcamento.HasValue)
                    {
                        if ((pagamento.Ocorrencia.ObterSomaPagamentos(null) + pagamento.Valor) > pagamento.Ocorrencia.LimiteOrcamento)
                        {
                            throw new ArgumentException("Não é possível salvar. Valor que esta sendo inserido estoura o limite para Ocorrencia.");
                        }
                    }
                }
                break;

                #endregion

                #region Update

            case MessageName.Update:

                var entityOld       = context.PreEntityImages["imagem"];
                var entityUpdate    = (Entity)context.InputParameters["Target"];
                var pagamentoOld    = entityOld.Parse <PagamentoServico>(context.OrganizationName, context.IsExecutingOffline);
                var pagamentoUpdate = entityUpdate.Parse <PagamentoServico>(context.OrganizationName, context.IsExecutingOffline);
                if (pagamentoUpdate.Ocorrencia == null)
                {
                    pagamentoUpdate.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Ocorrencia.Retrieve(pagamentoOld.OcorrenciaId.Id);
                }

                if (pagamentoUpdate.Ocorrencia != null)
                {
                    if (pagamentoUpdate.Ocorrencia.LimiteOrcamento.HasValue)
                    {
                        if ((pagamentoUpdate.Ocorrencia.ObterSomaPagamentos(pagamentoOld) + pagamentoUpdate.Valor) > pagamentoUpdate.Ocorrencia.LimiteOrcamento)
                        {
                            throw new ArgumentException("Não é possível salvar. Valor que esta sendo inserido estoura o limite para Ocorrencia.");
                        }
                    }
                }
                break;
                #endregion
            }
        }
Пример #13
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                    #region Create
                case Domain.Enum.Plugin.MessageName.Create:

                    var parameter     = (Entity)context.InputParameters["Target"];
                    var endereco      = parameter.Parse <Endereco>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var contextCreate = context.GetContextEntity();

                    preencheDados(endereco, ref context, adminService);

                    break;
                    #endregion

                    #region Update
                case Domain.Enum.Plugin.MessageName.Update:

                    var targetUpdate             = (Entity)context.InputParameters["Target"];
                    var enderecoUpdate           = targetUpdate.Parse <Endereco>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var entidadeComValoresFinais = (Entity)context.GetContextEntityMerge("imagem");

                    enderecoUpdate.IntegrarNoPlugin = entidadeComValoresFinais.GetAttributeValue <bool>("itbc_acaocrm");
                    enderecoUpdate.Identificacao    = entidadeComValoresFinais.GetAttributeValue <string>("new_cnpj").GetOnlyNumbers();
                    preencheDados(enderecoUpdate, ref context, adminService);

                    break;
                    #endregion

                    #region Delete
                case Domain.Enum.Plugin.MessageName.Delete:

                    var image          = context.PreEntityImages["imagem"];
                    var enderecoDelete = image.Parse <Endereco>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    enderecoDelete.StatusAtivo = false;
                    if (enderecoDelete.IntegrarNoPlugin)
                    {
                        string xmlResposta = new EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).IntegracaoBarramento(enderecoDelete);
                    }

                    break;
                    #endregion
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #14
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var cnaeService = new Domain.Servicos.CnaeService(context.OrganizationName, context.IsExecutingOffline, adminService);

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:
                var entityTargetCreate = context.GetContextEntity();
                var cnae = entityTargetCreate.Parse <Domain.Model.CNAE>(context.OrganizationName, context.IsExecutingOffline, adminService);

                cnaeService.Integrar(cnae);
                break;

            case Domain.Enum.Plugin.MessageName.Update:
                var entityMergeUpdate = context.GetContextEntity("postimagem");
                var cnaeUpdate        = entityMergeUpdate.Parse <Domain.Model.CNAE>(context.OrganizationName, context.IsExecutingOffline, adminService);

                cnaeService.Integrar(cnaeUpdate);
                break;
            }
        }
Пример #15
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                var e = context.GetContextEntity();
                Domain.Model.Usuario usuario = e.Parse <Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline, userService);
                var ServiceUser = new UsuarioService(context.OrganizationName, context.IsExecutingOffline, userService);

                switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
                {
                case MessageName.Update:
                {
                    #region
                    switch ((Stage)context.Stage)
                    {
                    case Stage.PostOperation:
                        var imagemPre = context.GetContextEntity("imagem", true).Parse <Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline, userService);
                        var imagemPos = context.GetContextEntity("imagem", false).Parse <Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline, userService);

                        new Intelbras.CRM2013.Domain.Servicos.PortfoliodoKeyAccountRepresentantesService(context.OrganizationName, context.IsExecutingOffline, userService).AtualizarCodigosAssistenteSupervisor(imagemPre, imagemPos);


                        break;
                    }
                    #endregion
                }
                break;
                }
            }
            catch (Exception ex)
            {
                //Trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), "itbc_solicitacaodebeneficio", DateTime.Now));
                //Trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #16
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                var e = context.GetContextEntity();
                //Domain.Model.Usuario usuario = e.Parse<Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline,userService);
                var ServiceUser = new UsuarioService(context.OrganizationName, context.IsExecutingOffline, userService);

                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                    #region SetStateDynamicEntity

                case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:
                {
                    var postImage = (Entity)context.PostEntityImages["imagem"];
                    var Image     = context.GetContextEntity("imagem", false).Parse <Intelbras.CRM2013.Domain.Model.Usuario>(context.OrganizationName, context.IsExecutingOffline, userService);

                    if (Image.IsDisabled)
                    {
                        postImage.Attributes["itbc_codigodoassistcoml"] = 0;
                        adminService.Update(postImage);
                    }
                }

                break;

                    #endregion
                }
            }
            catch (Exception ex)
            {
                //Trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), "itbc_solicitacaodebeneficio", DateTime.Now));
                //Trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #17
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:

                var entidade = context.GetContextEntity();
                Domain.Model.ClientePotencial ClientePotencial = entidade.Parse <Domain.Model.ClientePotencial>(context.OrganizationName, context.IsExecutingOffline, adminService);
                var leadService = new Domain.Servicos.LeadService(context.OrganizationName, context.IsExecutingOffline);

                #region Sharepoint
                string diretorio = "";

                if ((!string.IsNullOrEmpty(ClientePotencial.PrimeiroNomeDoContato)) && (!string.IsNullOrEmpty(ClientePotencial.SobreNomeDoContato)))
                {
                    diretorio = ClientePotencial.PrimeiroNomeDoContato + " " + ClientePotencial.SobreNomeDoContato;
                }
                else if (!string.IsNullOrEmpty(ClientePotencial.NumeroProjeto))
                {
                    diretorio = ClientePotencial.NumeroProjeto;
                }

                if (ClientePotencial != null && !string.IsNullOrEmpty(diretorio) && !string.IsNullOrWhiteSpace(diretorio))
                {
                    new SharepointServices(context.OrganizationName, context.IsExecutingOffline, adminService).CriarDiretorio <Domain.Model.ClientePotencial>(diretorio, ClientePotencial.ID.Value);
                }

                #endregion

                #region Envia email caso ja exista projeto igual
                if (leadService.ListarProjetosDuplicidade(ClientePotencial.Cnpj, ClientePotencial.UnidadeNegocio.Id.ToString()).Count > 1)
                {
                    (new RepositoryService(context.OrganizationName, context.IsExecutingOffline)).ClientePotencial.EnviaEmailRegistroProjeto(ClientePotencial, true);
                }
                else
                {
                    (new RepositoryService(context.OrganizationName, context.IsExecutingOffline)).ClientePotencial.EnviaEmailRegistroProjeto(ClientePotencial, false);
                }
                #endregion

                break;
            }
        }
Пример #18
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                switch (context.GetMessageName())
                {
                case PluginBase.MessageName.Create:

                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        var entidade = context.GetContextEntity();
                        Domain.Model.Endereco endereco = entidade.Parse <Domain.Model.Endereco>(context.OrganizationName, context.IsExecutingOffline, adminService);

                        if (endereco.IntegrarNoPlugin)
                        {
                            string xmlResposta = new Domain.Servicos.EnderecoService(context.OrganizationName,
                                                                                     context.IsExecutingOffline, adminService).IntegracaoBarramento(endereco);
                        }
                    }
                    break;

                case PluginBase.MessageName.Update:

                    if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity)
                    {
                        var entityMerge   = context.PostEntityImages["imagem"];
                        var enderecoMerge = ((Entity)entityMerge).Parse <Domain.Model.Endereco>(context.OrganizationName, context.IsExecutingOffline, adminService);

                        if (enderecoMerge.IntegrarNoPlugin)
                        {
                            string resposta = new Domain.Servicos.EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).IntegracaoBarramento(enderecoMerge);
                        }
                    }

                    break;
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #19
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var annotationService = new Domain.Servicos.AnnotationService(context.OrganizationName, context.IsExecutingOffline, adminService);

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

                var entityTargetCreate = context.GetContextEntity();
                var targetCreate       = entityTargetCreate.Parse <Domain.Model.Anotacao>(context.OrganizationName, context.IsExecutingOffline, adminService);

                if (targetCreate.Assunto == "")
                {
                    var guidProp = entityTargetCreate.GetAttributeValue <EntityReference>("ownerid");
                    var usuario  = (new Domain.Servicos.RepositoryService()).Usuario.Retrieve(guidProp.Id);

                    entityTargetCreate.Attributes["subject"] = "Anotação criada em " + DateTime.Now.Day + "/" + DateTime.Now.Month + "/" + DateTime.Now.Year + " " + DateTime.Now.Hour + ":" + DateTime.Now.Minute + ":" + DateTime.Now.Second + " por " + usuario.NomeCompleto;
                }
                break;
            }
        }
Пример #20
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();

            Intelbras.CRM2013.Domain.Model.MetadaUnidade mMetas = e.Parse <Intelbras.CRM2013.Domain.Model.MetadaUnidade>(context.OrganizationName, context.IsExecutingOffline);
            MetadaUnidadeService ServiceMetadaUnidade           = new MetadaUnidadeService(context.OrganizationName, context.IsExecutingOffline);


            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.Create:
            {
                switch ((Stage)context.Stage)
                {
                case Stage.PreOperation:
                    ServiceMetadaUnidade.PreCreate(mMetas);
                    break;
                }
                break;
            }
            }
        }
Пример #21
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();
            BeneficioDoCanalService ServiceBeneficioCanal = new BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, userService);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.Create:
            {
                Domain.Model.BeneficioDoCanal beneficioCanalCreate = e.Parse <Domain.Model.BeneficioDoCanal>(context.OrganizationName, context.IsExecutingOffline, userService);

                switch ((Stage)context.Stage)
                {
                case Stage.PreOperation:
                    // Comentado devido problema com plugin do CRM2015 - não é possível alterar o OwnerId neste ponto - deixei comentado por enquanto
                    //e = ServiceBeneficioCanal.AtribuiParaOProprietarioDoCanal(e, beneficioCanalCreate);
                    break;
                }
                break;
            }
            }
        }
Пример #22
0
        private void preencheDados(Endereco endereco, ref IPluginExecutionContext context, IOrganizationService adminService)
        {
            var target = context.GetContextEntity();

            target.Attributes["new_cnpj"] = endereco.Identificacao.GetOnlyNumbers();
            // Caso de exclusão do registro não busca a mensagem de CEP novamente
            if (endereco.IntegrarNoPlugin && endereco.Cep != null)
            {
                var service = new EnderecoServices(context.OrganizationName, context.IsExecutingOffline, adminService);

                CepViewModel enderecoIntegracao = service.BuscaCep(endereco.Cep.GetOnlyNumbers());
                if (enderecoIntegracao == null)
                {
                    throw new ArgumentException("(CRM) Este CEP não foi encontrado na base do Totvs.");
                }

                target.Attributes["postalcode"] = endereco.Cep.GetOnlyNumbers();
                //target.Attributes["line2"] = enderecoIntegracao.Bairro;
                //target.Attributes["city"] = enderecoIntegracao.NomeCidade;
                target.Attributes["stateorprovince"] = enderecoIntegracao.UF;
                target.Attributes["country"]         = enderecoIntegracao.Pais.Name;
            }
        }
Пример #23
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();

            Intelbras.CRM2013.Domain.Model.UnidadeKonviva mUnidadeKonviva   = e.Parse <Intelbras.CRM2013.Domain.Model.UnidadeKonviva>(context.OrganizationName, context.IsExecutingOffline);
            DeParaDeUnidadeDoKonvivaService ServiceDeParaDeUnidadeDoKonviva = new DeParaDeUnidadeDoKonvivaService(context.OrganizationName, context.IsExecutingOffline, adminService);

            var targetEntity = (Entity)context.InputParameters["Target"];

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
            case MessageName.SetStateDynamicEntity:

                var returnQuery = ServiceDeParaDeUnidadeDoKonviva.ObterDeParaPorUnidade(mUnidadeKonviva);


                if (returnQuery.Count > 0)
                {
                    throw new ApplicationException("Erro: Não é possivel inativar essa unidade. Ela esta sendo utilizada em um mapeamento de De Para de Acesso ao Konviva");
                }

                break;
            }
        }
Пример #24
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var e = context.GetContextEntity();
            var mAcessoExtranetContato = e.Parse <Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline);
            var sAcessoExtranetContato = new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
                #region Create

            case MessageName.Create:

                switch (context.GetStage())
                {
                case Stage.PreOperation:
                    sAcessoExtranetContato.PreCreate(mAcessoExtranetContato);
                    break;

                case Stage.PostOperation:
                    if (mAcessoExtranetContato.Contato == null)
                    {
                        throw new ArgumentNullException("Campo contato obrigatório.");
                    }

                    if (mAcessoExtranetContato.IntegrarNoPlugin.HasValue && !mAcessoExtranetContato.IntegrarNoPlugin.Value)
                    {
                        string xmlResposta = new Domain.Servicos.AcessoExtranetContatoService(context.OrganizationName,
                                                                                              context.IsExecutingOffline, sAcessoExtranetContato).IntegracaoBarramento(mAcessoExtranetContato);
                    }

                    var acessoKonvivaService = new AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, userService);
                    acessoKonvivaService.CriarAcessoKonvivaPadrao(mAcessoExtranetContato.Contato.Id);
                    break;
                }
                break;

                #endregion

                #region Update

            case MessageName.Update:

                var AcessoExtranetPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, sAcessoExtranetContato);
                var preAcessoExtranet  = (context.PreEntityImages["imagem"]).Parse <Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService);
                int dep = context.Depth;

                switch (context.GetStage())
                {
                case Stage.PostOperation:

                    if ((AcessoExtranetPost.IntegrarNoPlugin.HasValue && !AcessoExtranetPost.IntegrarNoPlugin.Value) && AcessoExtranetPost.Status == preAcessoExtranet.Status)
                    {
                        string xmlResposta = new Domain.Servicos.AcessoExtranetContatoService(context.OrganizationName,
                                                                                              context.IsExecutingOffline, sAcessoExtranetContato).IntegracaoBarramento(AcessoExtranetPost);
                    }

                    if (AcessoExtranetPost.Status.HasValue)
                    {
                        if (AcessoExtranetPost.Status != preAcessoExtranet.Status)
                        {
                            var deParaService        = new DeParaDeUnidadeDoKonvivaService(context.OrganizationName, context.IsExecutingOffline, userService);
                            var acessoKonvivaService = new AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, userService);
                            var acessKonviva         = acessoKonvivaService.ObterPorContato(AcessoExtranetPost.Contato.Id, (Domain.Enum.StateCode)AcessoExtranetPost.Status);

                            if (AcessoExtranetPost.Status == (int)Domain.Enum.AcessoExtranetContatos.StateCode.Ativo)
                            {
                                var contato = new ContatoService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaContato(AcessoExtranetPost.Contato.Id);

                                if (contato.AssociadoA != null && contato.PapelCanal != (int)Domain.Enum.Contato.PapelNoCanal.Representante)
                                {
                                    var canal = new ContaService(context.OrganizationName, context.IsExecutingOffline, userService).BuscaConta(contato.AssociadoA.Id);
                                    acessKonviva = deParaService.ObterUnidadeKonvivaDeParaCom(acessKonviva, canal, null);
                                }
                                else
                                {
                                    acessKonviva = deParaService.ObterUnidadeKonvivaDeParaCom(acessKonviva, null, contato);
                                }
                            }

                            if (acessKonviva != null)
                            {
                                if (acessKonviva.ID.HasValue)
                                {
                                    acessoKonvivaService.MudarStatus(acessKonviva.ID.Value, AcessoExtranetPost.Status.Value);
                                }
                                acessKonviva.Status = null; acessKonviva.Status = null;
                                acessoKonvivaService.Persistir(acessKonviva);
                            }
                        }
                    }

                    break;
                }
                break;

                #endregion
            }
        }
Пример #25
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            try
            {
                switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                {
                    #region Create
                case Domain.Enum.Plugin.MessageName.Create:
                    var        parameterCreate  = (Entity)context.InputParameters["Target"];
                    Ocorrencia ocorrenciaCreate = parameterCreate.Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    var ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline);

                    /*
                     * Caso a linha de contrato seja do tipo instalação e tenha valor no campo limite
                     * caso ultrapssse o limite definido da erro, e não deixa criar a ocorrencia
                     */
                    if (ocorrenciaCreate.LinhaDeContratoId != null)
                    {
                        RepositoryService repository = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline);
                        var linhaDeContrato          = repository.LinhaDoContrato.Retrieve(ocorrenciaCreate.LinhaDeContratoId.Id);
                        if (linhaDeContrato != null && linhaDeContrato.TipoDeOcorrencia == (int)Domain.Enum.TipoDeOcorrencia.Instalacao && linhaDeContrato.LimiteOcorrencias > 0)
                        {
                            var listOcorrencias = ocorrenciaService.ListarOcorrenciasPorLinhaDoContrato(ocorrenciaCreate.LinhaDeContratoId.Id);
                            if (listOcorrencias.Count >= linhaDeContrato.LimiteOcorrencias)
                            {
                                throw new ArgumentException("Erro ao criar Ocorrência. Limite de instalações atingido.");
                            }
                        }
                    }
                    ocorrenciaService.Ocorrencia = ocorrenciaCreate;
                    ocorrenciaService.Criar();

                    AtualizaCampos(ref parameterCreate, ocorrenciaService.Ocorrencia);

                    if (ocorrenciaCreate.Origem != null && (ocorrenciaCreate.Origem == (int)Domain.Enum.OrigemDaOcorrencia.PortalAssistenciaTencica || ocorrenciaCreate.Origem == (int)Domain.Enum.OrigemDaOcorrencia.OSIntegrada))
                    {
                        var usuario = new Guid(SDKore.Configuration.ConfigurationManager.GetSettingValue("guid_proprietario_portal_astec"));
                        parameterCreate.Attributes["ownerid"] = new EntityReference("systemuser", usuario);
                    }

                    break;
                    #endregion

                    #region Update
                case Domain.Enum.Plugin.MessageName.Update:
                    var        parameterUpdate          = (Entity)context.InputParameters["Target"];
                    var        entidadeComValoresFinais = (Entity)context.GetContextEntityMerge("imagem");
                    Ocorrencia ocorrenciaUpdate         = entidadeComValoresFinais.Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var        ocorrenciaServiceUpdate  = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline);

                    if (ocorrenciaUpdate.LinhaDeContratoId != null)
                    {
                        RepositoryService repository = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline);
                        var linhaDeContrato          = repository.LinhaDoContrato.Retrieve(ocorrenciaUpdate.LinhaDeContratoId.Id);
                        if (linhaDeContrato != null && linhaDeContrato.TipoDeOcorrencia == (int)Domain.Enum.TipoDeOcorrencia.Instalacao && linhaDeContrato.LimiteOcorrencias > 0)
                        {
                            var listOcorrencias = ocorrenciaServiceUpdate.ListarOcorrenciasPorLinhaDoContrato(ocorrenciaUpdate.LinhaDeContratoId.Id);
                            if (listOcorrencias.Count >= linhaDeContrato.LimiteOcorrencias)
                            {
                                var flag = true;

                                foreach (var ocorrencia in listOcorrencias)
                                {
                                    if (ocorrencia.Id.Equals(ocorrenciaUpdate.Id))
                                    {
                                        flag = false;
                                        break;
                                    }
                                }

                                if (flag)
                                {
                                    throw new ArgumentException("Erro ao atualizar Ocorrência. Limite de instalações atingido.");
                                }
                            }
                        }
                    }

                    ocorrenciaServiceUpdate.Ocorrencia = ocorrenciaUpdate;
                    ocorrenciaServiceUpdate.Atualizar();
                    if (parameterUpdate.Attributes.Contains("statuscode"))
                    {
                        ocorrenciaServiceUpdate.AtualizarValorDoServicoASTEC();
                    }

                    AtualizaCampos(ref parameterUpdate, ocorrenciaServiceUpdate.Ocorrencia);

                    break;
                    #endregion

                    #region SetState
                case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                    var state  = (OptionSetValue)context.InputParameters["State"];
                    var status = (OptionSetValue)context.InputParameters["Status"];

                    var        parameter          = context.GetContextEntity("imagem");
                    Ocorrencia ocorrenciaSetState = parameter.Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    ocorrenciaSetState.Status = state.Value;
                    if (status.Value == 200040)
                    {
                        ocorrenciaSetState.StatusDaOcorrencia = Domain.Enum.StatusDaOcorrencia.Auditoria;
                        ocorrenciaSetState.RazaoStatus        = status.Value;

                        var ocorrenciaServiceSetState = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline);
                        ocorrenciaServiceSetState.Ocorrencia = ocorrenciaSetState;

                        if (context.InputParameters.Contains("Status"))
                        {
                            ocorrenciaServiceSetState.AtualizarValorDoServicoASTEC();

                            new RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService).Ocorrencia.Update(ocorrenciaServiceSetState.Ocorrencia);
                        }
                    }

                    break;
                    #endregion
                }
            }
            catch (Exception ex)
            {
                throw new InvalidPluginExecutionException(ex.Message);
            }
        }
Пример #26
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            switch (context.GetMessageName())
            {
            case PluginBase.MessageName.Update:

                if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity &&
                    context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                {
                    var ContatoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Contato>(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var ContatoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Contato>(context.OrganizationName, context.IsExecutingOffline, adminService);

                    var contatoService = new ContatoService(context.OrganizationName, context.IsExecutingOffline, adminService);
                    var contaService   = new ContaService(context.OrganizationName, context.IsExecutingOffline, adminService);

                    //Atualização de Treinamento
                    new BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).MudarEmpresa(ContatoPos);

                    #region Integração

                    if (context.Depth > 1)
                    {
                        return;
                    }

                    //Valida se contato tem acesso a Extranet e está sem e-mail
                    if (string.IsNullOrEmpty(ContatoPos.Email1))
                    {
                        ValidaEmailAcessoEXtranet(ContatoPos);
                    }

                    if (!ContatoPos.IntegrarNoPlugin && contatoService.ContatoPossuiTodosCamposParaIntegracao(ContatoPos) && (bool)ContatoPos.IntegrarNoBarramento)
                    {
                        Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(ContatoPos.Email1);
                        if (idContatoEmail != Guid.Empty && idContatoEmail != ContatoPos.Id)
                        {
                            throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", ContatoPos.Email1));
                        }
                        string xmlResposta = contatoService.IntegracaoBarramento(ContatoPos);
                    }

                    //Caso ele mude a associação tem que resetar o perfil do Konviva
                    //E consequentemente mudar a Unidade do Konviva
                    if (ContatoPre.AssociadoA == null && ContatoPos.AssociadoA != null ||
                        (ContatoPre.AssociadoA != null && ContatoPos.AssociadoA != null &&
                         ContatoPre.AssociadoA.Id != ContatoPos.AssociadoA.Id) ||
                        ContatoPre.AssociadoA != null && ContatoPos.AssociadoA == null)
                    {
                        Guid?guidTmp = ContatoPos.AssociadoA == null ? Guid.Empty : ContatoPos.AssociadoA.Id;
                        guidTmp = guidTmp == Guid.Empty ? null : guidTmp;

                        var acessoKonvivaService         = new AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, adminService);
                        var acessoExtranetContatoService = new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline, adminService);

                        acessoKonvivaService.MudarCanal(ContatoPos, guidTmp);
                        acessoExtranetContatoService.MudarCanal(ContatoPos.ID.Value, guidTmp, ContatoPos.IntegrarNoPlugin);
                        if (ContatoPos.AssociadoA == null)
                        {
                            contatoService.AlteraTipoRelacao(ContatoPos);
                        }
                    }


                    if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                    {
                        var    entidade      = context.GetContextEntity();
                        Object papelCanalTmp = null;
                        if (entidade.Attributes.Contains("itbc_papelnocanal") && entidade.Attributes.TryGetValue("itbc_papelnocanal", out papelCanalTmp) && papelCanalTmp != null)
                        {
                            if (ContatoPos.AssociadoA == null || entidade.GetAttributeValue <OptionSetValue>("itbc_papelnocanal").Value == (int)Intelbras.CRM2013.Domain.Enum.Contato.PapelNoCanal.Representante)
                            {
                                var postImage = (Entity)context.PostEntityImages["imagem"];
                                postImage  = UpdateImage(postImage, entidade);
                                ContatoPos = postImage.Parse <Contato>(context.OrganizationName, context.IsExecutingOffline, adminService);

                                var           aKService     = new AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, adminService);
                                AcessoKonviva acessoKonviva = aKService.ObterPorContato(ContatoPos.ID.Value, Domain.Enum.StateCode.Ativo);

                                if (acessoKonviva != null)
                                {
                                    acessoKonviva = new DeParaDeUnidadeDoKonvivaService(context.OrganizationName, context.IsExecutingOffline, adminService).ObterUnidadeKonvivaDeParaCom(acessoKonviva, null, ContatoPos);

                                    aKService.Persistir(acessoKonviva);
                                }
                            }
                        }
                    }

                    if ((ContatoPos.Email1 != ContatoPre.Email1) && ContatoPos.AcessoAoPortal == true && ContatoPos.Login != null)
                    {
                        if (ContatoPre.Email1 == string.Empty)
                        {
                            (new RepositoryService(context.OrganizationName, context.IsExecutingOffline)).Contato.EnviaEmailAcessoPortalCorporativo(ContatoPos);
                        }
                        (new RepositoryService(context.OrganizationName, context.IsExecutingOffline)).Contato.UpdateEmailFBA(ContatoPos);
                    }

                    //new Domain.Services.PortalFidelidade().RemoverUsuarioDoSharepoint(contato);
                    //if (contato.ParticipaFidelidade.HasValue && contato.ParticipaFidelidade.Value)
                    //{
                    //    new Domain.Services.PortalFidelidade().AdicionarAoGrupoSharePoint(contato);
                    //}

                    #endregion
                }

                break;
            }
        }
Пример #27
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            //if (context.GetStage() != Stage.PreValidation)
            //    return;
            var e        = context.GetContextEntity();
            var _service = new Intelbras.CRM2013.Domain.Servicos.AcessoKonvivaService(context.OrganizationName, context.IsExecutingOffline, null);

            switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
            {
            case Domain.Enum.Plugin.MessageName.Create:
            {
                Domain.Model.AcessoKonviva mAcessoKonviva = e.Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, userService);

                //Adicionado verificação preEvent pra poder mudar o nome da entidade
                if (mAcessoKonviva.Contato == null)
                {
                    throw new ArgumentException("(CRM) Contato obrigatório");
                }

                Domain.Model.Contato mContato = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(mAcessoKonviva.Contato.Id);

                if (mContato == null)
                {
                    throw new ArgumentException("(CRM) Contato não encontrado");
                }

                if (!new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline, userService).ValidarExistenciaAcessoExtranet(mAcessoKonviva.Contato.Id))
                {
                    throw new ApplicationException("(CRM) Contato não possui acesso na extranet");
                }

                if (!_service.ValidarTipoAcesso(mAcessoKonviva))
                {
                    throw new ApplicationException("(CRM) Usuários sem vínculo com a Intelbras não podem criar Acesso no Konviva com Perfil Administrador");
                }

                //Já validamos se o contato existe mesmo na service com o método validarTipoAcesso
                e.Attributes["itbc_name"] = mContato.NomeCompleto;

                if (!e.Attributes.Contains("itbc_acaocrm") || e.GetAttributeValue <bool>("itbc_acaocrm") == false)
                {
                    context.SharedVariables.Add("IntegraKonviva", true);
                }
                e.Attributes.Remove("itbc_acaocrm");

                break;
            }

            case Domain.Enum.Plugin.MessageName.Update:
            {
                Guid contatoId;
                //Domain.Model.AcessoKonviva acessoKonvivaImagem = ((Entity)context.PreEntityImages["imagem"]).Parse<Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, context.UserId);
                Domain.Model.AcessoKonviva acessoKonvivaImagem  = ((Entity)context.GetContextEntityMerge("imagem")).Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, context.UserId);
                Domain.Model.AcessoKonviva mAcessoKonvivaUpdate = e.Parse <Domain.Model.AcessoKonviva>(context.OrganizationName, context.IsExecutingOffline, userService);

                //Adicionado verificação preEvent pra poder mudar o nome da entidade
                if (acessoKonvivaImagem.Contato == null && mAcessoKonvivaUpdate.Contato == null)
                {
                    throw new ArgumentException("(CRM) Contato obrigatório");
                }

                if (mAcessoKonvivaUpdate.Contato == null)
                {
                    contatoId = acessoKonvivaImagem.Contato.Id;
                }
                else
                {
                    contatoId = mAcessoKonvivaUpdate.Contato.Id;
                }

                Domain.Model.Contato mContatoUpdate = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(contatoId);

                if (mContatoUpdate == null)
                {
                    throw new ArgumentException("(CRM) Contato não encontrado");
                }

                if (!_service.ValidarTipoAcesso(acessoKonvivaImagem))
                {
                    throw new ApplicationException("(CRM) Usuários sem vínculo com a Intelbras não podem criar Acesso no Konviva com Perfil Administrador");
                }

                //Já validamos se o contato existe mesmo na service validarTipoAcesso
                e.Attributes["itbc_name"] = mContatoUpdate.NomeCompleto;

                // SharedVariable para a Integração
                if (!e.Attributes.Contains("itbc_acaocrm") || e.GetAttributeValue <bool>("itbc_acaocrm") == false)
                {
                    context.SharedVariables.Add("IntegraKonviva", true);
                }
                e.Attributes.Remove("itbc_acaocrm");
                break;
            }
            }
        }
Пример #28
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            SolicitacaoBeneficioService ServiceSolicitacaoBeneficio = new SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, adminService);

            switch (EnumConverter <MessageName>(context.MessageName.ToLower()))
            {
                #region Create

            case MessageName.Create:

                var e = context.GetContextEntity();
                var solicitacaoBeneficioTargetCreate = e.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline);

                ValidaValorAcao(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate);
                AtualizaDataLimiteAposCriacao(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e);

                AtualizaInformacoesPortfolio(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e);
                AtualizaCodicaoPagamento(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e);
                AtualizaDataValidade(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e);
                //AtualizaSituacaoInrregular(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e);
                AtualizaTrimestreCompetencia(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate, ref e);
                AtualizaValores(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e);

                ValidaValorAprovado(ServiceSolicitacaoBeneficio, solicitacaoBeneficioTargetCreate);
                AtualizaNome(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioTargetCreate, ref e);

                break;

                #endregion

                #region Update

            case MessageName.Update:

                var entityMerge        = context.PreEntityImages["imagem"];
                var entityTargetUpdate = (Entity)context.InputParameters["Target"];

                var solicitacaoPreUpdate = entityMerge.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService);

                foreach (var item in context.GetContextEntity().Attributes)
                {
                    entityMerge.Attributes[item.Key] = item.Value;
                }

                var solicitacaoBeneficioMergeUpdate = entityMerge.Parse <SolicitacaoBeneficio>(context.OrganizationName, context.IsExecutingOffline, adminService);



                ValidaTrocaStatus(solicitacaoBeneficioMergeUpdate, solicitacaoPreUpdate);
                ValidaValorAcao(ServiceSolicitacaoBeneficio, solicitacaoBeneficioMergeUpdate);

                ServiceSolicitacaoBeneficio.ValidaDataParametrizadaParaConclusao(solicitacaoBeneficioMergeUpdate);

                #region SOLICITAÇÃO DE BENEFICIO

                if (solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.Criada ||
                    solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.EmAnalise ||
                    solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.Aprovada ||
                    solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoPendente ||
                    solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.ComprovantesValidacao ||
                    solicitacaoBeneficioMergeUpdate.StatusSolicitacao.Value == (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.ComprovacaoConcluida)
                {
                    var tempSolicBen = ServiceSolicitacaoBeneficio.RecalculaValoresNaAlteracaoDeStatus(solicitacaoBeneficioMergeUpdate, solicitacaoPreUpdate);

                    if (tempSolicBen.ValorPago.HasValue)
                    {
                        entityTargetUpdate.Attributes["itbc_valorpago"] = new Money(tempSolicBen.ValorPago.Value);
                        solicitacaoBeneficioMergeUpdate.ValorPago       = tempSolicBen.ValorPago;
                    }

                    if (tempSolicBen.ValorSolicitado.HasValue)
                    {
                        entityTargetUpdate.Attributes["itbc_valorsolicitado"] = new Money(tempSolicBen.ValorSolicitado.Value);
                        solicitacaoBeneficioMergeUpdate.ValorSolicitado       = tempSolicBen.ValorSolicitado;
                    }

                    if (tempSolicBen.ValorAbater.HasValue)
                    {
                        entityTargetUpdate.Attributes["itbc_valoraabater"] = new Money(tempSolicBen.ValorAbater.Value);
                        solicitacaoBeneficioMergeUpdate.ValorAbater        = tempSolicBen.ValorAbater;
                    }

                    if (tempSolicBen.ValorAprovado.HasValue)
                    {
                        entityTargetUpdate.Attributes["itbc_valoraprovado"] = new Money(tempSolicBen.ValorAprovado.Value);
                        solicitacaoBeneficioMergeUpdate.ValorAprovado       = tempSolicBen.ValorAprovado;
                    }
                }

                #endregion

                ValidaValorAprovado(ServiceSolicitacaoBeneficio, solicitacaoBeneficioMergeUpdate);
                AtualizaNome(ServiceSolicitacaoBeneficio, ref solicitacaoBeneficioMergeUpdate, ref entityTargetUpdate);

                break;

                #endregion

                #region SetStateDynamicEntity

            case MessageName.SetStateDynamicEntity:

                if (!context.InputParameters.Contains("EntityMoniker") || !(context.InputParameters["EntityMoniker"] is EntityReference))
                {
                    throw new ArgumentException("(CRM) SetStateDynamicEntity não contém EntityMoniker.");
                }

                EntityReference eSolicitacao = (EntityReference)context.InputParameters["EntityMoniker"];
                OptionSetValue  state        = (OptionSetValue)context.InputParameters["State"];
                OptionSetValue  status       = (OptionSetValue)context.InputParameters["Status"];

                if (eSolicitacao.Id != Guid.Empty && state.Value == (int)Domain.Enum.SolicitacaoBeneficio.State.Inativo)
                {
                    throw new ArgumentException("(CRM) Não é possível inativar uma solicitação!");
                }
                break;

                #endregion
            }
        }
Пример #29
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            var produtosdaSolicitacaoService = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService);

            repoService = new RepositoryService(context.OrganizationName, context.IsExecutingOffline, userService);

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

            case Domain.Enum.Plugin.MessageName.Create:
            {
                var targetCreate = (Entity)context.InputParameters["Target"];

                AtualizarValorAprovado(ref targetCreate);

                var produtosdaSolicitacaoCreate = targetCreate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService);

                produtosdaSolicitacaoService.ValidaCamposObrigatorios(produtosdaSolicitacaoCreate);
                AtualizaEstabelecimento(produtosdaSolicitacaoService, ref produtosdaSolicitacaoCreate, ref targetCreate);
                ValidarDuplicidade(produtosdaSolicitacaoService, produtosdaSolicitacaoCreate);

                ProdutoPortfolio produtoPortfolio1;
                produtosdaSolicitacaoService.ValidaIntegridadeDados(produtosdaSolicitacaoCreate, out produtoPortfolio1);


                AtualizaValores(produtosdaSolicitacaoService, repoService, ref produtosdaSolicitacaoCreate, ref targetCreate);

                break;
            }

                #endregion

                #region Update

            case Domain.Enum.Plugin.MessageName.Update:
                var targetUpdate   = context.GetContextEntity();
                var preImageUpdate = context.PreEntityImages["imagem"];
                var produtoSolicitacaoMergeUpdate = preImageUpdate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService);
                SolicitacaoBeneficio solicBenef   = repoService.SolicitacaoBeneficio.ObterPor(produtoSolicitacaoMergeUpdate.SolicitacaoBeneficio.Id, 0);

                if (solicBenef.TipoPriceProtection != (int)Domain.Enum.SolicitacaoBeneficio.TipoPriceProtection.Autorizacao)
                {
                    AtualizarValorAprovado(ref targetUpdate);
                }

                var produtoSolicitacaoTargetUpdate = targetUpdate.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, userService);

                foreach (var item in targetUpdate.Attributes)
                {
                    preImageUpdate.Attributes[item.Key] = item.Value;
                }

                if (produtoSolicitacaoMergeUpdate.State.HasValue && produtoSolicitacaoMergeUpdate.State.Value == (int)Domain.Enum.ProdutoSolicitacao.Status.Inativo)
                {
                    break;
                }

                produtosdaSolicitacaoService.ValidaCamposObrigatorios(produtoSolicitacaoMergeUpdate);
                ValidaAlteracaoProduto(produtoSolicitacaoTargetUpdate, produtoSolicitacaoMergeUpdate);
                produtosdaSolicitacaoService.VerificaStatusDaSolicitacao(produtoSolicitacaoMergeUpdate, produtoSolicitacaoTargetUpdate.IntegradoDe);
                AtualizaEstabelecimento(produtosdaSolicitacaoService, ref produtoSolicitacaoMergeUpdate, ref targetUpdate);

                //ProdutoPortfolio produtoPortfolio;
                //produtosdaSolicitacaoService.ValidaIntegridadeDados(produtoSolicitacaoMergeUpdate, out produtoPortfolio);
                //AtualizaValores(produtosdaSolicitacaoService, repoService, ref produtoSolicitacaoMergeUpdate, ref targetUpdate);

                solicBenef = repoService.SolicitacaoBeneficio.Retrieve(produtoSolicitacaoMergeUpdate.SolicitacaoBeneficio.Id);

                ValidarDuplicidade(produtosdaSolicitacaoService, produtoSolicitacaoMergeUpdate);

                break;
                #endregion

                #region Delete

            case Domain.Enum.Plugin.MessageName.Delete:

                var preImageDelete           = context.PreEntityImages["imagem"];
                var produtoSolicitacaoDelete = preImageDelete.Parse <ProdutosdaSolicitacao>(context.OrganizationName, context.IsExecutingOffline, adminService);

                var ServiceProdutosSolicitacao = new ProdutosdaSolicitacaoService(context.OrganizationName, context.IsExecutingOffline, userService);
                produtosdaSolicitacaoService.VerificaStatusDaSolicitacao(produtoSolicitacaoDelete, "");

                break;

                #endregion
            }
        }
Пример #30
0
        protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService)
        {
            //if (context.GetStage() != Stage.PreValidation)
            //    return;
            var e        = context.GetContextEntity();
            var _service = new Intelbras.CRM2013.Domain.Servicos.AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline, null);
            var sAcessoExtranetContato = new AcessoExtranetContatoService(context.OrganizationName, context.IsExecutingOffline);

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

            case Domain.Enum.Plugin.MessageName.Create:

                Domain.Model.AcessoExtranetContato acessoExtranetContatoEmail = e.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService);

                Contato contatoObj = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContatoEmail.Contato.Id);

                if (!string.IsNullOrEmpty(contatoObj.Email1))
                {
                    Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contatoObj.Email1);
                    if (idContatoEmail != Guid.Empty && idContatoEmail != contatoObj.Id)
                    {
                        throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contatoObj.Email1));
                    }
                    else
                    {
                        if (new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).ContatoPossuiTodosCamposParaIntegracao(contatoObj))
                        {
                            contatoObj.IntegrarNoBarramento = true;
                            contatoObj.Update(contatoObj);
                        }
                        else
                        {
                            throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui todos os campos para integração, favor completar o cadastro do contato.");
                        }
                    }
                }
                else
                {
                    throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui e-mail cadastrado, favor completar o cadastro do contato.");
                }

                break;

                #endregion
                #region Update
            case Domain.Enum.Plugin.MessageName.Update:

                var entityTargetUpdate = (Entity)context.PreEntityImages["imagem"];

                Domain.Model.AcessoExtranetContato acessoExtranetContatoEmailUpdate = entityTargetUpdate.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService);

                Contato contatoObjUpdate = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContatoEmailUpdate.Contato.Id);

                if (!string.IsNullOrEmpty(contatoObjUpdate.Email1))
                {
                    Guid idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contatoObjUpdate.Email1);
                    if (idContatoEmail != Guid.Empty && idContatoEmail != contatoObjUpdate.Id)
                    {
                        throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contatoObjUpdate.Email1));
                    }
                    else
                    {
                        if (new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).ContatoPossuiTodosCamposParaIntegracao(contatoObjUpdate))
                        {
                            contatoObjUpdate.IntegrarNoBarramento = true;
                            contatoObjUpdate.Update(contatoObjUpdate);
                        }
                        else
                        {
                            throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui todos os campos para integração, favor completar o cadastro do contato.");
                        }
                    }
                }
                else
                {
                    throw new ArgumentException("(CRM) Acesso não pode ser criado pois Contato não possui e-mail cadastrado, favor completar o cadastro do contato.");
                }

                break;

                #endregion

                #region SetStateDynamicEntity

            case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                var entityMerge = context.PreEntityImages["imagem"];
                Domain.Model.AcessoExtranetContato acessoExtranetContato = entityMerge.Parse <Domain.Model.AcessoExtranetContato>(context.OrganizationName, context.IsExecutingOffline, userService);

                if (acessoExtranetContato.Status == 0)
                {
                    Contato contato        = new Intelbras.CRM2013.Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline).BuscaContato(acessoExtranetContato.Contato.Id);
                    Guid    idContatoEmail = new RepositoryService().AcessoExtranetContato.VerificarEmail(contato.Email1);
                    if (idContatoEmail != Guid.Empty && idContatoEmail != contato.Id)
                    {
                        throw new ArgumentException(string.Format("(CRM) Duplicidade encontrada, existe outro contato com acesso a extranet com o mesmo e-mail: [{0}].", contato.Email1));
                    }
                    else
                    {
                        contato.IntegrarNoBarramento = true;
                        contato.Update(contato);
                    }

                    acessoExtranetContato.Status = 1;
                    sAcessoExtranetContato.IntegracaoBarramento(acessoExtranetContato);
                    e.Attributes["itbc_acaocrm"] = true;
                }
                break;

                #endregion
            }
        }