Esempio n. 1
0
        public void testarDuplicidade()
        {
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Domain.Model.PoliticaComercial politica = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(organizationName, false).ObterPor(new Guid("039F0F9A-56B1-E411-BFBC-00155D013E80"));

            List <Guid> lstPoliticaEstado = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(this.OrganizationName, this.IsOffline).ListarEstadosDaPoliticaComercial(politica.ID.Value);

            List <Guid> lstPoliticaCanais = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(this.OrganizationName, this.IsOffline).ListarCanaisDaPoliticaComercial(politica.ID.Value);

            bool resposta, resposta2;

            if (lstPoliticaEstado.Count > 0)
            {
                resposta = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(this.OrganizationName, this.IsOffline).VerificarDuplicidadePoliticaRegistros(politica, lstPoliticaEstado, "estado", false);
            }
            if (lstPoliticaCanais.Count > 0)
            {
                resposta2 = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(this.OrganizationName, this.IsOffline).VerificarDuplicidadePoliticaRegistros(politica, lstPoliticaCanais, "conta", false);
            }

            if (lstPoliticaEstado.Count == 0 && lstPoliticaCanais.Count == 0)
            {
                new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(this.OrganizationName, this.IsOffline).VerificarExistenciaPoliticaComercial(politica);
            }
        }
