public string Executar(string mensagem, string numeroMensagem, Domain.Model.Usuario usuario) { usuarioIntegracao = usuario; var xml = this.CarregarMensagem <Pollux.MSG0101>(mensagem); var lstPrecoProduto = this.DefinirPropriedadesLista(xml); if (!resultadoPersistencia.Sucesso) { retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno)); } List <PrecoProduto> lstPrecoProdutoRetorno = new Domain.Servicos.ProdutoService(this.Organizacao, this.IsOffline).ListarPor(lstPrecoProduto); if (lstPrecoProdutoRetorno == null || lstPrecoProdutoRetorno.Count == 0) { resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Preço(s) não encontrado(s)."; return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno)); } resultadoPersistencia.Sucesso = true; resultadoPersistencia.Mensagem = "Integração Ocorrida com sucesso."; retorno.Add("ProdutosItens", this.GerarListaProdutoValorItem(lstPrecoProdutoRetorno)); retorno.Add("Resultado", resultadoPersistencia); return(CriarMensagemRetorno <Pollux.MSG0101R1>(numeroMensagem, retorno)); }
public void TestesProdutosPortfolio() { JavaScriptSerializer jsonConverter = new JavaScriptSerializer(); Dictionary <string, object> dictResposta = new Dictionary <string, object>(); Dictionary <string, object> listResposta = new Dictionary <string, object>(); string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); Domain.Servicos.ProdutoService prodServ = new Domain.Servicos.ProdutoService(organizationName, false); string canalGuid = "9484CD60-D400-E411-9420-00155D013D39"; try { Guid canal = Guid.Parse(canalGuid); Domain.Model.Conta contaCliente = new Domain.Servicos.ContaService(organizationName, false).BuscaConta(canal); if (contaCliente == null) { throw new ArgumentException("Canal não encontrado"); } List <Domain.Model.ProdutoPortfolio> prodPortfolio = prodServ.ProdutosPortfolio(contaCliente, null, null); if (prodPortfolio.Count <= 0) { throw new ArgumentException("Canal não possui produtos cadastrados no portfólio"); } foreach (var item in prodPortfolio) { counter++; if (item.Product != null && item.Product.Showroom != null && item.Product.Showroom == true) { if (!string.IsNullOrEmpty(item.Product.Nome) && item.Product.ID != null) { if (!listResposta.ContainsKey(item.Product.ID.ToString())) { listResposta.Add(item.Product.ID.ToString(), item.Product.Nome.ToString()); } } } } dictResposta.Add("Produtos", listResposta); dictResposta.Add("Sucesso", true); } catch (FormatException) { dictResposta.Add("Sucesso", false); dictResposta.Add("Mensagem", "Guid em formato incorreto!Esperado : (xxxxxxxx-xxxx-xxxxx-xxxx-xxxxxxxxxxxx)"); } catch (Exception e) { dictResposta.Add("Sucesso", false); dictResposta.Add("Mensagem", e.Message); } string retorno = jsonConverter.Serialize(dictResposta); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { if (context.Depth > 2) { return; } switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: Entity entidadeAlterada = (Entity)context.InputParameters["Target"]; Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); //Inserir produto na lista de preço new Intelbras.CRM2013.Domain.Servicos.ListaPrecoService(context.OrganizationName, context.IsExecutingOffline).Persistir(produto); #region SellOut //Verifica se o codigo do produto foi alterado if (produto.Codigo != null) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", produto.ID), new XElement("Idprodutoerp", produto.Codigo), new XElement("Statuscode", 1), new XElement("Statecode", 0) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion break; case Domain.Enum.Plugin.MessageName.Update: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { Entity entidadeAlterada1 = (Entity)context.InputParameters["Target"]; Entity entidadePost = (Entity)context.PostEntityImages["imagem"]; Domain.Model.Product produto1 = entidadeAlterada1.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); if (produto1.Status.HasValue && produto1.Status == (int?)Domain.Enum.Produto.StateCode.inativo && produto1.RazaoStatus != null && (int)produto1.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado) { new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).DescontinuarProduto(PostProduto); } if (produto1.IntegrarNoPlugin.HasValue && !produto1.IntegrarNoPlugin.Value) { string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, serviceFactory).IntegracaoBarramento(PostProduto); } #region SellOut //Verifica se o codigo do produto foi alterado if (produto1.Codigo != null || produto1.RazaoStatus.HasValue) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", PostProduto.ID), new XElement("Idprodutoerp", PostProduto.Codigo), new XElement("Statuscode", PostProduto.RazaoStatus), new XElement("Statecode", PostProduto.Status) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion } break; case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity && context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory); var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, serviceFactory); #region SellOut if (ProdutoPre.Status != ProdutoPos.Status) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", ProdutoPos.ID), new XElement("Statecode", ProdutoPos.Status) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion } break; } }
public void Execute(IServiceProvider serviceProvider) { var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(null); ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); if (context.Depth > 2) { return; } try { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { Entity entidadeAlterada = (Entity)context.InputParameters["Target"]; Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); #region SellOut //Verifica se o codigo do produto foi alterado if (produto.Codigo != null) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", produto.ID), new XElement("Idprodutoerp", produto.Codigo), new XElement("Statuscode", produto.RazaoStatus), new XElement("Statecode", produto.Status), new XElement("DescricaoProduto", produto.Descricao) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion } break; case Domain.Enum.Plugin.MessageName.Update: if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { Entity entidadeAlterada = (Entity)context.InputParameters["Target"]; Entity entidadePost = (Entity)context.PostEntityImages["imagem"]; Domain.Model.Product produto = entidadeAlterada.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); Domain.Model.Product PostProduto = entidadePost.Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline); if (produto.Status.HasValue && produto.Status == (int?)Domain.Enum.Produto.StateCode.inativo && produto.RazaoStatus != null && (int)produto.RazaoStatus == (int)Domain.Enum.Produto.StatusCode.Descontinuado) { new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).DescontinuarProduto(PostProduto); } if (produto.IntegrarNoPlugin.HasValue && !produto.IntegrarNoPlugin.Value) { string ret = new Domain.Servicos.ProdutoService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(PostProduto); } #region SellOut //Verifica se o codigo do produto foi alterado if (produto.Codigo != null || produto.RazaoStatus.HasValue) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", PostProduto.ID), new XElement("Idprodutoerp", PostProduto.Codigo), new XElement("Statuscode", PostProduto.RazaoStatus), new XElement("Statecode", PostProduto.Status), new XElement("DescricaoProduto", PostProduto.Descricao) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion } break; case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity && context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var ProdutoPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service); var ProdutoPos = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Product>(context.OrganizationName, context.IsExecutingOffline, service); #region SellOut if (ProdutoPre.Status != ProdutoPos.Status) { string resposta; XDocument xmlroot = new XDocument( new XDeclaration("1.0", "utf-8", "no"), new XElement("Produto", new XElement("Idprodutocrm", ProdutoPos.ID), new XElement("Statecode", ProdutoPos.Status) )); string xml = xmlroot.Declaration.ToString() + Environment.NewLine + xmlroot.ToString();; string usuario = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSUser"); string senha = SDKore.Configuration.ConfigurationManager.GetSettingValue("SellOutCRMWSPasswd"); bool resultado = new Domain.Servicos.SellOutService(context.OrganizationName, context.IsExecutingOffline).PersistirProdutoSellOut(usuario, senha, xml, out resposta); if (resultado == false) { throw new ArgumentException(resposta); } } #endregion } break; } } catch (Exception ex) { trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); string message = SDKore.Helper.Error.Handler(ex); throw new InvalidPluginExecutionException(message, ex); } }