コード例 #1
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        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));
                }
            }
        }
コード例 #2
0
        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.");
            }
        }
コード例 #3
0
ファイル: TestesMunicipio.cs プロジェクト: ertprs/crm_fonte
        public void Teste_ObterIbgeViewModelPor_codigoIbge()
        {
            int codigoIbge = 1;

            var IbgeViewModel = new Domain.Servicos.RepositoryService(OrganizationName, IsOffline)
                                                   .Municipio.ObterIbgeViewModelPor(codigoIbge);
        }
コード例 #4
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        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));
                }
            }
        }
コード例 #5
0
        protected void BuscarMaisEnderecos(Guid enderecoId)
        {
            var cliente = new Conta();

            cliente.Id = enderecoId;

            var enderecos = new Domain.Servicos.RepositoryService().Endereco.ObterTodosOsEnderecosPor(cliente);

            this.BindGrid(enderecos);
        }
コード例 #6
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        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));
                }
            }
        }
コード例 #7
0
        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;
            }
        }
コード例 #8
0
ファイル: VerAnotacoes.aspx.cs プロジェクト: ertprs/crm_fonte
        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;
            }
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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);
        }
コード例 #11
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        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;
                }
            }
        }
コード例 #12
0
ファイル: ManagerPreEvent.cs プロジェクト: ertprs/crm_fonte
        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;
                }
            }
        }
コード例 #13
0
ファイル: ManagerPreEvent.cs プロジェクト: ertprs/crm_fonte
        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);
            }
        }
コード例 #14
0
        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
            }
        }
コード例 #15
0
        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;
            }
        }
コード例 #16
0
ファイル: ManagerPostEvent.cs プロジェクト: ertprs/crm_fonte
        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);
            }
        }
コード例 #17
0
        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);

            //}
        }
コード例 #18
0
        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);
            }
        }