public void GerarAtividadeChecklist(string nomeAtividade, CompromissosDoCanal ObjCompromisso, Usuario Proprietario)
        {
            Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);

            ParametroGlobal paramGlobal = new Domain.Servicos.ParametroGlobalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                          .ObterFrequenciaAtividadeChecklist(ObjCompromisso.Compromisso.Id);

            if (paramGlobal != null && paramGlobal.Valor != null)
            {
                tarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt32(paramGlobal.Valor));
            }
            else
            {
                tarefa.Conclusao = null;
            }

            // tarefa.Proprietario = new SDKore.DomainModel.Lookup(Proprietario.Id, Proprietario.Name, Proprietario.Type);

            tarefa.Assunto = nomeAtividade;

            Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarTipoTarefa("Checklist");
            if (tipoAtividade != null)
            {
                tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
            }

            tarefa.ReferenteA = new SDKore.DomainModel.Lookup(ObjCompromisso.ID.Value, "itbc_compdocanal");

            tarefa.ID = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).Persistir(tarefa);
            if (tarefa.ID.HasValue)
            {
                new Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", Proprietario.Id, "task", tarefa.ID.Value);
            }
        }
Esempio n. 2
0
        public bool TargetQueuedTask(Domain.Model.Tarefa tarefa, Guid filaDestino)
        {
            //var target = new TargetQueuedTask();
            //target.EntityId = tarefa.ID.Value;

            ////Identifica o SourceQueueId conforme usuário
            //WhoAmIRequest userRequest = new WhoAmIRequest();
            //WhoAmIResponse user = (WhoAmIResponse)this.Execute(userRequest);

            //QueryByAttribute query = new QueryByAttribute();
            //query.ColumnSet = new AllColumns();
            //query.EntityName = EntityName.queue.ToString();
            //query.Attributes = new string[] { "primaryuserid", "queuetypecode" };
            //query.Values = new string[] { user.UserId.ToString(), "3" };
            //BusinessEntityCollection results = this.Provider.RetrieveMultiple(query);
            //queue wipQueue = (queue)results.BusinessEntities[0];

            ////Monta atributos da fila e adiciona na fila
            //var request = new Microsoft.Crm.SdkTypeProxy.RouteRequest();
            //request.Target = target;
            //request.RouteType = Microsoft.Crm.Sdk.RouteType.Queue;
            //request.EndpointId = filaDestino;
            //request.SourceQueueId = wipQueue.queueid.Value;
            //RouteResponse routed = (RouteResponse)this.Execute(request);

            //return (routed != null);
            return(true);
        }
Esempio n. 3
0
        public void CriarTarefaChecklist(Tarefa tarefa)
        {
            if (tarefa.ReferenteA != null && tarefa.ReferenteA.Type.Equals("account"))
            {
                return;
            }

            var conta = RepositoryService.Conta.Retrieve(tarefa.ReferenteA.Id, "itbc_classificacaoid", "name");

            if (conta == null || conta.Classificacao == null)
            {
                return;
            }

            var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService);
            var pAtividadeCheckList    = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
            var pListaAtividades       = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

            if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor))
            {
                throw new ArgumentException("(CRM) Operação Cancelada. O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
            }

            if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor))
            {
                throw new ArgumentException("(CRM) Operação Cancelada. O parâmetro global de Atividade  de Checklist (63) para Visita Comercial de canais com classificação :  " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
            }

            var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
            var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist");

            var novaTarefa = new Domain.Model.Tarefa(RepositoryService);

            novaTarefa.Assunto    = "Checklist - " + conta.RazaoSocial;
            novaTarefa.Conclusao  = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor));
            novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account");
            novaTarefa.Descricao  = pListaAtividades.Valor;

            if (tipoAtividade != null)
            {
                novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
            }

            tarefaService.Persistir(novaTarefa);
            Guid idTarefa = tarefaService.Persistir(tarefa);

            if (idTarefa != Guid.Empty)
            {
                Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarProprietario("task", "activityid", tarefa.Id);
                if (proprietario != null)
                {
                    new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", proprietario.Id, "task", idTarefa);
                }
            }
        }
