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); } }
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); } } } }