Esempio n. 2
0
        public void Execute(IServiceProvider serviceProvider)
        {
            var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            PoliticaComercialServ = new Domain.Servicos.PoliticaComercialService(context.OrganizationName, context.IsExecutingOffline);

            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService        service        = serviceFactory.CreateOrganizationService(null);

            try
            {
                Entity entidade = new Entity();
                Domain.Model.PoliticaComercial politicaComercialAtual = new Domain.Model.PoliticaComercial(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:

                        #region Popula o objeto politicaComercialAtual com o contexto

                        entidade = (Entity)context.InputParameters["Target"];
                        politicaComercialAtual = entidade.Parse <Domain.Model.PoliticaComercial>(context.OrganizationName, context.IsExecutingOffline);

                        #endregion
                        if (politicaComercialAtual.Status.Value == (int)Domain.Enum.PoliticaComercial.Status.Ativo)
                        {
                            JaExistePoliticaComercial(politicaComercialAtual);
                        }

                        break;

                    case Domain.Enum.Plugin.MessageName.Update:

                        if (context.PreEntityImages.Contains("imagem") && context.PreEntityImages["imagem"] is Entity)
                        {
                            #region Popula o objeto politicaComercial com a pre-image

                            entidade = (Entity)context.PreEntityImages["imagem"];
                            Domain.Model.PoliticaComercial politicaOriginal = entidade.Parse <Domain.Model.PoliticaComercial>(context.OrganizationName, context.IsExecutingOffline);

                            #endregion

                            #region Popula objeto politicaComercial com o contexto alterado

                            Entity entidadeAlterada = (Entity)context.InputParameters["Target"];
                            Domain.Model.PoliticaComercial politicaAlterada = entidadeAlterada.Parse <Domain.Model.PoliticaComercial>(context.OrganizationName, context.IsExecutingOffline);

                            #endregion

                            #region Popula objeto politicaComercial mesclando o que foi alterado com os dados originais, para efeito de validação

                            politicaComercialAtual.Categoria       = politicaAlterada.Categoria != null ? politicaAlterada.Categoria : politicaOriginal.Categoria;
                            politicaComercialAtual.Classificacao   = politicaAlterada.Classificacao != null ? politicaAlterada.Classificacao : politicaOriginal.Classificacao;
                            politicaComercialAtual.Estabelecimento = politicaAlterada.Estabelecimento != null ? politicaAlterada.Estabelecimento : politicaOriginal.Estabelecimento;
                            politicaComercialAtual.ID = politicaAlterada.ID.HasValue ? politicaAlterada.ID : politicaOriginal.ID;
                            politicaComercialAtual.AplicarPoliticaPara = politicaAlterada.AplicarPoliticaPara != null ? politicaAlterada.AplicarPoliticaPara : politicaOriginal.AplicarPoliticaPara;
                            politicaComercialAtual.UnidadeNegocio      = politicaAlterada.UnidadeNegocio != null ? politicaAlterada.UnidadeNegocio : politicaOriginal.UnidadeNegocio;
                            politicaComercialAtual.TipoDePolitica      = politicaAlterada.TipoDePolitica != null ? politicaAlterada.TipoDePolitica : politicaOriginal.TipoDePolitica;
                            politicaComercialAtual.DataInicio          = politicaAlterada.DataInicio.HasValue ? politicaAlterada.DataInicio : politicaOriginal.DataInicio;
                            politicaComercialAtual.DataFim             = politicaAlterada.DataFim.HasValue ? politicaAlterada.DataFim : politicaOriginal.DataFim;

                            politicaComercialAtual.Status = politicaAlterada.Status != null ? politicaAlterada.Status : politicaOriginal.Status;

                            #endregion
                            if (politicaComercialAtual.Status.Value == (int)Domain.Enum.PoliticaComercial.Status.Ativo)
                            {
                                List <Guid> lstPoliticaEstado = new List <Guid>(), lstPoliticaCanais = new List <Guid>();
                                //Se ele tiver alterado o status ou a data de inicio ou de fim verifica as services de estado e canais relacionados
                                if ((politicaAlterada.Status != null && politicaOriginal.Status != politicaAlterada.Status) ||
                                    politicaAlterada.DataInicio != null && politicaOriginal.DataInicio != politicaAlterada.DataInicio ||
                                    politicaAlterada.DataFim != null && politicaOriginal.DataFim != politicaAlterada.DataFim)
                                {
                                    lstPoliticaEstado = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(context.OrganizationName, context.IsExecutingOffline, service).ListarEstadosDaPoliticaComercial(politicaComercialAtual.ID.Value);
                                    lstPoliticaCanais = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(context.OrganizationName, context.IsExecutingOffline, service).ListarCanaisDaPoliticaComercial(politicaComercialAtual.ID.Value);

                                    bool respostaEstados = false, respostaCanais = false;
                                    if (lstPoliticaEstado.Count > 0)
                                    {
                                        respostaEstados = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(context.OrganizationName, context.IsExecutingOffline, service).VerificarDuplicidadePoliticaRegistros(politicaComercialAtual, lstPoliticaEstado, "estado", false);
                                    }
                                    if (lstPoliticaCanais.Count > 0)
                                    {
                                        respostaCanais = new Intelbras.CRM2013.Domain.Servicos.PoliticaComercialService(context.OrganizationName, context.IsExecutingOffline, service).VerificarDuplicidadePoliticaRegistros(politicaComercialAtual, lstPoliticaCanais, "conta", false);
                                    }

                                    if (respostaEstados == true)
                                    {
                                        throw new InvalidPluginExecutionException("(CRM)Não é possível realizar a operação: O estado informado já está vinculado à outra política comercial com o mesmo tipo, aplicação, estabelecimento, unidade de negócio e data de vigência");
                                    }

                                    if (respostaCanais == true)
                                    {
                                        throw new InvalidPluginExecutionException("(CRM)Não é possível realizar a operação: O canal informado já está vinculado à outra política comercial com o mesmo tipo, aplicação, estabelecimento, unidade de negócio e data de vigência");
                                    }

                                    if (lstPoliticaEstado.Count == 0 && lstPoliticaCanais.Count == 0)
                                    {
                                        JaExistePoliticaComercial(politicaComercialAtual);
                                    }
                                }
                            }
                        }

                        break;
                    }
                }
            }
            catch (Exception ex)
            {
                SDKore.Helper.Error.Handler(ex);
                throw;
            }
        }
        public void Copiar(string organizationName, bool copiarProdutos, bool copiarEstados, DateTime dataInicialVigencia, DateTime dataFinalVigencia, string[] lstRegitrosId)
        {
            PoliticaComercialService politicaDomainService = new PoliticaComercialService(organizationName, false);

            foreach (var id in lstRegitrosId)
            {
                var guidPoliticaAntiga = new Guid(id);
                var politicaTmp        = politicaDomainService.ObterPor(guidPoliticaAntiga);

                politicaTmp.ID          = null;
                politicaTmp.Id          = Guid.Empty;
                politicaTmp.DataInicio  = dataInicialVigencia;
                politicaTmp.DataFim     = dataFinalVigencia;
                politicaTmp.Status      = (int)Enum.PoliticaComercial.Status.Ativo;
                politicaTmp.RazaoStatus = (int)Enum.PoliticaComercial.RazaoStatus.Rascunho;

                Guid newPoliticaGuid = RepositoryService.PoliticaComercial.Create(politicaTmp);

                var listaCanaisPolitica = politicaDomainService.ListarCanaisDaPoliticaComercial(guidPoliticaAntiga);

                foreach (var canaisTmp in listaCanaisPolitica)
                {
                    RepositoryService.PoliticaComercial.CriarAssociacaoCanal(newPoliticaGuid, canaisTmp);
                }

                if (copiarEstados)
                {
                    var listaEstados = politicaDomainService.ListarEstadosDaPoliticaComercial(guidPoliticaAntiga);

                    foreach (var estadoTmp in listaEstados)
                    {
                        RepositoryService.PoliticaComercial.CriarAssociacaoEstado(newPoliticaGuid, estadoTmp);
                    }
                }

                if (copiarProdutos)
                {
                    var listaProdutoPoliticaComercial = politicaDomainService.ListarProdutoDaPoliticaComercial(guidPoliticaAntiga);

                    foreach (var produtoPoliticaTmp in listaProdutoPoliticaComercial)
                    {
                        produtoPoliticaTmp.ID = null;
                        produtoPoliticaTmp.Id = Guid.Empty;
                        produtoPoliticaTmp.PoliticaComercial  = new Lookup(newPoliticaGuid, "");
                        produtoPoliticaTmp.DataInicioVigencia = dataInicialVigencia;
                        produtoPoliticaTmp.DataFimVigencia    = dataFinalVigencia;

                        RepositoryService.ProdutoPoliticaComercial.Create(produtoPoliticaTmp);
                    }


                    var listaFamiliaPoliticaComercial = politicaDomainService.ListarFamiliaDaPoliticaComercial(guidPoliticaAntiga);

                    foreach (var familiaPoliticaTmp in listaFamiliaPoliticaComercial)
                    {
                        familiaPoliticaTmp.ID = null;
                        familiaPoliticaTmp.Id = Guid.Empty;
                        familiaPoliticaTmp.PoliticaComercial = new Lookup(newPoliticaGuid, "");
                        familiaPoliticaTmp.DataInicial       = dataInicialVigencia;
                        familiaPoliticaTmp.DataFinal         = dataFinalVigencia;

                        RepositoryService.FamiliaPoliticaComercial.Create(familiaPoliticaTmp);
                    }
                }
            }
        }