Esempio n. 4
0
        public void testeMonitoramento()
        {
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Intelbras.CRM2013.Domain.Model.Tarefa      imagemTarefa = new Domain.Servicos.TarefaService(organizationName, false).BuscaTarefa(new Guid("463D2AC8-AF48-E411-93F5-00155D013E70"));
            Intelbras.CRM2013.Domain.Model.Tarefa      mTarefa      = new Domain.Model.Tarefa(organizationName, false);
            Domain.Servicos.CompromissosDoCanalService ServiceCompromissosDoCanal = new Domain.Servicos.CompromissosDoCanalService(organizationName, false);
            Domain.Servicos.StatusCompromissoService   StatusCompromissoService   = new Domain.Servicos.StatusCompromissoService(organizationName, false);
            //mTarefa = imagemTarefa;
            mTarefa.Resultado = null;

            if (imagemTarefa.TipoDeAtividade.Name.Contains("Checklist"))
            {
                if (mTarefa.Resultado.HasValue)
                {
                    switch (mTarefa.Resultado)
                    {
                    case (int)Domain.Enum.Tarefa.Resultado.Reprovada:
                        Domain.Model.CompromissosDoCanal mCompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(mTarefa.ReferenteA.Id);
                        if (mCompromissoCanal != null)
                        {
                            Domain.Model.StatusCompromissos statusComp = StatusCompromissoService.ObterPorNome("Não cumprido");
                            if (statusComp != null)
                            {
                                //Só atualiza o status do compromisso se ele for diferente do status que será mudado
                                if (mCompromissoCanal.StatusCompromisso.Id != statusComp.ID.Value)
                                {
                                    mCompromissoCanal.StatusCompromisso.Id = statusComp.ID.Value;
                                    ServiceCompromissosDoCanal.Atualizar(mCompromissoCanal);
                                }
                            }
                        }
                        break;

                    case (int)Domain.Enum.Tarefa.Resultado.Aprovada:
                        Domain.Model.CompromissosDoCanal mCompromissoCanalAprovado = ServiceCompromissosDoCanal.BuscarPorGuid(mTarefa.ReferenteA.Id);
                        if (mCompromissoCanalAprovado != null)
                        {
                            Domain.Model.StatusCompromissos statusComp = StatusCompromissoService.ObterPorNome("Cumprido");
                            if (statusComp != null)
                            {
                                //Só atualiza o status do compromisso se ele for diferente do status que será mudado
                                if (mCompromissoCanalAprovado.StatusCompromisso.Id != statusComp.ID.Value)
                                {
                                    mCompromissoCanalAprovado.StatusCompromisso.Id = statusComp.ID.Value;
                                    ServiceCompromissosDoCanal.Atualizar(mCompromissoCanalAprovado);
                                }
                            }
                        }
                        break;
                    }
                }
            }
        }
Esempio n. 5
0
        public void TestePluginCompromissoCanal()
        {
            //Variaveis para criacao da tarefa
            string   assunto       = string.Empty;
            string   tipoTarefa    = "Pendência do Canal";
            DateTime dtConclusao   = DateTime.Now;
            int      tipoParametro = (int)Domain.Enum.TipoParametroGlobal.NumeroDiasParaCumprimento;

            Domain.Model.CompromissosDoCanal compromissoCanalPost = new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline)
                                                                    .BuscarPorGuid(new Guid("EA8DD4C0-1432-E411-940F-00155D013D31"));

            if (compromissoCanalPost.StatusCompromisso != null && compromissoCanalPost.StatusCompromisso.Name == Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido)
            {
                //Verifica o tipo de compromisso e muda as variaveis necessarias para criar a tarefa com base no compromisso
                switch (compromissoCanalPost.Compromisso.Name)
                {
                case Domain.Enum.CompromissoCanal.Compromisso.Showroom:
                    assunto     = "Envio de evidências de Showroom";
                    dtConclusao = DateTime.Now.AddMonths(6);
                    break;

                case Domain.Enum.CompromissoCanal.Compromisso.RenovacaoContatos:
                case Domain.Enum.CompromissoCanal.Compromisso.Sellout:
                case Domain.Enum.CompromissoCanal.Compromisso.Documentacao:
                    assunto = compromissoCanalPost.Nome;
                    //Pega a data de conclusao da tarefa nos parametros global com base no nome do tipoParametro + Guid compromisso
                    dtConclusao = DateTime.Now.AddMonths(Convert.ToInt32(new Domain.Servicos.ParametroGlobalService(this.OrganizationName, this.IsOffline)
                                                                         .ObterPor(tipoParametro, null, null, null, null, compromissoCanalPost.Compromisso.Id, null, null).Valor));
                    break;
                }

                Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(this.OrganizationName, this.IsOffline);

                //Pegamos o canal para verificar o proprietario
                Domain.Model.Conta canal = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline)
                                           .BuscaConta(compromissoCanalPost.Canal.Id);

                tarefa.Assunto = assunto;

                Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).BuscarTipoTarefa(tipoTarefa);
                if (tipoAtividade != null)
                {
                    tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                }

                tarefa.Conclusao = dtConclusao;

                tarefa.ReferenteA = new SDKore.DomainModel.Lookup(compromissoCanalPost.ID.Value, "itbc_compdocanal");

                tarefa.ID = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).Persistir(tarefa);
            }
        }
