Пример #1
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;
            }
            }
        }
Пример #2
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;
            }
        }
Пример #3
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
            }
        }