public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { usuarioIntegracao = usuario; var objeto = this.DefinirPropriedades(this.CarregarMensagem <Pollux.MSG0268>(mensagem)); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); } objeto = new Domain.Servicos.LeadService(this.Organizacao, this.IsOffline).Persistir(objeto); var objeto2 = this.DefinirPropriedades2(this.CarregarMensagem <Pollux.MSG0268>(mensagem), new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value)); if (objeto2 != null) { if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); } new Servicos.RepositoryService().Oportunidade.Update(objeto2); } #region Lista de Produtos if (objeto.StatusValidacao != (int)Enum.StatusDaValidacao.Aceito) { List <ProdutoProjeto> lstProdutosProjeto = this.DefinirPropriedadesProdutos(this.CarregarMensagem <Pollux.MSG0268>(mensagem), new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value)); var produtosTemp = new Domain.Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).Persistir(lstProdutosProjeto); new Domain.Servicos.ProdutoProjetoService(this.Organizacao, this.IsOffline).AtualizarListagemProdutos(objeto.ID.Value, produtosTemp); } #endregion if (objeto != null) { if (originadoExtranet) { //seta um usuário do comercial como proprietário de cliente potencial originado na extranet new Servicos.UtilService(this.Organizacao, this.IsOffline).MudarProprietarioRegistro("systemuser", new Guid(SDKore.Configuration.ConfigurationManager.GetSettingValue("ProprietarioComercial")), "lead", objeto.ID.Value); } while (string.IsNullOrEmpty(objeto.NumeroProjeto)) { objeto = new Servicos.RepositoryService().ClientePotencial.Retrieve(objeto.ID.Value); } retorno.Add("NumeroProjeto", objeto.NumeroProjeto); retorno.Add("CodigoClientePotencial", objeto.ID.Value.ToString()); if (objeto2 != null) { retorno.Add("CodigoOportunidade", objeto2.ID.Value.ToString()); } retorno.Add("Resultado", resultadoPersistencia); } return(CriarMensagemRetorno <Pollux.MSG0268R1>(numeroMensagem, retorno)); }
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; } }