Esempio n. 6
0
        public void TestePluginSolicitacaoBeneficio()
        {
            Domain.Model.SolicitacaoBeneficio SolicitBeneficioPost = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(this.OrganizationName, this.IsOffline)
                                                                     .ObterPor(new Guid("116274FE-DBEF-E311-91F5-00155D013E44"));
            Domain.Model.SolicitacaoBeneficio SolBeneficioTarget = SolicitBeneficioPost;

            if (SolBeneficioTarget.BeneficioPrograma != null && SolBeneficioTarget.BeneficioPrograma.Name == "Showroom")
            {
                Domain.Model.CompromissosDoCanal compromissoCanal = new Domain.Model.CompromissosDoCanal(this.OrganizationName, this.IsOffline);

                #region Criacao Compromisso do Canal

                //Pegamos o canal para verificar o proprietario
                Domain.Model.Conta canal = new Domain.Servicos.ContaService(this.OrganizationName, this.IsOffline)
                                           .BuscaConta(SolicitBeneficioPost.Canal.Id);

                compromissoCanal.Canal = new SDKore.DomainModel.Lookup(canal.ID.Value, "");

                Domain.Model.CompromissosDoPrograma compromissoPrograma = new Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline)
                                                                          .BuscarCompromissoDoPrograma("Showroom");

                compromissoCanal.Compromisso = new SDKore.DomainModel.Lookup(compromissoPrograma.ID.Value, "");

                compromissoCanal.Nome = "Ter aderência às regras de utilização de identidade visual/showroom";

                compromissoCanal.ID = new Domain.Servicos.CompromissosDoCanalService(this.OrganizationName, this.IsOffline).Persistir(compromissoCanal);
                if (compromissoCanal.ID.HasValue)
                {
                    Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(this.OrganizationName, this.IsOffline).BuscarProprietario("account", "accountid", canal.Id);
                    if (proprietario != null)
                    {
                        new Domain.Servicos.UtilService(this.OrganizationName, this.IsOffline).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "itbc_compdocanal", compromissoCanal.ID.Value);
                    }
                }

                #endregion

                Domain.Model.Tarefa tarefa = new Domain.Model.Tarefa(this.OrganizationName, this.IsOffline);

                tarefa.Assunto = "Envio de evidências de Showroom";
                Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).BuscarTipoTarefa("Pendência do Canal");
                if (tipoAtividade != null)
                {
                    tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                }
                tarefa.Conclusao = DateTime.Now.AddMonths(6);

                tarefa.ReferenteA = new SDKore.DomainModel.Lookup(compromissoCanal.ID.Value, "itbc_compdocanal");

                tarefa.ID = new Domain.Servicos.TarefaService(this.OrganizationName, this.IsOffline).Persistir(tarefa);
            }
        }
