public bool MonitorarSala(int idUsuario, MonitoramentoModel model)
        {
            if (model.SalaParticular)
            {
                var _salaParticular = new SalaParticularService(_context);
                if (_salaParticular.GetByIdUsuarioAndIdSala(idUsuario, model.SalaId) == null)
                {
                    throw new ServiceException("Houve um problema e o monitoramento não pode ser finalizado, por favor tente novamente mais tarde!");
                }
            }
            else
            {
                var _horarioSalaService = new HorarioSalaService(_context);
                if (!_horarioSalaService.VerificaSeEstaEmHorarioAula(idUsuario, model.SalaId))
                {
                    throw new ServiceException("Você não está no horário reservado para monitorar essa sala!");
                }
            }

            if (!EnviarComandosMonitoramento(model))
            {
                throw new ServiceException("Não foi possível concluir seu monitoramento pois não foi possível estabelecer conexão com a sala!");
            }

            return(Update(model));
        }
 private Monitoramento SetEntity(MonitoramentoModel model)
 {
     return(new Monitoramento
     {
         Id = model.Id,
         Luzes = Convert.ToByte(model.Luzes),
         ArCondicionado = Convert.ToByte(model.ArCondicionado),
         Sala = model.SalaId
     });
 }
 public bool Update(MonitoramentoModel model)
 {
     try
     {
         _context.Update(SetEntity(model));
         return(_context.SaveChanges() == 1);
     }
     catch (Exception)
     {
         throw new ServiceException("Houve um problema ao tentar fazer monitoramento da sala, por favor tente novamente em alguns minutos!");
     }
 }
Esempio n. 4
0
        public IActionResult MonitorarSala(MonitoramentoModel monitoramento)
        {
            try
            {
                if (!_monitoramentoService.MonitorarSala(_usuarioService.RetornLoggedUser((ClaimsIdentity)User.Identity).UsuarioModel.Id, monitoramento))
                {
                    TempData["mensagemErro"] = "Não foi possível atender a sua solicitacao, tente novamente!";
                }
            }
            catch (ServiceException se)
            {
                TempData["mensagemErro"] = se.Message;
            }

            return(RedirectToAction(nameof(Index)));
        }
Esempio n. 5
0
        public ActionResult Atualizar([FromBody] MonitoramentoModel monitoramento)
        {
            try
            {
                if (_service.Update(monitoramento))
                {
                    return(Ok());
                }

                return(BadRequest());
            }
            catch (ServiceException e)
            {
                return(StatusCode(500, e.Message));
            }
        }
        public bool Insert(MonitoramentoModel model)
        {
            try
            {
                if (GetByIdSala(model.SalaId) != null)
                {
                    return(true);
                }

                _context.Add(SetEntity(model));
                return(_context.SaveChanges() == 1);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
        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);
        }