ActionMessages errorMsgs = new ActionMessages();
//obter o funcionário logado
Long funcionarioId = (Long) request.getSession().getAttribute(Constants.PA_FUNCIONARIO);
FuncionarioCtrl funcionarioCtrl = new FuncionarioCtrl(getDaoFactory());
Funcionario func = (Funcionario) funcionarioCtrl.get(funcionarioId);
//obter órgão do funcionário logado
Orgao orgao = this.getOrgao(request);
// Recupera as listas de assuntos e de tipos de mensagem sobre
// responsabilidade do funcionário
Collection lstAssunto = func.getListaAssunto();
Collection lstTipoMsg = func.getListaTipoMensagem();
// Se funcionario não for um Ouvidor Assistente ou Geral, é necessário
// ao menos um Tipo de Mensagem ou um Tipo de Assunto
if ( !func.getPerfil().equals(Perfil.OUVIDOR_ASSISTENTE)
&& !func.getPerfil().equals(Perfil.OUVIDOR_GERAL) ) {
if (lstAssunto.isEmpty() && lstTipoMsg.isEmpty()) {
errorMsgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.funcionario.semassunto"));
errorMsgs.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
"error.funcionario.semtipomensagem"));
}
}
if (!errorMsgs.isEmpty()) {
saveMessages(request, errorMsgs);
return (mapping.findForward("failure"));
}
// Verificar se o funcionário trata-se de um ouvidor. Para isso,
// busca-se a lista de instituições nas quais o funcionário atua e
// verifica-se se o mesmo atua em um órgão.
Collection lstInst = func.getListaInstituicao();
boolean isPerfilOuvidor = false;
for (Iterator it = lstInst.iterator(); it.hasNext();) {
Instituicao inst = (Instituicao) it.next();