Esempio n. 7
0
        public void GerarAtividadesVisitaComercial(Conta conta)
        {
            List <Model.RelacionamentoCanal> lstRelacionamento = new Domain.Servicos.RelacionamentoCanalService(RepositoryService).ListarAtivosPorCanal(conta.ID.Value);

            if (lstRelacionamento.Count > 0)
            {
                var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService);
                var pAtividadeCheckList    = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
                var pListaAtividades       = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

                if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor))
                {
                    throw new ArgumentException("(CRM) Operação Cancelada.O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
                }

                if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor))
                {
                    throw new ArgumentException("(CRM) Operação Cancelada.O parâmetro global de Atividade  de Checklist (63) para Visita Comercial de canais com classificação :  " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
                }

                var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
                var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist");

                foreach (RelacionamentoCanal registro in lstRelacionamento)
                {
                    if (registro.Supervisor != null)
                    {
                        var tarefa = new Domain.Model.Tarefa(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);

                        if (tipoAtividade != null)
                        {
                            tarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                        }

                        tarefa.Assunto    = "Checklist - " + conta.RazaoSocial;
                        tarefa.Conclusao  = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor));
                        tarefa.Descricao  = pListaAtividades.Valor;
                        tarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account");

                        Guid idTarefa = tarefaService.Persistir(tarefa);
                        if (idTarefa != Guid.Empty)
                        {
                            new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", registro.Supervisor.Id, "task", idTarefa);
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        public void TestarTarefaVisitaComercial()
        {
            string organizationName = ConfigurationManager.GetSettingValue("OrganizacaoIntelbras");

            Domain.Servicos.TarefaService ServiceTarefas = new Domain.Servicos.TarefaService(organizationName, false);
            Domain.Model.Tarefa           Tarefa         = ServiceTarefas.BuscaTarefa(new Guid("BEC979ED-A74F-E411-93F5-00155D013E70"));

            if (Tarefa.ReferenteA.Type.Equals("account"))
            {
                Domain.Model.Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(organizationName, false).BuscaConta(Tarefa.ReferenteA.Id);
                if (canal == null || canal.Classificacao == null)
                {
                    throw new ArgumentException("Conta cadastrada no campo 'Referente a' não encontrada!");
                }

                Domain.Model.ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
                Domain.Model.ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(organizationName, false).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

                List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(organizationName, false).ConverterParametroParaLista(paramGlobalListaAtividades.Valor);

                if (lstAtividades.Count > 0)
                {
                    string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto);

                    if (!string.IsNullOrEmpty(atividade))
                    {
                        Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(organizationName, false);

                        novaTarefa.Assunto = atividade;

                        Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(organizationName, false).BuscarTipoTarefa("Checklist");
                        if (tipoAtividade != null)
                        {
                            novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                        }
                        novaTarefa.Conclusao = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor));

                        novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account");

                        novaTarefa.ID = new Domain.Servicos.TarefaService(organizationName, false).Persistir(novaTarefa);
                    }
                }
            }
        }
