public void MonitoramentoManualEPorTarefasESolicitacoes()
        {
            Trace       = new SDKore.Helper.Trace("Monitoramento Manual e por Tarefas e Solicitacoes");
            mensagemLog = new List <string>();
            InserirLog("INICIO - Monitoramento Manual e por Tarefas e Solicitacoes");

            #region parametro de entrada
            int[] tiposMonitoramentoIn = new int[3];
            tiposMonitoramentoIn[0] = (int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.Manual;
            tiposMonitoramentoIn[1] = (int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas;
            tiposMonitoramentoIn[2] = (int)Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.Solicitacoes;
            #endregion

            List <CompromissosDoCanal> lstCompCanal = CompromissoDoCanalService.ListarVencidosManualPorTarefasESolicitacoes(tiposMonitoramentoIn,
                                                                                                                            RepositoryService.StatusCompromissos.ObterPor(Enum.CompromissoCanal.StatusCompromisso.Cumprido).ID.Value);

            if (lstCompCanal.Count() > 0)
            {
                if (lstCompCanal != null)
                {
                    foreach (var compCanal in lstCompCanal)
                    {
                        if (compCanal.CompromissosDoPrograma.TipoMonitoramento != null)
                        {
                            switch (compCanal.CompromissosDoPrograma.TipoMonitoramento.Value)
                            {
                            case (int)Enum.CompromissoPrograma.TipoMonitoramento.Manual:
                                this.ExecutaVerificacaoDeValidade_Manual(compCanal);
                                break;

                            case (int)Enum.CompromissoPrograma.TipoMonitoramento.Solicitacoes:
                                this.ExecutaVerificacaoDeValidade_Solicitacoes(compCanal);
                                break;

                            case (int)Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas:
                                this.ExecutaVerificacaoDeValidade_Tarefas(compCanal);
                                break;
                            }
                        }
                    }
                }
            }

            InserirLog("FIM - Monitoramento Manual e por Tarefas e Solicitacoes");

            #region MANDA EMAIL DE LOG MonitoramntoAutomatico
            StringBuilder sb = new StringBuilder();
            foreach (string item in mensagemLog)
            {
                sb.AppendLine(item);
            }

            this.EnviaEmailDeLog("Monitoramento Manual e por Tarefas e Solicitacoes");
            #endregion
        }
        public void MonitoramentoPorSolicitacoes()
        {
            Trace       = new SDKore.Helper.Trace("Monitoramento por Solicitação");
            mensagemLog = new List <string>();

            List <CompromissosDoCanal> lstCompCanal = CompromissoDoCanalService.ListarAtivosVencidosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.Solicitacoes);

            foreach (var item in lstCompCanal)
            {
                List <Tarefa> tarefas = TarefaService.ListarTarefasAtivas(item.ID.Value);

                var compromissoCanalUpdate = new CompromissosDoCanal(item.OrganizationName, isOffline)
                {
                    ID = item.ID
                };

                if (tarefas.Count > 0)
                {
                    compromissoCanalUpdate.StatusCompromisso = new Lookup(StatusCompromissoNaoCumprido.ID.Value, "");
                }
                else
                {
                    ParametroGlobal paramGlobal = new Domain.Servicos.ParametroGlobalService(RepositoryService.NomeDaOrganizacao, RepositoryService.IsOffline, RepositoryService.Provider)
                                                  .ObterFrequenciaAtividadeChecklist(item.Compromisso.Id);

                    if (paramGlobal != null)
                    {
                        compromissoCanalUpdate.Validade = DateTime.Today.AddDays(int.Parse(paramGlobal.Valor));
                    }
                    else
                    {
                        InserirLogFormat("Parametro global {0} não localizado para o compromisso {1}", Enum.TipoParametroGlobal.FrequenciaChecklist, item.Compromisso.Name);
                        continue;
                    }
                }

                RepositoryService.CompromissosDoCanal.Update(compromissoCanalUpdate);
            }

            this.EnviaEmailDeLog("Monitoramento Por Solicitações");
        }
        // CASO DE USO 5 – MONITORAMENTO MANUAL
        public void MonitoramentoManual()
        {
            Trace = new SDKore.Helper.Trace("Monitoramento Manual");

            if (StatusCompromissoNaoCumprido == null)
            {
                throw new ApplicationException("A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido);
            }

            // OBTEM COMPROMISSOS DO CANAL (CASO USO 5: STEP 4)
            // VERIFICA VALIDADE (CASO USO 5: STEP 5)
            List <CompromissosDoCanal> lstCompCanal = CompromissoDoCanalService.ListarAtivosVencidosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.Manual);

            Trace.Add("Foram encontrados {0} para ser processado!", lstCompCanal.Count);
            Trace.SaveClear();

            foreach (var item in lstCompCanal)
            {
                try
                {
                    var compromissoCanalUpdate = new CompromissosDoCanal(item.OrganizationName, item.IsOffline)
                    {
                        ID = item.ID,
                        StatusCompromisso = new Lookup(StatusCompromissoNaoCumprido.ID.Value, "")
                    };

                    Trace.Add("Atualizando o compromisso do Canal [{0}] para não cumprido!", item.ID);
                    Trace.SaveClear();

                    RepositoryService.CompromissosDoCanal.Update(compromissoCanalUpdate);
                }
                catch (Exception ex)
                {
                    SDKore.Helper.Error.Handler(ex);
                }
            }
        }
示例#4
0
        // CASO DE USO 4 – MONITORAMENTO POR TAREFAS
        public void MonitoramentoPorTarefas()
        {
            Trace       = new SDKore.Helper.Trace("MonitoramentoPorTarefa");
            mensagemLog = new List <string>();

            if (StatusCompromissoCumprido == null)
            {
                throw new ApplicationException("(CRM) A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Cumprido);
            }

            if (StatusCompromissoNaoCumprido == null)
            {
                throw new ApplicationException("(CRM) A execução do monitoramento foi interrompida, não foi encontrado o Status do Compromisso: " + Intelbras.CRM2013.Domain.Enum.CompromissoCanal.StatusCompromisso.Nao_Cumprido);
            }

            List <CompromissosDoCanal> compromissosCanalVencidos = CompromissoDoCanalService.ListarAtivosVencidosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas);

            Trace.Add("Foram encontrados {0} vencidos para ser processado!", compromissosCanalVencidos.Count);
            Trace.SaveClear();

            foreach (var item in compromissosCanalVencidos)
            {
                var compromissoCanalUpdate = new CompromissosDoCanal(item.OrganizationName, item.IsOffline)
                {
                    ID = item.ID,
                    StatusCompromisso = new Lookup(StatusCompromissoNaoCumprido.ID.Value, "")
                };

                Trace.Add("Atualizando o compromisso do Canal [{0}] para não cumprido!", item.ID);
                Trace.SaveClear();

                RepositoryService.CompromissosDoCanal.Update(compromissoCanalUpdate);
            }

            List <CompromissosDoCanal> compromissosCanalCumpridos = CompromissoDoCanalService.ListarAtivosCumpridos(Intelbras.CRM2013.Domain.Enum.CompromissoPrograma.TipoMonitoramento.PorTarefas);

            Trace.Add("Foram encontrados {0} Cumpridos para ser processado!", compromissosCanalCumpridos.Count);
            Trace.SaveClear();

            foreach (var item in compromissosCanalCumpridos)
            {
                List <Tarefa> tarefas = RepositoryService.Tarefa.ListarPorReferenteAAtivo(item.ID.Value);

                // CRIA TAREFA CASO NAO EXISTA (CASO USO 4: STEP 6)
                if (tarefas.Count == 0)
                {
                    try
                    {
                        #region Obtem Parametros Global
                        if (item.UnidadeDeNegocio == null || item.Compromisso == null)
                        {
                            throw new ArgumentException("(CRM) O Comromisso do Canal a seguir não tem Unidade de Negócio ou Compromisso preenchido. " + item.ID.Value);
                        }

                        ParametroGlobal frequenciaChecklist = ParametroGlobal.ObterPor((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.FrequenciaChecklist,
                                                                                       null, null, null, null, item.Compromisso.Id, null, null);

                        ParametroGlobal atividadesChecklist = ParametroGlobal.ObterPor((int)Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.AtividadesChecklist,
                                                                                       null, null, null, null, item.Compromisso.Id, null, null);

                        if (frequenciaChecklist == null)
                        {
                            InserirLogFormat("Parametro Global {0} não foi localizado.", Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.FrequenciaChecklist);
                            continue;
                        }

                        if (atividadesChecklist == null)
                        {
                            InserirLogFormat("Parametro Global {0} não foi localizado.", Intelbras.CRM2013.Domain.Enum.TipoParametroGlobal.AtividadesChecklist);
                            continue;
                        }

                        #endregion

                        #region Criando Tarefa

                        var task = new Model.Tarefa(OrganizationName, isOffline);
                        task.Assunto    = string.Format("Atividades Checklist - {0} - {1}", item.UnidadeDeNegocio.Name, item.Compromisso.Name);
                        task.ReferenteA = new Lookup(item.ID.Value, SDKore.Crm.Util.Utility.GetEntityName(item));
                        task.Descricao  = atividadesChecklist.Valor;

                        task.DataInicial = DateTime.Now;
                        task.Conclusao   = DateTime.Today.AddDays(int.Parse(frequenciaChecklist.Valor));
                        task.Prioridade  = (int)Enum.Tarefa.Prioridade.Normal;
                        task.Status      = (int)Enum.Tarefa.StatusCode.NaoIniciada;

                        Trace.Add("Criando Tarefa para Compromisso do Canal [{0}]", item.ID.Value);
                        Trace.Add("Atividades Checklist [{0}]", atividadesChecklist.Valor);
                        Trace.Add("Frequencia Checklist [{0}]", frequenciaChecklist.Valor);

                        RepositoryService.Tarefa.Create(task);

                        #endregion
                    }
                    catch (Exception ex)
                    {
                        Trace.Add(ex);
                        InserirLog(SDKore.Helper.Error.Handler(ex));
                    }
                    finally
                    {
                        Trace.SaveClear();
                    }
                }
            }

            this.EnviaEmailDeLog("Monitoramento Por Tarefas");
        }