public String gravarChamada() { if (getDataAula().before(new Date())) { try { Frequencia frequenciaExistente = frequenciaDao.getChamada(getCodDiscTurma(), getDataAula()); if (frequenciaExistente == null) { Frequencia frequencia = new Frequencia(); frequencia.setCodDiscTurma(getCodDiscTurma()); frequencia.setDataAula(getDataAula()); frequencia.setDataChamada(new Date()); frequencia.setCodUsuario(usuarioLogado.getCodUsuario()); frequenciaDao.insert(frequencia); if (frequencia.getCodChamada() != null) { for (ChamadaWrapper c : getListaDePresenca()) { String presente = (c.estaPresente) ? "s" : "n"; String faltaJustificada = (c.faltaJustificada && !c.estaPresente) ? "s" : "n"; frequenciaAlunoDao.insert( new FrequenciaAluno( c.aluno.getCodAluno(), frequencia.getCodChamada(), presente, faltaJustificada, c.observacao)); } // Ativa/desativa campos acessibilidadeCampos(frequencia.getCodUsuario(), dataHoje()); populaListaChamadaRealizada(frequencia.getCodChamada()); populaChamadasRealizadas(frequencia.getCodDiscTurma()); Message.successMessage("Chamada gravada com sucesso"); } else { Message.errorMessage("Houve um erro ao gravar chamada"); } } else { // Garante que somente pessoas autorizadas podem editar a chamada if ("a".equals(usuarioLogado.getTipo()) || "s".equals(usuarioLogado.getTipo()) || usuarioLogado.getCodUsuario().equals(frequenciaExistente.getCodUsuario())) { for (ChamadaWrapper c : getListaDePresenca()) { String presente = (c.estaPresente) ? "s" : "n"; String faltaJustificada = (c.faltaJustificada && !c.estaPresente) ? "s" : "n"; frequenciaAlunoDao.update( new FrequenciaAluno( c.aluno.getCodAluno(), frequenciaExistente.getCodChamada(), presente, faltaJustificada, c.observacao)); } populaListaChamadaRealizada(frequenciaExistente.getCodChamada()); Message.successMessage("Chamada editada com sucesso"); } } } catch (Exception e) { Message.errorMessage(e.getMessage()); } } else { Message.warningMessage("Não é permitido fazer chamadas para datas futuras"); } return ""; }