Esempio n. 9
0
        public void Execute(IServiceProvider serviceProvider)
        {
            lock (thisLock)
            {
                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);

                TarefaService ServiceTarefas = new TarefaService(context.OrganizationName, context.IsExecutingOffline, service);
                CompromissosDoCanalService ServiceCompromissosDoCanal = new CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service);

                try
                {
                    trace.Trace(context.MessageName);

                    Intelbras.CRM2013.Domain.Model.Tarefa mTarefa = null;
                    switch (Util.Utilitario.ConverterEnum <Domain.Enum.Plugin.MessageName>(context.MessageName))
                    {
                    case Domain.Enum.Plugin.MessageName.Create:
                        var entidade = (Entity)context.InputParameters["Target"];
                        mTarefa = ServiceTarefas.BuscaTarefa(entidade.Id);


                        new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).CriarParecerParaSolicitacao(mTarefa);
                        Guid tipoAtividadeExecucao;

                        if (!Guid.TryParse(SDKore.Configuration.ConfigurationManager.GetSettingValue("TipoAtividadeExecucao"), out tipoAtividadeExecucao))
                        {
                            throw new ArgumentException("(CRM) Faltando parâmetro TipoAtividadeExecucao no SDKore");
                        }

                        trace.Trace("Parâmetro do Config: TipoAtividadeExecucao '{0}'", tipoAtividadeExecucao);

                        if (mTarefa.ReferenteA != null && mTarefa.TipoDeAtividade != null && mTarefa.TipoDeAtividade.Id == tipoAtividadeExecucao)
                        {
                            trace.Trace("Tarefa do tipo Execução.");

                            SolicitacaoBeneficio solBenef = new Intelbras.CRM2013.Domain.Servicos.SolicitacaoBeneficioService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor(mTarefa.ReferenteA.Id);

                            if (solBenef == null)
                            {
                                throw new ArgumentException("(CRM) Solicitação não encontrada.");
                            }

                            if (solBenef.TipoSolicitacao != null && solBenef.AjusteSaldo.Value)
                            {
                                trace.Trace("Solicitação do tipo Ajuste.");

                                Tarefa _mTarefa = new Intelbras.CRM2013.Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service);
                                _mTarefa.ID        = context.PrimaryEntityId;
                                _mTarefa.Resultado = (int)Domain.Enum.Tarefa.Resultado.PagamentoEfetuadoPedidoGerado;
                                _mTarefa.State     = 1;
                                string retorno;

                                TarefaService tarefaService = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service);
                                tarefaService.Persistir(_mTarefa, out retorno);

                                trace.Trace(tarefaService.Trace.StringTrace.ToString());
                                tarefaService.Trace.Save();
                            }
                        }

                        mTarefa.TempoAtuacao = 0;
                        break;

                    case Domain.Enum.Plugin.MessageName.SetStateDynamicEntity:

                        if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity)
                        {
                            Tarefa Tarefa = context.PostEntityImages["imagem"].Parse <Tarefa>(context.OrganizationName, context.IsExecutingOffline, service);

                            if (Tarefa.ReferenteA == null || Tarefa.State.Value != (int)Domain.Enum.Tarefa.StateCode.Fechada)
                            {
                                break;
                            }

                            if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoBeneficio>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaSolicitacaoBeneficio(Tarefa, context.UserId);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <SolicitacaoCadastro>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaSolicitacaoDeCadastro(Tarefa, context.UserId);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <CompromissosDoCanal>().ToLower())
                            {
                                new ProcessoDeSolicitacoesService(context.OrganizationName, context.IsExecutingOffline, service)
                                .ConcluirTarefaCompromissoCanal(Tarefa);
                            }
                            else if (Tarefa.ReferenteA.Type.ToLower() == SDKore.Crm.Util.Utility.GetEntityName <Conta>().ToLower())
                            {
                                if (Tarefa.TipoDeAtividade.Name.Contains("Checklist"))
                                {
                                    #region Pendencia Key-Account comentada

                                    Conta canal = new Intelbras.CRM2013.Domain.Servicos.ContaService(context.OrganizationName, context.IsExecutingOffline, service).BuscaConta(Tarefa.ReferenteA.Id);
                                    if (canal == null || canal.Classificacao == null)
                                    {
                                        throw new ArgumentException("(CRM) Conta cadastrada no campo 'Referente a' não encontrada!");
                                    }

                                    ParametroGlobal paramGlobal = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
                                    ParametroGlobal paramGlobalListaAtividades = new Intelbras.CRM2013.Domain.Servicos.ParametroGlobalService(context.OrganizationName, context.IsExecutingOffline, service).ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, canal.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

                                    List <String> lstAtividades = new Intelbras.CRM2013.Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).ConverterParametroParaLista(paramGlobalListaAtividades.Valor);

                                    if (lstAtividades.Count > 0)
                                    {
                                        string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(lstAtividades, Tarefa.Assunto);

                                        if (!string.IsNullOrEmpty(atividade))
                                        {
                                            Domain.Model.Tarefa novaTarefa = new Domain.Model.Tarefa(context.OrganizationName, context.IsExecutingOffline, service);

                                            Domain.Model.TipoDeAtividade tipoAtividade = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).BuscarTipoTarefa("Checklist");
                                            if (tipoAtividade != null)
                                            {
                                                novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
                                            }

                                            novaTarefa.Assunto    = atividade;
                                            novaTarefa.Conclusao  = DateTime.Now.AddDays(Convert.ToInt16(paramGlobal.Valor));
                                            novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(canal.ID.Value, "account");

                                            novaTarefa.ID = new Domain.Servicos.TarefaService(context.OrganizationName, context.IsExecutingOffline, service).Persistir(novaTarefa);
                                            if (novaTarefa.ID.HasValue)
                                            {
                                                Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("task", "activityid", Tarefa.Id);
                                                if (proprietario != null)
                                                {
                                                    new Domain.Servicos.UtilService(context.OrganizationName, context.IsExecutingOffline, service).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value);
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Domain.Model.CompromissosDoCanal CompromissoCanal = ServiceCompromissosDoCanal.BuscarPorGuid(Tarefa.ReferenteA.Id);

                                        if (CompromissoCanal != null && CompromissoCanal.Compromisso != null)
                                        {
                                            List <string> listaAtividadesCheckup2 = ServiceTarefas.ListarAtividadesCheckup(CompromissoCanal.Compromisso.Id);

                                            if (listaAtividadesCheckup2.Count > 0)
                                            {
                                                string atividade = ServiceTarefas.ObterProximaAtividadeCheckup(listaAtividadesCheckup2, Tarefa.Assunto);

                                                if (!string.IsNullOrEmpty(atividade))
                                                {
                                                    Domain.Model.Usuario proprietario = new Domain.Servicos.UsuarioService(context.OrganizationName, context.IsExecutingOffline, service).BuscarProprietario("itbc_compdocanal", "itbc_compdocanalid", CompromissoCanal.Id);
                                                    if (proprietario != null)
                                                    {
                                                        new Intelbras.CRM2013.Domain.Servicos.CompromissosDoCanalService(context.OrganizationName, context.IsExecutingOffline, service).GerarAtividadeChecklist(atividade, CompromissoCanal, proprietario);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                    #endregion
                                }
                            }
                        }
                        break;
                    }
                }
                catch (Exception ex)
                {
                    string message = SDKore.Helper.Error.Handler(ex);

                    trace.Trace(SDKore.Helper.Error.GetMessageError(ex));
                    throw new InvalidPluginExecutionException(message, ex);
                }
            }
        }
