public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
ActionErrors errors = new ActionErrors();
RedirecionarMensagemCtrl redirecionarMensagemCtrl = new RedirecionarMensagemCtrl(
getDaoFactory());
DynaActionForm _form = (DynaActionForm) form;
String tipoRedirecionamento = (String) _form
.get("tipoRedirecionamento");
String despacho = (String) _form.get("despacho");
Integer idAcionamento = new Integer(request
.getParameter("idAcionamento"));
Integer idLocalidadeOcorrencia = (Integer) _form
.get("localidadeOcorrencia");
Integer idAssunto = (Integer) _form.get("assunto");
Integer idSubOrgao = (Integer) _form.get("subOrgao");
String titulo = (String) _form.get("titulo");
String consultorId = (String) _form.get("consultor");
Acionamento acionamento = redirecionarMensagemCtrl
.getAcionamento(idAcionamento);
Long funcionarioId = (Long) request.getSession().getAttribute(
Constants.PA_FUNCIONARIO);
FuncionarioCtrl funcionarioCtrl = new FuncionarioCtrl(getDaoFactory());
Funcionario funcionario = (Funcionario) funcionarioCtrl
.get(funcionarioId);
Funcionario consultor = new Funcionario();
if (!consultorId.equals("")) {
consultor = (Funcionario) funcionarioCtrl.get(consultorId);
}
if (acionamento.getRespostaAcionamento() != null) {
acionamento.getRespostaAcionamento().setTitulo(titulo);
} else {
Timestamp hoje = new Timestamp(System.currentTimeMillis());
// Salva rascunho da resposta
acionamento.salvarRascunhoRespostaAcionamento(titulo, "", hoje,
null);
}
if (tipoRedirecionamento.compareTo("outro") == 0) {
acionamento.setLocalidadeOcorrencia(redirecionarMensagemCtrl
.getLocalidadeOcorrencia(idLocalidadeOcorrencia));
acionamento.getMensagem().setAssunto(
redirecionarMensagemCtrl.getAssunto(idAssunto));
acionamento.redirecionarAcionamento(acionamento.getMensagem()
.getTipoMensagem(), acionamento.getMensagem().getAssunto(),
redirecionarMensagemCtrl.getSubOrgao(idSubOrgao),
redirecionarMensagemCtrl
.getLocalidadeOcorrencia(idLocalidadeOcorrencia),
funcionario, despacho, this.getOrgao(request));
redirecionarMensagemCtrl.salvarAcionamento(acionamento);
} else if ((tipoRedirecionamento.compareTo("consultor") == 0)
&& (consultor != null)) {
// Perfil consultor
// Redirecionamento para um funcionario consultor
acionamento.setLocalidadeOcorrencia(redirecionarMensagemCtrl
.getLocalidadeOcorrencia(idLocalidadeOcorrencia));
acionamento.getMensagem().setAssunto(
redirecionarMensagemCtrl.getAssunto(idAssunto));
acionamento.setFuncionario(consultor);
acionamento.redirecionarAcionamentoConsultor(acionamento
.getMensagem().getTipoMensagem(), acionamento.getMensagem()
.getAssunto(), redirecionarMensagemCtrl
.getSubOrgao(idSubOrgao), consultor,
redirecionarMensagemCtrl
.getLocalidadeOcorrencia(idLocalidadeOcorrencia),
funcionario, despacho, this.getOrgao(request));
redirecionarMensagemCtrl.salvarAcionamento(acionamento);
} else {
if (tipoRedirecionamento.compareTo("ouvidor") == 0) {
Funcionario ouvidor = null;
// Caso de redirecionar para ouvidor assistente
if ((!funcionario.getPerfil().equals(Perfil.OUVIDOR_ASSISTENTE))
&& ((!funcionario.getPerfil().equals(
Perfil.OUVIDOR_GERAL)))) {
ouvidor = redirecionarMensagemCtrl.obterOuvidorAssistente(
acionamento, this.getOrgao(request));
if (ouvidor != null) {
acionamento.setFuncionario(ouvidor);
} else {
ouvidor = redirecionarMensagemCtrl.obterOuvidorGeral(
acionamento, this.getOrgao(request));
if (ouvidor != null) {
acionamento.setFuncionario(ouvidor);
}
}
} else {
if (funcionario.getPerfil().equals(
Perfil.OUVIDOR_ASSISTENTE)) {
ouvidor = redirecionarMensagemCtrl.obterOuvidorGeral(
acionamento, this.getOrgao(request));
if (ouvidor != null) {
acionamento.setFuncionario(ouvidor);
}
}
}
acionamento.setDespacho(despacho);
redirecionarMensagemCtrl.salvarAcionamento(acionamento);
}
}
if ((acionamento.getFuncionario().getEmail() == null)
|| (acionamento.getFuncionario().getEmail() != null && acionamento