public IActionResult Edit(int id, HardwareDeSalaModel hardware)
        {
            var idUsuario = _usuarioService.RetornLoggedUser((ClaimsIdentity)User.Identity).UsuarioModel.Id;

            ViewBag.Organizacoes = _organizacaoService.GetByIdUsuario(idUsuario);
            ViewBag.Blocos       = _blocoService.GetByIdOrganizacao(hardware.Organizacao);
            ViewBag.Salas        = _salaService.GetByIdBloco(hardware.Bloco);
            ViewBag.tipoHardware = new SelectList(_tipoHardwareService.GetAll(), "Id", "Descricao");

            try
            {
                if (string.IsNullOrEmpty(hardware.Ip) && hardware.TipoHardwareId == TipoHardwareModel.CONTROLADOR_DE_SALA)
                {
                    ModelState.AddModelError("Ip", "Adicione um endereço IP");
                    return(View(hardware));
                }


                if (ModelState.IsValid)
                {
                    if (_hardwareService.Update(hardware, idUsuario))
                    {
                        TempData["mensagemSucesso"] = "Hardware atualizado com sucesso";
                    }
                    else
                    {
                        TempData["mensagemErro"] = "Houve um problema ao atualizar hardware, tente novamente em alguns minutos!";
                    }
                }
            }
            catch (ServiceException se) { TempData["mensagemErro"] = se.Message; }

            return(RedirectToAction(nameof(Index)));
        }
        public bool Update(HardwareDeSalaModel entity, int idUsuario)
        {
            try
            {
                var hardware = GetByMAC(entity.MAC, idUsuario);

                if (hardware != null && hardware.Id != entity.Id)
                {
                    throw new ServiceException("Já existe um dispositivo com esse endereço MAC");
                }

                if (entity.TipoHardwareId == TipoHardwareModel.CONTROLADOR_DE_SALA)
                {
                    hardware = GetByIp(entity.Ip, idUsuario);
                    if (hardware != null && hardware.Id != entity.Id)
                    {
                        throw new ServiceException("Já existe um dispositivo com esse endereço IP");
                    }
                }

                var x = _context.Hardwaredesala.Where(tu => tu.Id == entity.Id).FirstOrDefault();
                if (x != null)
                {
                    _context.Update(SetEntity(entity, x));
                    return(_context.SaveChanges() == 1);
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return(false);
        }
        public bool Insert(HardwareDeSalaModel entity, int idUsuario)
        {
            try
            {
                var hardware = GetByMAC(entity.MAC, idUsuario);

                if (hardware != null)
                {
                    throw new ServiceException("Já existe um dispositivo com esse endereço MAC");
                }

                if (entity.TipoHardwareId == TipoHardwareModel.CONTROLADOR_DE_SALA && GetByIp(entity.Ip, idUsuario) != null)
                {
                    throw new ServiceException("Já existe um dispositivo com esse endereço IP");
                }


                _context.Add(SetEntity(entity, new Hardwaredesala()));
                return(_context.SaveChanges() == 1);
            }
            catch (Exception e)
            {
                throw e;
            }
        }
 private static Hardwaredesala SetEntity(HardwareDeSalaModel model, Hardwaredesala entity)
 {
     entity.Id           = model.Id;
     entity.Mac          = model.MAC;
     entity.TipoHardware = model.TipoHardwareId;
     entity.Sala         = model.SalaId;
     entity.Ip           = model.Ip;
     entity.Uuid         = model.Uuid;
     return(entity);
 }
        private HardwareDeSalaViewModel Cast(HardwareDeSalaModel item)
        {
            HardwareDeSalaViewModel h = new HardwareDeSalaViewModel();

            h.Id             = item.Id;
            h.MAC            = item.MAC;
            h.Ip             = item.Ip;
            h.SalaId         = _salaService.GetById(item.SalaId);
            h.TipoHardwareId = _tipoHardwareService.GetById(item.TipoHardwareId);

            return(h);
        }
        public ActionResult Put(int id, [FromBody] HardwareDeSalaModel hardwareModel, int idUser)
        {
            try
            {
                if (string.IsNullOrEmpty(hardwareModel.Ip) && hardwareModel.TipoHardwareId == TipoHardwareModel.CONTROLADOR_DE_SALA)
                {
                    ModelState.AddModelError("Ip", "Adicione um endereço IP");
                }

                if (_service.Update(hardwareModel, idUser))
                {
                    return(Ok());
                }

                return(BadRequest());
            }
            catch (ServiceException e)
            {
                return(StatusCode(500, e.Message));
            }
        }
        private HardwareDeSalaViewModel GetByIdViewModel(int id)
        {
            HardwareDeSalaModel h = _hardwareService.GetById(id);

            return(Cast(h));
        }