private static List<Condutor> listarCondutores() throws Exception {
    if (AutorizacaoGI.ehGabinete()) {
      List<Condutor> retorno = new ArrayList<Condutor>();
      retorno.add(
          Condutor.recuperarLogado(
              AutorizacaoGI.titular(), AutorizacaoGI.titular().getOrgaoUsuario()));
      return retorno;
    }

    if (!AutorizacaoGI.ehAdministrador()) {
      return Condutor.listarFiltradoPor(
          AutorizacaoGI.titular().getOrgaoUsuario(), AutorizacaoGI.titular().getLotacao());
    } else {
      return Condutor.listarTodos(AutorizacaoGI.titular().getOrgaoUsuario());
    }
  }
 @RoleAdmin
 @RoleAdminMissao
 @RoleAdminMissaoComplexo
 public static void incluir(Long idCondutor) {
   Condutor condutor = Condutor.findById(idCondutor);
   Afastamento afastamento = new Afastamento();
   afastamento.condutor = condutor;
   render(afastamento);
 }
 public static void listar() {
   List<Abastecimento> abastecimentos = null;
   if (AutorizacaoGI.ehGabinete()) {
     Condutor condutor =
         Condutor.recuperarLogado(
             AutorizacaoGI.titular(), AutorizacaoGI.titular().getOrgaoUsuario());
     abastecimentos = Abastecimento.listarAbastecimentosDoCondutor(condutor);
   } else if (AutorizacaoGI.ehAdminGabinete()) {
     abastecimentos = Abastecimento.listarParaAdminGabinete(AutorizacaoGI.titular());
   } else if (AutorizacaoGI.ehAgente()) {
     abastecimentos = Abastecimento.listarParaAgente(AutorizacaoGI.titular());
   } else { // eh admin
     abastecimentos = Abastecimento.listarTodos(AutorizacaoGI.titular());
   }
   render(abastecimentos);
 }
  @RoleAdmin
  @RoleAdminMissao
  @RoleAdminMissaoComplexo
  public static void salvar(@Valid Afastamento afastamento) throws Exception {
    String template;

    if ((afastamento.dataHoraInicio != null)
        && (afastamento.dataHoraFim != null)
        && (!afastamento.descricao.equals(""))) {
      if (!afastamento.ordemDeDatasCorreta()) {
        Validation.addError("dataHoraInicio", "afastamentos.dataHoraInicio.validation");
      }
    }

    template = afastamento.id > 0 ? "Afastamentos/editar.html" : "Afastamentos/incluir.html";

    if (Validation.hasErrors()) {
      List<Condutor> condutores = Condutor.listarTodos(AutorizacaoGI.titular().getOrgaoUsuario());
      renderTemplate(template, afastamento, condutores);
    } else {
      List<Missao> missoes =
          Missao.retornarMissoes(
              "condutor.id",
              afastamento.condutor.id,
              afastamento.condutor.cpOrgaoUsuario.getId(),
              afastamento.dataHoraInicio,
              afastamento.dataHoraFim);
      String listaMissoes = "";
      String delimitador = "";

      for (Missao item : missoes) {
        listaMissoes += delimitador;
        listaMissoes += item.getSequence();
        delimitador = ",";
      }

      if (missoes.size() > 0) {
        Validation.addError("LinkErroCondutor", listaMissoes);
        renderTemplate(template, afastamento);
      } else {
        afastamento.save();
        listarPorCondutor(afastamento.condutor.id);
      }
    }
  }
 public static void listarPorCondutor(Long idCondutor) {
   Condutor condutor = Condutor.findById(idCondutor);
   List<Afastamento> afastamentos = Afastamento.buscarTodosPorCondutor(condutor);
   MenuMontador.instance().RecuperarMenuCondutores(idCondutor, ItemMenu.AFASTAMENTOS);
   render(afastamentos, condutor);
 }