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; } } }
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; } }
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 } }