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; } }
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 } }
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); } }
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); } } }
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 (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 } }
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; } }
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; } }
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); } }
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; } }
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)); } }
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 } }
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); } }
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; } }
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); } }
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); } }
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; } }
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); } }
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; } }
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; } } }
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; } } }
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; } }
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; } }
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 } }
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); } }
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) { //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; } } }
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 } }
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 } }
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 } }