Esempio n. 10
0
        public void CriarTarefaChecklist(RelacionamentoCanal relacionamentoCanal)
        {
            if (relacionamentoCanal.Canal == null)
            {
                throw new ApplicationException("Canal precisa estar preenchido para criação das atividades de checklist!");
            }

            if (relacionamentoCanal.Supervisor == null)
            {
                throw new ApplicationException("Supervisor precisa estar preenchido para criação das atividades de checklist!");
            }

            var conta = RepositoryService.Conta.Retrieve(relacionamentoCanal.Canal.Id, "itbc_classificacaoid", "name", "itbc_participa_do_programa");

            if (!conta.ParticipantePrograma.HasValue || conta.ParticipantePrograma.Value != (int)Domain.Enum.Conta.ParticipaDoPrograma.Sim)
            {
                return;
            }

            if (conta == null || conta.Classificacao == null)
            {
                throw new ApplicationException("Canal precisa estar classificado para criação das atividades de checklist!");
            }

            var parametroGlobalService = new Servicos.ParametroGlobalService(RepositoryService);
            var pAtividadeCheckList    = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.FrequenciaChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);
            var pListaAtividades       = parametroGlobalService.ObterPor((int)Domain.Enum.TipoParametroGlobal.AtividadesChecklist, null, conta.Classificacao.Id, null, null, null, null, (int)Domain.Enum.ParametroGlobal.Parametrizar.VisitaComercial);

            if (pAtividadeCheckList == null || String.IsNullOrEmpty(pAtividadeCheckList.Valor))
            {
                throw new ApplicationException("Operação Cancelada. O parâmetro global de Frequência de Checklist (64) para Visita Comercial de canais com classificação : " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
            }

            if (pListaAtividades == null || String.IsNullOrEmpty(pListaAtividades.Valor))
            {
                throw new ApplicationException("Operação Cancelada. O parâmetro global de Atividade  de Checklist (63) para Visita Comercial de canais com classificação :  " + conta.Classificacao.Name + " não foi configurado. Para resolver o problema você deve criar esse parâmetro global.");
            }

            var tarefaService = new Domain.Servicos.TarefaService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider);
            var tipoAtividade = tarefaService.BuscarTipoTarefa("Checklist");

            var novaTarefa = new Domain.Model.Tarefa(RepositoryService);

            novaTarefa.Assunto    = "Checklist - " + conta.RazaoSocial;
            novaTarefa.Conclusao  = DateTime.Now.AddDays(Convert.ToInt16(pAtividadeCheckList.Valor));
            novaTarefa.ReferenteA = new SDKore.DomainModel.Lookup(conta.ID.Value, "account");
            novaTarefa.Descricao  = pListaAtividades.Valor;

            if (tipoAtividade != null)
            {
                novaTarefa.TipoDeAtividade = new SDKore.DomainModel.Lookup(tipoAtividade.ID.Value, tipoAtividade.Nome, "");
            }

            novaTarefa.ID = tarefaService.Persistir(novaTarefa);
            if (novaTarefa.ID.HasValue)
            {
                Usuario proprietario = new Domain.Servicos.UsuarioService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).BuscarProprietario("task", "activityid", relacionamentoCanal.Supervisor.Id);
                if (proprietario != null)
                {
                    new Domain.Servicos.UtilService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider).MudarProprietarioRegistro("systemuser", proprietario.ID.Value, "task", novaTarefa.ID.Value);
                }
            }
        }