public string PercorreMensagens(ArrayList pMensagens, Saidas pSaidas, string pToken, string pTokenSecret, Ip pClasseIp) { try { //Sai da rotina caso não houver mensagens para tratar if (pMensagens == null || pMensagens.Count.Equals(0)) { return("OK"); } //==================================================== //Busca comandos cadastrados var listaComandos = Busca(); //========================== //Verifica se obteve com sucesso os comandos if (listaComandos == null || listaComandos.Count.Equals(0)) { return("Sem comandos cadastrados"); } //========================================== //Passa por todas as mensagens coletadas foreach (var mensagem in pMensagens) { //Obtem objeto da mensagem var itemMensagem = (Mensagem)mensagem; //Salva id da mensagem executada Parametros.GravaUltimaMsgId(PathSd, itemMensagem.Id); //Verifica se nao deve finalizar a aplicação if (itemMensagem.Texto.IndexOf("finalizar app") >= 0) { Parametros.GravaUltimaMsgId(PathSd, itemMensagem.Id); return("close"); } //Passa por cada comando foreach (var listaComando in listaComandos) { var itemcomando = (Comando)listaComando; //Verifica se comando está ativo if (!itemcomando.Ativo) { continue; } //Verifica se encontra o nome do comando detro da mensagem if (itemMensagem.Texto.IndexOf(itemcomando.Nome) >= 0) { //Verifica se há restrição para usuários if (itemcomando.RestricaoUsuarios != string.Empty && !(itemcomando.RestricaoUsuarios.IndexOf(itemMensagem.EnviadoPor) >= 0)) { continue; } //Executa o comando var retorno = itemcomando.TipoComando == TipoComandoEnum.Simples ? Executa(itemcomando, pSaidas) : ExecutaEncadeado(itemcomando, pSaidas); //Verifica retorno da execução if (retorno) { //Salva id da mensagem executada //Parametros.GravaUltimaMsgId(PathSd, itemMensagem.Id); //Verifica necessidade de envio de retorno if (itemcomando.EnviaRetorno) { Mensagem.EnviaMensagem(pToken, pTokenSecret, itemMensagem.EnviadoPor, "Comando_" + itemcomando.Descricao + "_executado_com_sucesso"); } } else { //Verifica necessidade de envio de retorno if (itemcomando.EnviaRetorno) { Mensagem.EnviaMensagem(pToken, pTokenSecret, itemMensagem.EnviadoPor, "Comando_" + itemcomando.Descricao + "_nao_executado_Erro_de_execucao"); } } //Proxima mensagem break; } //if comando } //foreach comando } //foreach mensagem //Retorno com sucesso return("OK"); } catch (Exception ex) { //Grava log Funcoes.EscreverLog(PathSd, "Erro de exceção ocorrido ao percorrer mensagens: " + ex, 1, false); return(ex.Message); } }