public CodigoInfravermelhoModel GetByIdSalaAndIdOperacao(int idSala, int operacao)
        {
            var _equipamentoService = new EquipamentoService(_context);
            var equipamento         = _equipamentoService.GetByIdSalaAndTipoEquipamento(idSala, EquipamentoModel.TIPO_CONDICIONADOR);

            return(GetByIdOperacaoAndIdEquipamento(equipamento.Id, operacao));
        }
        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);
        }