protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { { var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); try { Entity postImage = null; switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Update: case Domain.Enum.Plugin.MessageName.Create: if (!context.PostEntityImages.Contains("imagem")) { throw new InvalidPluginExecutionException("(CRM) É necessário registrar uma Post Image para esse plugin!"); } postImage = (Entity)context.PostEntityImages["imagem"]; Domain.Model.ParametroGlobal parametroGlobalPostImage = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.ParametroGlobal>(context.OrganizationName, context.IsExecutingOffline, userService); Domain.Integracao.MSG0167 msgParamGlobal = new Domain.Integracao.MSG0167(context.OrganizationName, context.IsExecutingOffline); msgParamGlobal.Enviar(parametroGlobalPostImage); break; } } catch (Exception ex) { throw new InvalidPluginExecutionException(SDKore.Helper.Error.GetMessageError(ex)); } } }
private void ValidarDados() { var solicitacao = new Domain.Servicos.RepositoryService(OrganizationName, IsOffline) .SolicitacaoBeneficio.Retrieve(SolicitacaoId, "itbc_status", "itbc_formapagamentoid"); if (solicitacao.FormaPagamento == null) { throw new ArgumentException("(CRM) Não é possivel exibir os títulos pois a Forma de Pagamento está vazia."); } if (!solicitacao.FormaPagamento.Name.ToString().ToLower().Equals("desconto em duplicata")) { throw new ArgumentException("(CRM) Não é possivel exibir os títulos pois não é uma solicitação de desconto em duplicata."); } if (!solicitacao.StatusSolicitacao.HasValue) { throw new ArgumentException("(CRM) Não é possivel exibir os títulos pois o Status da Solicitação está vazio."); } if (solicitacao.StatusSolicitacao.Value != (int)Domain.Enum.SolicitacaoBeneficio.StatusSolicitacaoBeneficio.PagamentoEfetuado) { throw new ArgumentException("(CRM) Não é possivel exibir os títulos pois a solicitação ainda não foi paga."); } }
public void Teste_ObterIbgeViewModelPor_codigoIbge() { int codigoIbge = 1; var IbgeViewModel = new Domain.Servicos.RepositoryService(OrganizationName, IsOffline) .Municipio.ObterIbgeViewModelPor(codigoIbge); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { { var ServiceFamiliaProduto = new Domain.Servicos.FamiliaProdutoService(context.OrganizationName, context.IsExecutingOffline, adminService); var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); try { Entity preImage = null; Entity entidade = null; switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Update: preImage = (Entity)context.PreEntityImages["imagem"]; entidade = (Entity)context.InputParameters["Target"]; if (entidade.Contains("itbc_desconto_verde_habilitado") && preImage.GetAttributeValue <bool>("itbc_desconto_verde_habilitado") && !entidade.GetAttributeValue <bool>("itbc_desconto_verde_habilitado")) { var listCanalVerde = repositoryService.CanalVerde.ListarPorFamilia(entidade.Id); if (listCanalVerde.Count > 0) { repositoryService.CanalVerde.InativarMultiplos(listCanalVerde, 1); } } break; } } catch (Exception ex) { throw new InvalidPluginExecutionException(SDKore.Helper.Error.GetMessageError(ex)); } } }
protected void BuscarMaisEnderecos(Guid enderecoId) { var cliente = new Conta(); cliente.Id = enderecoId; var enderecos = new Domain.Servicos.RepositoryService().Endereco.ObterTodosOsEnderecosPor(cliente); this.BindGrid(enderecos); }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { { var ServiceFamiliaProduto = new Domain.Servicos.FamiliaProdutoService(context.OrganizationName, context.IsExecutingOffline, adminService); var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); try { Entity preImage = null; Entity postImage = null; Entity entidade = null; switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Update: preImage = (Entity)context.PreEntityImages["imagem"]; postImage = (Entity)context.PostEntityImages["imagem"]; entidade = (Entity)context.InputParameters["Target"]; if ((entidade.Contains("itbc_desconto_verde_habilitado") && entidade.GetAttributeValue <bool>("itbc_desconto_verde_habilitado") && entidade.GetAttributeValue <bool>("itbc_desconto_verde_habilitado") != preImage.GetAttributeValue <bool>("itbc_desconto_verde_habilitado")) || (entidade.Contains("itbc_percentual_desconto_verde") && preImage.GetAttributeValue <bool>("itbc_desconto_verde_habilitado") && entidade.GetAttributeValue <decimal>("itbc_percentual_desconto_verde") != preImage.GetAttributeValue <decimal>("itbc_percentual_desconto_verde")) ) { var listFamiliaComercial = ServiceFamiliaProduto.ListarPorSegmento(entidade.Id, false, null, null); var listaUpdate = new List <FamiliaProduto>(); foreach (var famComTmp in listFamiliaComercial) { famComTmp.DescontoVerdeHabilitado = postImage.GetAttributeValue <bool>("itbc_desconto_verde_habilitado"); famComTmp.PercentualDescontoVerde = postImage.GetAttributeValue <decimal>("itbc_percentual_desconto_verde"); ServiceFamiliaProduto.Persistir(famComTmp); } } if (entidade.Contains("itbc_desconto_verde_habilitado") && preImage.GetAttributeValue <bool>("itbc_desconto_verde_habilitado") && !entidade.GetAttributeValue <bool>("itbc_desconto_verde_habilitado")) { var listCanalVerde = repositoryService.CanalVerde.ListarPorSegmento(entidade.Id); if (listCanalVerde.Count > 0) { repositoryService.CanalVerde.InativarMultiplos(listCanalVerde, 1); } } break; } } catch (Exception ex) { throw new InvalidPluginExecutionException(SDKore.Helper.Error.GetMessageError(ex)); } } }
public void Sellout() { string resposta; try { var classificacao = new Domain.Servicos.RepositoryService(this.OrganizationName, this.IsOffline).Classificacao.ObterPor(Intelbras.CRM2013.Domain.Enum.Conta.Classificacao.Atac_Dist); var xml = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline).MontaXmlRevendasFielo(); resposta = xml.Declaration.ToString() + Environment.NewLine + xml.ToString(); } catch (Exception ex) { resposta = ex.Message; } }
protected void CarregarAnotacoes() { var anotacoes = new Domain.Servicos.RepositoryService().Anexo.ListarPor(this.ObjectId.Value, false); if (anotacoes.Count > 0) { this.BindGrid(anotacoes); } else { this.lblMensagem.Visible = true; this.lblMensagem.Text = "Nenhum registro encontrado."; this.rtpAnotacoes.Visible = false; } }
private Domain.Model.Usuario AutenticarUsuario(string UserName, string Password) { Domain.Model.Usuario usuario = null; //string Dominio = "Intelbras"; string Dominio = ConfigurationManager.GetDomain(this.Organizacao); #region Verifica no AD //using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Dominio)) //{ // if (!pc.ValidateCredentials(UserName, Password)) // return usuario; ; //} #endregion #region Verifica no CRM usuario = new Domain.Servicos.RepositoryService(this.Organizacao, this.IsOffline).Usuario.ObterPor(Dominio + @"\barramento"); #endregion return(usuario); }
private Ocorrencia ConverterOcorrencia(XmlDocument xml, Domain.Model.Conta assistenciaTecnica, string LoginDoPostoAutorizado, out string mensagem) { mensagem = String.Empty; string cpfCnpj = string.Empty; if (string.IsNullOrEmpty(xml.GetElementsByTagName("CPFouCNPJ")[0].InnerText)) { mensagem += " \nO número do CNPJ/CPF do cliente deve ser informado"; } else if (!string.IsNullOrEmpty(xml.GetElementsByTagName("CPFouCNPJ")[0].InnerText)) { cpfCnpj = xml.GetElementsByTagName("CPFouCNPJ")[0].InnerText; cpfCnpj = cpfCnpj.Replace("-", "").Replace("/", "").Replace(".", ""); if (cpfCnpj.Length == 11) { cpfCnpj = String.Format(@"{0:000\.000\.000\-00}", Convert.ToInt64(cpfCnpj)); } else { cpfCnpj = String.Format(@"{0:00\.000\.000\/0000\-00}", Convert.ToInt64(cpfCnpj)); } } if (string.IsNullOrEmpty(xml.GetElementsByTagName("Codigo")[0].InnerText) || string.IsNullOrEmpty(xml.GetElementsByTagName("NumeroDeSerie")[0].InnerText)) { mensagem += " \nO número de série e o código do produto devem ser informados"; } if (string.IsNullOrEmpty(xml.GetElementsByTagName("NumeroNF")[0].InnerText)) { mensagem += " \nO número da nota fiscal deve ser informado"; } Ocorrencia ocorrencia = new Ocorrencia(nomeOrganizacao, false) { Nome = "Assistência Técnica", Rascunho = true, Origem = 200006 /*OS Integrada*/, TipoDeOcorrencia = (int)TipoDeOcorrencia.Ordem_de_Serviço, RazaoStatus = (int)StatusDaOcorrencia.Aguardando_Analise, SolicitantePortal = LoginDoPostoAutorizado, PrioridadeValue = (int)TipoDePrioridade.Alta, DataDeAberturaDigitada = DateTime.Now, ProdutosDoCliente = xml.GetElementsByTagName("NumeroDeSerie")[0].InnerText, AparenciaDoProduto = xml.GetElementsByTagName("AparenciaDoProduto")[0].InnerText, AcessoriosOpcionais = xml.GetElementsByTagName("AcessoriosOpcionais")[0].InnerText, RetiradoPorNome = xml.GetElementsByTagName("RetiradoPorNome")[0].InnerText, RetiradoPorCPF = xml.GetElementsByTagName("RetiradoPorCPF")[0].InnerText, AcaoId = new Lookup(new Guid(SDKore.Configuration.ConfigurationManager.GetSettingValue("guid_acao_portal_astec")), "new_acao"), AssuntoId = new Lookup(new Guid(SDKore.Configuration.ConfigurationManager.GetSettingValue("guid_assunto_portal_astec")), "subject"), ClienteOS = new Domain.Model.Contato(nomeOrganizacao, false) { Nome = xml.GetElementsByTagName("NomeCliente")[0].InnerText, NomeCompleto = xml.GetElementsByTagName("NomeCliente")[0].InnerText, PrimeiroNome = (xml.GetElementsByTagName("NomeCliente")[0].InnerText.Contains(" ") ? xml.GetElementsByTagName("NomeCliente")[0].InnerText.Substring(0, xml.GetElementsByTagName("NomeCliente")[0].InnerText.IndexOf(" ")) : xml.GetElementsByTagName("NomeCliente")[0].InnerText), Sobrenome = (xml.GetElementsByTagName("NomeCliente")[0].InnerText.Contains(" ") ? xml.GetElementsByTagName("NomeCliente")[0].InnerText.Substring(xml.GetElementsByTagName("NomeCliente")[0].InnerText.IndexOf(" ") + 1, xml.GetElementsByTagName("NomeCliente")[0].InnerText.Length - xml.GetElementsByTagName("NomeCliente")[0].InnerText.IndexOf(" ") - 1) : xml.GetElementsByTagName("NomeCliente")[0].InnerText), CpfCnpj = cpfCnpj, Email1 = xml.GetElementsByTagName("EmailCliente")[0].InnerText, Endereco1Rua = xml.GetElementsByTagName("Logradouro")[0].InnerText, Endereco1Numero = xml.GetElementsByTagName("Numero")[0].InnerText, Endereco1Complemento = xml.GetElementsByTagName("Complemento")[0].InnerText, Endereco1Bairro = xml.GetElementsByTagName("Bairro")[0].InnerText, Endereco1Municipio = xml.GetElementsByTagName("Cidade")[0].InnerText, Endereco1CEP = xml.GetElementsByTagName("Cep")[0].InnerText, Endereco1Estado = xml.GetElementsByTagName("Uf")[0].InnerText, TelefoneComercial = xml.GetElementsByTagName("TelefonePrincipalCliente")[0].InnerText } }; Municipio cidade = new Domain.Servicos.RepositoryService().Municipio.ObterPor(xml.GetElementsByTagName("Uf")[0].InnerText, xml.GetElementsByTagName("Cidade")[0].InnerText); if (cidade != null) { ocorrencia.ClienteOS.Endereco1Municipioid = new Lookup(cidade.Id, "itbc_municipios"); if (cidade.Estadoid != null) { ocorrencia.ClienteOS.Endereco1Estadoid = cidade.Estadoid; } } #region Autorizada ocorrencia.Autorizada = assistenciaTecnica; ocorrencia.Autorizada.Nome = LoginDoPostoAutorizado; ocorrencia.Autorizada.NomeAbreviado = LoginDoPostoAutorizado; ocorrencia.AutorizadaId = new Lookup(assistenciaTecnica.Id, "account"); #endregion if (xml.GetElementsByTagName("Observacoes")[0].InnerText.Length < 4000) { ocorrencia.DescricaoDaMensagemDeIntegracao = xml.GetElementsByTagName("Observacoes")[0].InnerText; } else { mensagem += " \nNão foi possível converter Observacoes, o campo deve conter menos de 4000 caracteres"; } if (xml.GetElementsByTagName("DefeitoAlegado")[0].InnerText.Length < 4000) { ocorrencia.DefeitoAlegado = xml.GetElementsByTagName("DefeitoAlegado")[0].InnerText; } else { mensagem += " \nNão foi possível converter DefeitoAlegado, o campo deve conter menos de 4000 caracteres"; } if (xml.GetElementsByTagName("OSEmLote")[0].InnerText == "OK") { ocorrencia.Tipo = "Lote"; } if (!string.IsNullOrEmpty(xml.GetElementsByTagName("DataDeAberturaInformada")[0].InnerText)) { try { ocorrencia.DataOrigem = Convert.ToDateTime(xml.GetElementsByTagName("DataDeAberturaInformada")[0].InnerText); } catch { mensagem += " \nErro ao tentar converter DataDeAberturaInformada para data"; } } else { ocorrencia.DataOrigem = DateTime.Now; } if (!string.IsNullOrEmpty(xml.GetElementsByTagName("DataDeConsertoInformada")[0].InnerText)) { try { ocorrencia.DataDeConsertoDigitada = Convert.ToDateTime(xml.GetElementsByTagName("DataDeConsertoInformada")[0].InnerText); } catch { mensagem += " \nErro ao tentar converter DataDeConsertoInformada para data"; } ocorrencia.DataDeConsertoInformada = DateTime.Now; } if (!string.IsNullOrEmpty(xml.GetElementsByTagName("DataDeEntregaClienteInformada")[0].InnerText)) { try { ocorrencia.DataDeEntregaClienteInformada = Convert.ToDateTime(xml.GetElementsByTagName("DataDeEntregaClienteInformada")[0].InnerText); } catch { mensagem += " \nErro ao tentar converter DataDeEntregaClienteInformada para data"; } ocorrencia.DataDeEntregaClienteDigitada = DateTime.Now; } #region Nota Fiscal ocorrencia.NotaFiscalFatura = new Domain.Model.Fatura(nomeOrganizacao, false) { IDFatura = xml.GetElementsByTagName("NumeroNF")[0].InnerText, Cliente = new Domain.Model.Conta(nomeOrganizacao, false) { Nome = xml.GetElementsByTagName("RazaoSocial")[0].InnerText, CpfCnpj = xml.GetElementsByTagName("Cnpj")[0].InnerText, Telefone = xml.GetElementsByTagName("TelefonePrincipal")[0].InnerText, NomeAbreviado = (xml.GetElementsByTagName("NomeClienteNF")[0].InnerText != "") ? xml.GetElementsByTagName("NomeClienteNF")[0].InnerText : xml.GetElementsByTagName("NomeCliente")[0].InnerText //CpfCnpj = (!String.IsNullOrEmpty(xml.GetElementsByTagName("CPFCNPJClienteNF")[0].InnerText)) ? xml.GetElementsByTagName("CPFCNPJClienteNF")[0].InnerText : xml.GetElementsByTagName("CPFouCNPJ")[0].InnerText } }; ocorrencia.NumeroNfConsumido = xml.GetElementsByTagName("NumeroNF")[0].InnerText; ocorrencia.NomeDaLojaDoAtendimento = xml.GetElementsByTagName("RazaoSocial")[0].InnerText; ocorrencia.NomeConstadoNaNotaFiscalDeCompra = (xml.GetElementsByTagName("NomeClienteNF")[0].InnerText != "") ? xml.GetElementsByTagName("NomeClienteNF")[0].InnerText : xml.GetElementsByTagName("NomeCliente")[0].InnerText; ocorrencia.CpfCnpjConstadoNaNotaFiscalDeCompra = (!String.IsNullOrEmpty(xml.GetElementsByTagName("CPFCNPJClienteNF")[0].InnerText)) ? xml.GetElementsByTagName("CPFCNPJClienteNF")[0].InnerText : xml.GetElementsByTagName("CPFouCNPJ")[0].InnerText; ocorrencia.CnpjDaLojaDoAtendimento = xml.GetElementsByTagName("Cnpj")[0].InnerText; ocorrencia.TelefoneDaLojaDoAtendimento = xml.GetElementsByTagName("TelefonePrincipal")[0].InnerText; if (!String.IsNullOrEmpty(xml.GetElementsByTagName("DataDeCompra")[0].InnerText)) { try { ocorrencia.NotaFiscalFatura.DataEmissao = Convert.ToDateTime(xml.GetElementsByTagName("DataDeCompra")[0].InnerText); ocorrencia.DataConstadoNotaFiscalDeCompra = Convert.ToDateTime(xml.GetElementsByTagName("DataDeCompra")[0].InnerText); } catch { mensagem += " \nErro ao tentar converter DataDeCompra para data"; } } #endregion #region Produto Principal string numeroSerie = xml.GetElementsByTagName("NumeroDeSerie")[0].InnerText; string codigoProduto = xml.GetElementsByTagName("Codigo")[0].InnerText; List <Product> produtos = (new Domain.Servicos.RepositoryService()).Produto.BuscarEstruturaDoProdutoPor(numeroSerie, codigoProduto); if (produtos.Count > 0) { ocorrencia.Produto = produtos[0]; Product produtoCRM = (new Domain.Servicos.RepositoryService()).Produto.ObterPorNumero(ocorrencia.Produto.Codigo); if (produtoCRM == null) { throw new ArgumentException("Produto não foi encontrado para Número de Série ou Código informado. (CRM)"); } ocorrencia.Produto.Id = produtoCRM.Id; ocorrencia.ProdutoId = new Lookup(produtoCRM.Id, "product"); OcorrenciaService ocorrenciaService = new Domain.Servicos.OcorrenciaService(nomeOrganizacao, false); ocorrenciaService.Ocorrencia = ocorrencia; ocorrenciaService.ValidaAberturaOcorrenciaASTEC(); bool UrlImagemNota = string.IsNullOrEmpty(xml.GetElementsByTagName("URLImagemNota")[0].InnerText); LinhaComercial linhaComercial = (new Domain.Servicos.RepositoryService()).LinhaComercial.ObterPor(ocorrencia.Produto); if (linhaComercial != null) { if (UrlImagemNota && linhaComercial.ObrigatorioEnviarNotaFiscal.HasValue && linhaComercial.ObrigatorioEnviarNotaFiscal.Value && !ocorrencia.Tipo.Equals("Lote")) { mensagem += " \nObrigatório o envio do anexo da Nota Fiscal"; } } ocorrencia.DataFabricacaoProduto = ocorrencia.Produto.DataFabricacaoProduto; } else { mensagem += " \nProduto não foi encontrado para Numero de Serie ou Codigo informado"; } #endregion return(ocorrencia); }
private void VerificaIntervencao(Domain.Model.Diagnostico diagnostico, IPluginExecutionContext context) { if (context.Depth == 1) { //Controle de Id de ocorrência if (diagnostico.Ocorrencia == null && diagnostico.OcorrenciaId != null) { diagnostico.Ocorrencia = (new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Ocorrencia.Retrieve(diagnostico.OcorrenciaId.Id)); } if (diagnostico.Ocorrencia == null) { return; } if (new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Intervencao.ListarPor(diagnostico.Ocorrencia).Count > 0) { return; } var statusOcorrencia = (StatusDaOcorrencia)diagnostico.Ocorrencia.RazaoStatus.Value; if (statusOcorrencia != StatusDaOcorrencia.Aguardando_Analise && statusOcorrencia != StatusDaOcorrencia.Aguardando_Peça) { return; } if (diagnostico.GeraTroca.HasValue && diagnostico.GeraTroca.Value && diagnostico.QuantidadeSolicitada > 0 && diagnostico.Produto != null && diagnostico.Produto.IntervencaoTecnica != null && diagnostico.Produto.IntervencaoTecnica.Value) { this.CriarIntervencaoTecnica(diagnostico, "Produto do diagnóstico está em Intervenção Técnica.", context); return; } LinhaComercial linhaComercial = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).LinhaComercial.ObterPor(diagnostico.Ocorrencia.Produto); if (linhaComercial == null) { return; } if (linhaComercial.NumeroDeDiasParaReincidencia <= 0) { return; } DateTime dataCriacaoReincidente = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Ocorrencia.ObterDataDeCriacaoDoReincidentePorDiagnostico(diagnostico.Id); if (dataCriacaoReincidente != DateTime.MinValue) { if (linhaComercial.NumeroDeDiasParaReincidencia.HasValue && dataCriacaoReincidente.AddDays(linhaComercial.NumeroDeDiasParaReincidencia.Value) >= diagnostico.Ocorrencia.CriadoEm) { CriarIntervencaoTecnica(diagnostico, "Intervenção Técnica por reincidente.", context); return; } } List <Domain.Model.Diagnostico> diagnosticos = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline).Diagnostico.ListarPor(diagnostico.Ocorrencia); int quantidade = 0; foreach (Diagnostico item in diagnosticos) { if (item.GeraTroca.HasValue && item.GeraTroca.Value && item.QuantidadeSolicitada > 0) { quantidade += item.QuantidadeSolicitada.Value; } } if (linhaComercial.NumeroDeItensParaReincidencia > 0 && quantidade >= linhaComercial.NumeroDeItensParaReincidencia) { CriarIntervencaoTecnica(diagnostico, "Intervenção Técnica por quantidade de itens.", context); return; } } }
protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { Entity entidade = new Entity(); Domain.Model.Postagem post = new Domain.Model.Postagem(context.OrganizationName, context.IsExecutingOffline); var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: entidade = (Entity)context.InputParameters["Target"]; post = entidade.Parse <Domain.Model.Postagem>(context.OrganizationName, context.IsExecutingOffline); try { //adiciona data/hora no texto da postagem if (!post.Texto.StartsWith("<?xml")) { entidade.Attributes["text"] = string.Format("Em: {0}", DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss")) + Environment.NewLine + post.Texto; } //postagem do Lead Guid guidLead = new Guid(post.ReferenteA.Id.ToString()); var cliente = repositoryService.ClientePotencial.Retrieve(guidLead); if (cliente != null) { repositoryService.ClientePotencial.Update(cliente); } else { var oportunidade = repositoryService.Oportunidade.Retrieve(guidLead); if (oportunidade != null) { repositoryService.Oportunidade.Update(oportunidade); } } } catch (Exception e) { } break; case Domain.Enum.Plugin.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { entidade = (Entity)context.PostEntityImages["imagem"]; post = entidade.Parse <Domain.Model.Postagem>(context.OrganizationName, context.IsExecutingOffline); try { Guid guidLead = new Guid(post.ReferenteA.Id.ToString()); var cliente = repositoryService.ClientePotencial.Retrieve(guidLead); if (cliente != null) { repositoryService.ClientePotencial.Update(cliente); } else { var oportunidade = repositoryService.Oportunidade.Retrieve(guidLead); if (oportunidade != null) { repositoryService.Oportunidade.Update(oportunidade); } } } catch (Exception e) { } } break; } } }
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) { var contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService); switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { #region Create case Domain.Enum.Plugin.MessageName.Create: var e = (Entity)context.InputParameters["Target"]; var conta = e.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); if (e.Contains("itbc_cpfoucnpj") && conta.CpfCnpj != null) { if (contaService.BuscaContaPorCpfCnpj(conta.CpfCnpj, conta.TipoConstituicao.Value) != null) { throw new ArgumentException("(CRM) Ja Existe uma Conta com esse mesmo CPF/CNPJ."); } if (conta.TipoConstituicao != (int)Domain.Enum.Conta.TipoConstituicao.Estrangeiro) { e.Attributes["new_sem_masc_cnpj_cpf"] = conta.CpfCnpj.GetOnlyNumbers(); e.Attributes["itbc_cpfoucnpj"] = conta.CpfCnpj.InputMask(); } } else { throw new ArgumentException("(CRM) Campo CPF ou CNPJ não esta preenchido."); } PreenchimentoDeCampos(ref context, adminService); if (conta.AssistenciaTecnica == null) { e.Attributes["itbc_isastec"] = false; } //Atualiza endereço Padrão if (conta.EnderecoPadrao == "e") { e.Attributes["new_altera_endereco_padrao"] = "n"; } break; #endregion #region Update case Domain.Enum.Plugin.MessageName.Update: PreenchimentoDeCampos(ref context, adminService); var entityTarget = (Entity)context.InputParameters["Target"]; var entityPre = context.PreEntityImages["imagem"]; var entityMerge = context.GetContextEntityMerge("imagem"); var canalMerge = ((Entity)entityMerge).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); var canalPre = new Domain.Servicos.CanalServices(context.OrganizationName, context.IsExecutingOffline, adminService).ObterCanalPorId(canalMerge.ID.Value); var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); var contaUp = entityTarget.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); if (entityTarget.Contains("itbc_cpfoucnpj") && (canalPre.CpfCnpj.GetOnlyNumbers() != canalMerge.CpfCnpj.GetOnlyNumbers() || canalMerge.TipoConstituicao == (int)Domain.Enum.Conta.TipoConstituicao.Estrangeiro)) { if (contaService.BuscaOutraContaPorCpfCnpj(contaUp.CpfCnpj, contaUp.ID.Value, canalMerge.TipoConstituicao.Value) != null) { throw new ArgumentException("(CRM) Ja Existe uma Conta com esse mesmo CPF/CNPJ."); } entityTarget.Attributes["new_sem_masc_cnpj_cpf"] = contaUp.CpfCnpj.GetOnlyNumbers(); } foreach (var item in entityTarget.Attributes) { entityMerge.Attributes[item.Key] = item.Value; } if (canalMerge.AssistenciaTecnica == null) { entityTarget.Attributes["itbc_isastec"] = false; } //Atualiza endereço Padrão if (canalMerge.EnderecoPadrao == "e") { new Intelbras.CRM2013.Domain.Servicos.EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService).AtualizaEnderecosAdicionaisDaConta(canalMerge); entityTarget.Attributes["new_altera_endereco_padrao"] = "n"; } //Atualizando informações de endereço entityTarget.Attributes["address1_line1"] = canalMerge.Endereco1Rua; entityTarget.Attributes["address1_city"] = canalMerge.Endereco1Cidade; entityTarget.Attributes["address2_city"] = canalMerge.Endereco1Cidade; entityTarget.Attributes["address1_county"] = canalMerge.Endereco1Bairro; entityTarget.Attributes["address2_county"] = canalMerge.Endereco2Bairro; entityTarget.Attributes["address1_stateorprovince"] = canalMerge.Endereco1Estado; entityTarget.Attributes["new_sem_masc_cnpj_cpf"] = canalMerge.CpfCnpj.GetOnlyNumbers(); if (canalMerge.Classificacao != null && canalMerge.Classificacao.Id == SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda")) { if ((!canalPre.ParticipantePrograma.HasValue || canalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) && canalMerge.ParticipantePrograma.HasValue && canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { canalMerge.IntegrarNoPlugin = true; } } //Valida Credenciamento if (canalMerge.Classificacao != null && canalMerge.Classificacao.Id != SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda")) { if (canalPre.ParticipantePrograma.HasValue && canalMerge.ParticipantePrograma.HasValue && canalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim && canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaAdesaoaoPrograma(canalMerge); entityTarget.Attributes["itbc_integraintelbraspontua"] = true; canalMerge.IntegraIntelbrasPontua = true; } } //Envia conta para Fielo var IntegraPontua = (new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaIntegraPontuaFielo(canalPre, canalMerge)); entityTarget.Attributes["itbc_integraintelbraspontua"] = IntegraPontua; canalMerge.IntegraIntelbrasPontua = IntegraPontua; // Valida Descredenciamento ao programa if (canalPre.ParticipantePrograma.HasValue && canalMerge.ParticipantePrograma.HasValue && canalPre.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim && (canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Nao || canalMerge.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Descredenciado)) { // Se usuário tentando descredenciar. if (context.Depth == 1) { new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).ValidarDescredenciamentoAoPrograma(canalMerge); entityTarget.Attributes["itbc_integraintelbraspontua"] = true; canalMerge.IntegraIntelbrasPontua = true; } } //Envia Verba para Fielo if (canalMerge.StatusEnvioVMC == (int)Domain.Enum.Conta.StatusEnvioVMC.AguardandoEnvio) { entityTarget.Attributes["itbc_statusenviovmc"] = (int)Domain.Enum.Conta.StatusEnvioVMC.Enviando; canalMerge.IntegrarNoPlugin = true; } if (!canalMerge.IntegrarNoPlugin || canalMerge.IntegrarNoPlugin == null || canalMerge.IntegrarNoPlugin.ToString().Equals("")) { contaService.IntegracaoBarramento(canalMerge, ref entityTarget); } break; #endregion } }
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 = (Entity)context.InputParameters["Target"]; Domain.Model.Conta Conta = entidade.Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline); #region Sharepoint if (Conta != null && !string.IsNullOrEmpty(Conta.RazaoSocial)) { new SharepointServices(context.OrganizationName, context.IsExecutingOffline, adminService).CriarDiretorio <Domain.Model.Conta>(Conta.RazaoSocial, Conta.ID.Value); } var enderecoService = new EnderecoService(context.OrganizationName, context.IsExecutingOffline, adminService); enderecoService.AtualizaEnderecosAdicionaisDaConta(Conta); #endregion break; case Domain.Enum.Plugin.MessageName.Update: var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, adminService); var CanalPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); var CanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.Conta>(context.OrganizationName, context.IsExecutingOffline, adminService); if (CanalPost.Classificacao != null && CanalPost.Classificacao.Id == SDKore.Configuration.ConfigurationManager.GetSettingValue <Guid>("Intelbras.Classificacao.Revenda")) { if ((!CanalPre.ParticipantePrograma.HasValue || CanalPre.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) && CanalPost.ParticipantePrograma.HasValue && CanalPost.ParticipantePrograma.Value == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { var entityTarget = (Entity)context.InputParameters["Target"]; var contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService); CanalPost.IntegrarNoPlugin = false; AdesaoRevenda(CanalPost, repositoryService); } } //Adesão ao programa if (CanalPre.ParticipantePrograma != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim && CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim) { new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).AdesaoAoPrograma(CanalPost); var integraPontua = (new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).validaIntegraPontuaFielo(CanalPre, CanalPost)); var contatos = repositoryService.Contato.ListarAssociadosA(CanalPost.ID.ToString()); var contatoService = new Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline, adminService); foreach (var contato in contatos) { contato.IntegraIntelbrasPontua = true; contatoService.Persistir(contato); } } //Envia contatos para Fielo na troca de categoria da revenda if (CanalPre.Categoria != CanalPost.Categoria && CanalPost.Categoria.Name != "Registrada") { var contatos = repositoryService.Contato.ListarAssociadosA(CanalPost.ID.ToString()); var contatoService = new Domain.Servicos.ContatoService(context.OrganizationName, context.IsExecutingOffline, adminService); foreach (var contato in contatos) { contato.IntegraIntelbrasPontua = true; contatoService.Persistir(contato); } } //Descredenciamento ao programa if (CanalPre.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim && (CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Nao || CanalPost.ParticipantePrograma == (int)Domain.Enum.Conta.ParticipaDoPrograma.Descredenciado)) { new Domain.Servicos.BeneficioDoCanalService(context.OrganizationName, context.IsExecutingOffline, adminService).DescredenciamentoAoPrograma(CanalPost); } //Envia Verba para Fielo if (CanalPost.StatusEnvioVMC == (int)Domain.Enum.Conta.StatusEnvioVMC.Enviando) { string retorno = new Domain.Servicos.VerbaVmcService(context.OrganizationName, context.IsExecutingOffline, adminService).EnviaVerbaFielo(CanalPost, CanalPost.CpfCnpj); var contaService = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, adminService); Conta CanalUpdate = new Conta(context.OrganizationName, context.IsExecutingOffline); CanalUpdate.ID = CanalPost.ID; if (!retorno.Contains("false")) { CanalUpdate.StatusEnvioVMC = (int)Domain.Enum.Conta.StatusEnvioVMC.Enviado; CanalUpdate.DataUltimoEnvioVMC = DateTime.Now.AddHours(3); CanalUpdate.TemDrireitoVMC = false; CanalUpdate.IntegrarNoPlugin = true; contaService.Persistir(CanalUpdate); } else { CanalUpdate.StatusEnvioVMC = (int)Domain.Enum.Conta.StatusEnvioVMC.ErroAoEnviar; CanalUpdate.TemDrireitoVMC = false; CanalUpdate.IntegrarNoPlugin = true; contaService.Persistir(CanalUpdate); } } 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); var repositoryService = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline); ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); try { Entity entidade = new Entity(); Domain.Model.Anotacao anotacao = new Domain.Model.Anotacao(context.OrganizationName, context.IsExecutingOffline); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) { switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName)) { case Domain.Enum.Plugin.MessageName.Create: entidade = (Entity)context.InputParameters["Target"]; anotacao = entidade.Parse <Domain.Model.Anotacao>(context.OrganizationName, context.IsExecutingOffline); try { Guid guidLead = new Guid(anotacao.EntidadeRelacionada.Id.ToString()); var ocorrencia = repositoryService.Ocorrencia.Retrieve(guidLead); if (ocorrencia != null) { if (ocorrencia.IntegraAstec == (int)IntegrarASTEC.Sim) { string lstResposta = new Domain.Servicos.OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(ocorrencia); } } var cliente = repositoryService.ClientePotencial.Retrieve(guidLead); if (cliente != null) { repositoryService.ClientePotencial.Update(cliente); } else { var oportunidade = repositoryService.Oportunidade.Retrieve(guidLead); if (oportunidade != null) { repositoryService.Oportunidade.Update(oportunidade); } } } catch (System.Exception e) { } break; case Domain.Enum.Plugin.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { entidade = (Entity)context.PostEntityImages["imagem"]; anotacao = entidade.Parse <Domain.Model.Anotacao>(context.OrganizationName, context.IsExecutingOffline); try { Guid guidLead = new Guid(anotacao.EntidadeRelacionada.Id.ToString()); var ocorrencia = repositoryService.Ocorrencia.Retrieve(guidLead); if (ocorrencia != null) { if (ocorrencia.IntegraAstec == (int)IntegrarASTEC.Sim) { string lstResposta = new Domain.Servicos.OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(ocorrencia); } } var cliente = repositoryService.ClientePotencial.Retrieve(guidLead); if (cliente != null) { repositoryService.ClientePotencial.Update(cliente); } else { var oportunidade = repositoryService.Oportunidade.Retrieve(guidLead); if (oportunidade != null) { repositoryService.Oportunidade.Update(oportunidade); } } } catch (System.Exception e) { } } break; } } } catch (Exception ex) { trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), @"Postagem", DateTime.Now)); trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); throw new InvalidPluginExecutionException(ex.Message); } }
public void Autenticar() { //Authenticate using credentials of the logged in user; string UserName = "******"; string Password = "******"; string Dominio = "INTELBRAS"; bool autAD = false; using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Dominio)) { autAD = pc.ValidateCredentials(UserName, Password); } if (!autAD) { } UserName = Dominio + @"\" + UserName; //System.Collections.Generic.List<Domain.Model.ReceitaPadrao> rec = Domain.Servicos.RepositoryService.ReceitaPadrao.ListarPor(); Domain.Model.Usuario usuario = new Domain.Servicos.RepositoryService(this.OrganizationName, this.IsOffline).Usuario.ObterPor(UserName); if (usuario == null || usuario.ID == null) { } Uri OrganizationUri = new Uri("http://10.1.1.171:5554/XRMServices/2011/Organization.svc"); //ClientCredentials Credentials = new ClientCredentials(); //Credentials.UserName.UserName = UserName; //Credentials.UserName.Password = Password; IServiceManagement <IOrganizationService> orgServiceManagement = ServiceConfigurationFactory.CreateManagement <IOrganizationService>(OrganizationUri); #region Testes AuthenticationCredentials authCredentials = new AuthenticationCredentials(); authCredentials.ClientCredentials.Windows.ClientCredential = new System.Net.NetworkCredential(UserName, Password, "Intelbras"); using (OrganizationServiceProxy organizationProxy = GetProxy <IOrganizationService, OrganizationServiceProxy>(orgServiceManagement, authCredentials)) { // This statement is required to enable early-bound type support. organizationProxy.EnableProxyTypes(); IOrganizationService _service = (IOrganizationService)organizationProxy; Entity myAccount = new Entity("account"); myAccount["name"] = "Test Account"; _service.Create(myAccount); // DiscoveryServiceProxy dsp = new DiscoveryServiceProxy(OrganizationUri, null, Credentials, null); // dsp.Authenticate(); // organizationProxy.Authenticate(); // // Now make an SDK call with the organization service proxy. // // Display information about the logged on user. // //Guid userid = ((WhoAmIResponse)organizationProxy.Execute(new WhoAmIRequest())).UserId; // //SystemUser systemUser = organizationProxy.Retrieve("systemuser", userid, new ColumnSet(new string[] { "firstname", "lastname" })).ToEntity<SystemUser>(); } #endregion //Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials; //OrganizationServiceProxy serviceProxy; //using (OrganizationServiceProxy serviceProxy = new OrganizationServiceProxy(OrganizationUri, null, Credentials, null)) //{ // serviceProxy.CallerId = new Guid("E53CBD6F-8E9D-E311-888D-00155D013E2E"); // IOrganizationService _service = (IOrganizationService)serviceProxy; // Entity myAccount = new Entity("account"); // myAccount["name"] = "Test Account"; // _service.Create(myAccount); // OrganizationServiceContext orgContext = new OrganizationServiceContext(serviceProxy); //} }
public void Execute(IServiceProvider serviceProvider) { var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); ITracingService trace = (ITracingService)serviceProvider.GetService(typeof(ITracingService)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(null); 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) { var entidade = (Entity)context.InputParameters["Target"]; Domain.Model.Diagnostico diagnosticoCreate = entidade.Parse <Domain.Model.Diagnostico>(context.OrganizationName, context.IsExecutingOffline, service); OcorrenciaService ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service); ocorrenciaService.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, service).Ocorrencia.Retrieve(diagnosticoCreate.OcorrenciaId.Id); ocorrenciaService.AlterarStatusDaOcorrenciaParaOMenorStatusDosDiagnosticosRelacionados(); //this.VerificaIntervencao(diagnosticoCreate, context, service); } break; case Domain.Enum.Plugin.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var entidade = context.PostEntityImages["imagem"]; Domain.Model.Diagnostico diagnosticoUpdate = entidade.Parse <Domain.Model.Diagnostico>(context.OrganizationName, context.IsExecutingOffline, service); OcorrenciaService ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service); ocorrenciaService.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, service).Ocorrencia.Retrieve(diagnosticoUpdate.OcorrenciaId.Id); ocorrenciaService.AlterarStatusDaOcorrenciaParaOMenorStatusDosDiagnosticosRelacionados(); //this.VerificaIntervencao(diagnosticoUpdate, context, service); } break; case Domain.Enum.Plugin.MessageName.Delete: if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity) { var entidade = context.PreEntityImages["imagem"]; Domain.Model.Diagnostico diagnosticoUpdate = entidade.Parse <Domain.Model.Diagnostico>(context.OrganizationName, context.IsExecutingOffline, service); OcorrenciaService ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service); ocorrenciaService.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, service).Ocorrencia.Retrieve(diagnosticoUpdate.OcorrenciaId.Id); ocorrenciaService.AlterarStatusDaOcorrenciaParaOMenorStatusDosDiagnosticosRelacionados(); } break; case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var entidade = context.PostEntityImages["imagem"]; Domain.Model.Diagnostico diagnosticoUpdate = entidade.Parse <Domain.Model.Diagnostico>(context.OrganizationName, context.IsExecutingOffline, service); Diagnostico diagnostico = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, service).Diagnostico.Retrieve(diagnosticoUpdate.Id); OcorrenciaService ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service); ocorrenciaService.Ocorrencia = new Domain.Servicos.RepositoryService(context.OrganizationName, context.IsExecutingOffline, service).Ocorrencia.Retrieve(diagnostico.OcorrenciaId.Id); ocorrenciaService.AlterarStatusDaOcorrenciaParaOMenorStatusDosDiagnosticosRelacionados(); } break; } } catch (Exception ex) { trace.Trace(String.Format("EXCEPTION PLUGIN {0} {1} [{2}]", context.MessageName.ToLower(), "new_diagnostico_ocorrencia", DateTime.Now)); trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); throw new InvalidPluginExecutionException(ex.Message); } }