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