Exemplo n.º 1
0
        public bool SolicitaAtualizacaoHorarioESP(string ipSala, DateTime dataHorario)
        {
            //Se a reserva cadastrada for antes do próximo domingo, será solicitado ao esp32
            //para atualizar a base
            DateTime dataAtual = DateTime.Now;
            DateTime proximoDomingo;

            int nDia = (int)dataAtual.DayOfWeek;

            proximoDomingo = nDia == 0 ? dataAtual : DateTime.Now.AddDays(7 - nDia).Date;

            if (dataHorario <= proximoDomingo)
            {
                var socketService = new ClienteSocketService(ipSala);
                socketService.AbrirConexao();
                bool resultado = socketService.EnviarComando("atualizarHorarios;") != null;
                socketService.FecharConexao();

                return(resultado);
            }
            return(false);
        }
        private bool EnviarComandosMonitoramento(MonitoramentoModel solicitacao)
        {
            var  _hardwareDeSalaService   = new HardwareDeSalaService(_context);
            var  modelDesatualizado       = GetById(solicitacao.Id);
            bool comandoEnviadoComSucesso = true;

            /*
             * Verifica qual o equipamento foi 'monitorado' para ligar/desligar
             */
            if (solicitacao.ArCondicionado != modelDesatualizado.ArCondicionado)
            {
                var _codigosInfravermelhoService = new CodigoInfravermelhoService(_context);
                var _equipamentoServiceService   = new EquipamentoService(_context);
                var idOperacao           = solicitacao.ArCondicionado ? OperacaoModel.OPERACAO_LIGAR : OperacaoModel.OPERACAO_DESLIGAR;
                var equipamento          = _equipamentoServiceService.GetByIdSalaAndTipoEquipamento(solicitacao.SalaId, EquipamentoModel.TIPO_CONDICIONADOR);
                var codigosInfravermelho = _codigosInfravermelhoService.GetByIdOperacaoAndIdEquipamento(equipamento.Id, idOperacao);
                var hardwareDeSala       = _hardwareDeSalaService.GetByIdSalaAndTipoHardware(solicitacao.SalaId, TipoHardwareModel.CONTROLADOR_DE_SALA).FirstOrDefault();

                if (codigosInfravermelho == null)
                {
                    throw new ServiceException("Houve um problema e o monitoramento não pode ser finalizado, por favor tente novamente mais tarde!");
                }

                var mensagem = "CONDICIONADOR;" + codigosInfravermelho.Codigo + ";";

                try
                {
                    var clienteSocket = new ClienteSocketService(hardwareDeSala.Ip);

                    clienteSocket.AbrirConexao();
                    var status = clienteSocket.EnviarComando(mensagem);
                    clienteSocket.FecharConexao();

                    solicitacao.ArCondicionado = status.Contains("AC-ON");
                    comandoEnviadoComSucesso   = status != null;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return(false);
                }
            }
            else if (solicitacao.Luzes != modelDesatualizado.Luzes)
            {
                var hardwareDeSala = _hardwareDeSalaService.GetByIdSalaAndTipoHardware(solicitacao.SalaId, TipoHardwareModel.CONTROLADOR_DE_SALA).FirstOrDefault();

                var mensagem = "LUZES;" + solicitacao.Luzes + ";";

                try
                {
                    var clienteSocket = new ClienteSocketService(hardwareDeSala.Ip);

                    clienteSocket.AbrirConexao();
                    var status = clienteSocket.EnviarComando(mensagem);
                    clienteSocket.FecharConexao();

                    solicitacao.Luzes        = status.Contains("L-ON");
                    comandoEnviadoComSucesso = status != null;
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                    return(false);
                }
            }

            return(comandoEnviadoComSucesso);
        }