package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.registroatendimento.AtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.FiltroAtendimentoMotivoEncerramento;
import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipoEspecificacao;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesDiferenteDe;
import java.util.Collection;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* Action que faz a exibi��o da tela para o usu�rio setar os campos e permitir
* que ele comande o encerramento dos registros de atendimentos
* [UC0735] Comandar Encerramento de Registros de Atendimento
*
* @author Rafael Corr�a, Pedro Alexandre
* @since 25/01/2008, 10/06/2008
*/
public class ExibirComandarEncerramentoRegistroAtendimentoAction extends GcomAction {
/**
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirComandarEncerramentoRA");
Fachada fachada = Fachada.getInstancia();
ComandarEncerramentoRegistroAtendimentoActionForm form = (ComandarEncerramentoRegistroAtendimentoActionForm)actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
Date dataAtual = new Date();
if(form.getDataAtendimentoFinal() == null || form.getDataAtendimentoFinal().trim().equals("")){
form.setDataAtendimentoFinal(Util.formatarData(dataAtual));
}
httpServletRequest.setAttribute("dataAtual",Util.formatarData(dataAtual));
//-------[FS0001 - VERIFICAR EXISTENCIA DE DADOS] ---- Motivo do Encerramento
FiltroAtendimentoMotivoEncerramento filtroAtendimentoMotivoEncerramento = new FiltroAtendimentoMotivoEncerramento();
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroAtendimentoMotivoEncerramento.INDICADOR_DUPLICIDADE, AtendimentoMotivoEncerramento.INDICADOR_DUPLICIDADE_ATIVO));
filtroAtendimentoMotivoEncerramento.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroAtendimentoMotivoEncerramento.INDICADOR_EXECUCAO, AtendimentoMotivoEncerramento.INDICADOR_EXECUCAO_SIM));
Collection<AtendimentoMotivoEncerramento> colecaoMotivoEncerramento = fachada.pesquisar(filtroAtendimentoMotivoEncerramento, AtendimentoMotivoEncerramento.class.getName());
if (colecaoMotivoEncerramento == null || colecaoMotivoEncerramento.isEmpty()) {
throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null,"Motivo de Encerramento");
}
sessao.setAttribute("colecaoMotivoEncerramento", colecaoMotivoEncerramento);
//-------[FS0001 - VERIFICAR EXISTENCIA DE DADOS] ---- Motivo do Encerramento
FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao();
filtroSolicitacaoTipoEspecificacao.setCampoOrderBy(FiltroSolicitacaoTipoEspecificacao.DESCRICAO);
filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(FiltroSolicitacaoTipoEspecificacao.INDICADOR_ENCERRAMENTO_AUTOMATICO, SolicitacaoTipoEspecificacao.INDICADOR_SEM_ENCERRAMENTO_AUTOMATICO));
Collection<SolicitacaoTipoEspecificacao> colecaoSolicitacaoTipoEspecificacao = fachada
.pesquisar(filtroSolicitacaoTipoEspecificacao,
SolicitacaoTipoEspecificacao.class.getName());
if (colecaoSolicitacaoTipoEspecificacao == null || colecaoSolicitacaoTipoEspecificacao.isEmpty()) {
throw new ActionServletException("atencao.entidade_sem_dados_para_selecao", null,"Especifica��o do Tipo da Solicita��o");
}
sessao.setAttribute("colecaoSolicitacaoTipoEspecificacao", colecaoSolicitacaoTipoEspecificacao);
String idUsuario = form.getIdUsuario();
if (idUsuario != null && !idUsuario.trim().equals("")) {
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.ID, idUsuario));
Collection<Usuario> colecaoUsuarios = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuarios != null && !colecaoUsuarios.isEmpty()) {
Usuario usuario = (Usuario) Util.retonarObjetoDeColecao(colecaoUsuarios);
form.setIdUsuario(usuario.getId().toString());
form.setNomeUsuario(usuario.getNomeUsuario());
httpServletRequest.setAttribute("nomeCampo", "idUnidadeAtendimento");
} else {
form.setIdUsuario("");
form.setNomeUsuario("USUARIO INEXISTENTE");
httpServletRequest.setAttribute("usuarioInexistente",true);
httpServletRequest.setAttribute("nomeCampo", "idUsuario");
}
}
String idUnidadeAtendimento = form.getIdUnidadeAtendimento();
if (idUnidadeAtendimento != null && !idUnidadeAtendimento.trim().equals("")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidadeAtendimento));
Collection<UnidadeOrganizacional> colecaoUnidadesAtendimento = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (colecaoUnidadesAtendimento != null && !colecaoUnidadesAtendimento.isEmpty()) {
UnidadeOrganizacional unidadeAtendimento = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadesAtendimento);
form.setIdUnidadeAtendimento(unidadeAtendimento.getId().toString());
form.setNomeUnidadeAtendimento(unidadeAtendimento.getDescricao());
httpServletRequest.setAttribute("nomeCampo", "idUnidadeAtual");
} else {
form.setIdUnidadeAtendimento("");
form.setNomeUnidadeAtendimento("UNIDADE INEXISTENTE");
httpServletRequest.setAttribute("unidadeAtendimentoInexistente", true);
httpServletRequest.setAttribute("nomeCampo", "idUnidadeAtendimento");
}
}
String idUnidadeAtual = form.getIdUnidadeAtual();
if (idUnidadeAtual != null && !idUnidadeAtual.trim().equals("")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidadeAtual));
Collection<UnidadeOrganizacional> colecaoUnidadesAtual = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (colecaoUnidadesAtual != null && !colecaoUnidadesAtual.isEmpty()) {
UnidadeOrganizacional unidadeAtual = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadesAtual);
form.setIdUnidadeAtual(unidadeAtual.getId().toString());
form.setNomeUnidadeAtual(unidadeAtual.getDescricao());
} else {
form.setIdUnidadeAtual("");
form.setNomeUnidadeAtual("UNIDADE INEXISTENTE");
httpServletRequest.setAttribute("unidadeAtualInexistente", true);
httpServletRequest.setAttribute("nomeCampo", "idUnidadeAtual");
}
}
String idUnidadeSuperior = form.getIdUnidadeSuperior();
if (idUnidadeSuperior != null && !idUnidadeSuperior.trim().equals("")) {
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(FiltroUnidadeOrganizacional.ID, idUnidadeSuperior));
Collection<UnidadeOrganizacional> colecaoUnidadeSuperior = fachada.pesquisar(filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (colecaoUnidadeSuperior != null && !colecaoUnidadeSuperior.isEmpty()) {
UnidadeOrganizacional unidadeSuperior = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(colecaoUnidadeSuperior);
form.setIdUnidadeSuperior(unidadeSuperior.getId().toString());
form.setNomeUnidadeSuperior(unidadeSuperior.getDescricao());
} else {
form.setIdUnidadeSuperior("");
form.setNomeUnidadeSuperior("UNIDADE SUPERIOR INEXISTENTE");
httpServletRequest.setAttribute("unidadeSuperiorInexistente", true);
httpServletRequest.setAttribute("nomeCampo", "idUnidadeSuperior");
}
}
return retorno;
}
}