public void btnConfirmarAgendamento() {
    facesContext = FacesContext.getCurrentInstance();
    Solicitacoes solicitacao = solicitacaoSelecionada.getSolicitacao();
    solicitacao.setSol_status("Autorizado");
    autorizar.setAut_data_horaAtual(new Timestamp(System.currentTimeMillis()));
    autorizar.setAut_profAgendamento(SecurityContextHolder.getContext().getAuthentication().getName());
    autorizar.setSolicitacoes(solicitacaoSelecionada);

    try {
      List<Controle> listControle = genericDAO.searchObject(Controle.class, "controle", null, null,
              new String[]{"exame"}, new Object[]{solicitacaoSelecionada.getDescricaoExames()});
      if (listControle.isEmpty()) {
        genericDAO.save(autorizar);
        genericDAO.update(solicitacao);
        facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Autorizado com sucesso"));
      } else {
        Controle controle = listControle.get(0);
        if (controle.getCtrl_limiteUnitario() > 0
                && controle.getCtrl_limiteValor() > solicitacaoSelecionada.getDescricaoExames().getDes_valor()) {

          controle.setCtrl_limiteUnitario(controle.getCtrl_limiteUnitario() - 1);
          controle.setCtrl_limiteValor(controle.getCtrl_limiteValor() - solicitacaoSelecionada.getDescricaoExames().getDes_valor());
          genericDAO.save(autorizar);
          genericDAO.update(solicitacao);
          facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso", "Autorizado com sucesso"));
        } else {
          facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Limite", "o limite para esse procedimento já foi alcançado!"));
        }
      }
    } catch (Exception ex) {
      Logger.getLogger(AutorizarMB.class.getName()).log(Level.SEVERE, null, ex);
    } finally {
      init();
    }

  }