/// <summary> /// The main entry point for the application. /// </summary> static int Main() { try { string organizationName = SDKore.Configuration.ConfigurationManager.GetSettingValue("OrganizacaoIntelbras"); var relacionamentoCanalService = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(organizationName, false); #region Recupera valor do parâmetro global. Intelbras.CRM2013.Domain.Servicos.RepositoryService RepositoryService = new Intelbras.CRM2013.Domain.Servicos.RepositoryService(organizationName, false); var parametroGlobal = RepositoryService.ParametroGlobal.ObterPorCodigoTipoParametroGlobal((int)Domain.Enum.TipoParametroGlobal.DataExecucaoValorPSD); if (parametroGlobal == null) { throw new ArgumentException("(CRM) Não foi encontrado Parametro Global [" + (int)(int)Domain.Enum.TipoParametroGlobal.DataExecucaoValorPSD + "]."); } var dataConsulta = Convert.ToDateTime(parametroGlobal.Valor); #endregion if (dataConsulta.Date == DateTime.Now.Date) { ProdutoService ProdutoServices = new ProdutoService(organizationName, false); ProdutoServices.EnviarValorPSD(); #region Atualiza data parâmetro global parametroGlobal.Valor = Helper.ProximoMes().Day.ToString() + "/" + Helper.ProximoMes().Month.ToString() + "/" + Helper.ProximoMes().Year.ToString(); RepositoryService.ParametroGlobal.Update(parametroGlobal); #endregion } } catch (Exception ex) { Console.WriteLine("Erro : " + ex.Message); } return(0); }
public static void RelavidarUsuariosEquipe() { //string Org = "CRM2013D"; string Org = "INTELBRASQA"; List <Intelbras.CRM2013.Domain.Model.Conta> listContas = new Intelbras.CRM2013.Domain.Servicos.ContaService(Org, false).ListarTodasContas(); if (listContas.Count > 0) { Console.WriteLine("Quantidade de Contas para processamento : " + listContas.Count.ToString()); } else { Console.WriteLine("Não há conta para processamento."); } foreach (Intelbras.CRM2013.Domain.Model.Conta registroConta in listContas) { //Console.WriteLine("Verificando conta Guid : " + registroConta.ID.Value.ToString()); if (registroConta.Proprietario.Type == "team") { //verifica todos os usuários que estão na equipes. List <Intelbras.CRM2013.Domain.Model.TeamMembership> membrosEquipe = new Intelbras.CRM2013.Domain.Servicos.EquipeService(Org, false).listarMembrosEquipe(registroConta.Proprietario.Id); foreach (Intelbras.CRM2013.Domain.Model.TeamMembership membroEquipe in membrosEquipe) { //verifica se existe algum usuario na Equipe que não existe no registro Intelbras.CRM2013.Domain.Model.RelacionamentoCanal Assistente = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).ListarPorAssistente((Guid)registroConta.ID, membroEquipe.Usuario); Intelbras.CRM2013.Domain.Model.RelacionamentoCanal Supervisor = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).ListarPorSupervisor((Guid)registroConta.ID, membroEquipe.Usuario); if (Assistente == null && Supervisor == null) { if (membroEquipe.Usuario != registroConta.CriadoPor.Id) { new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(Org, false).RemoverUserEquipe(registroConta.Proprietario.Id, membroEquipe.Usuario); } Console.WriteLine("Removendo membro da equipe conta :" + registroConta.ID.Value.ToString()); } } } } }
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 { var relacionamentoCanalService = new Intelbras.CRM2013.Domain.Servicos.RelacionamentoCanalService(context.OrganizationName, context.IsExecutingOffline, service); 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"]; var RelacionamentoCanal = entidade.Parse <Domain.Model.RelacionamentoCanal>(context.OrganizationName, context.IsExecutingOffline); //Se registro duplicado estoura exception relacionamentoCanalService.VerificarRegistroDuplicado(RelacionamentoCanal); //Envia mensagem 0137 if (!RelacionamentoCanal.IntegrarNoPlugin) { relacionamentoCanalService.IntegracaoBarramento(RelacionamentoCanal); } } break; case Domain.Enum.Plugin.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var RelCanalPre = ((Entity)context.PreEntityImages["imagem"]).Parse <Domain.Model.RelacionamentoCanal>(context.OrganizationName, context.IsExecutingOffline); var RelCanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.RelacionamentoCanal>(context.OrganizationName, context.IsExecutingOffline); //Envia mensagem 0137 caso não haja mudança de status if (RelCanalPre.Status == RelCanalPost.Status) { relacionamentoCanalService.IntegracaoBarramento(RelCanalPost); } } break; case Domain.Enum.Plugin.MessageName.Delete: break; #region SetStateDynamicEntity case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var RelCanalPost = ((Entity)context.PostEntityImages["imagem"]).Parse <Domain.Model.RelacionamentoCanal>(context.OrganizationName, context.IsExecutingOffline); //Envia mensagem 0137 caso haja mudança de status relacionamentoCanalService.IntegracaoBarramento(RelCanalPost); } break; #endregion } } catch (Exception ex) { string message = SDKore.Helper.Error.Handler(ex); trace.Trace(SDKore.Helper.Error.GetMessageError(ex)); throw new InvalidPluginExecutionException(message); } }