public bool ExecutaEncadeado(Comando pComando, Saidas pSaidas) { foreach (var comando in pComando.ListaComandos) { Executa(Busca(int.Parse(comando)), pSaidas); } return(true); }
public bool Executa(Comando pComando, Saidas pSaidas) { try { switch (pComando.EquipamentosId) { case 1: { pSaidas.Tomada1.Write(pComando.EstadoEquipamento); break; } case 2: { pSaidas.Tomada2.Write(pComando.EstadoEquipamento); break; } case 3: { pSaidas.Tomada3.Write(pComando.EstadoEquipamento); break; } case 4: { pSaidas.Tomada4.Write(pComando.EstadoEquipamento); break; } case 5: { pSaidas.Tomada5.Write(pComando.EstadoEquipamento); break; } } return(true); } catch (Exception ex) { //Grava log Funcoes.EscreverLog(PathSd, "Erro de exceção ocorrido ao executar comando '" + pComando.Nome + "': " + ex, 1, false); return(false); } }
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); } }