package gcom.gui.atendimentopublico.registroatendimento;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.registroatendimento.FiltroRegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.atendimentopublico.registroatendimento.bean.ObterDescricaoSituacaoRAHelper;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
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 define o pr�-processamento da p�gina de consulta de os do ra.
*
* @author Leonardo Regis
* @created 11/08/2006
*/
public class ExibirConsultarRegistroAtendimentoOSAction extends GcomAction {
/**
* Execute do Exibir Consultar RA OS do Popup
*
* @author Leonardo Regis
* @date 11/08/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return forward
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("consultarRegistroAtendimentoOS");
Fachada fachada = Fachada.getInstancia();
ConsultarRegistroAtendimentoOSActionForm consultarRegistroAtendimentoOS =
(ConsultarRegistroAtendimentoOSActionForm) actionForm;
RegistroAtendimento registroAtendimento =
pesquisarRegistroAtendimento(new Integer(consultarRegistroAtendimentoOS.getNumeroRA()));
consultarRegistroAtendimentoOS.setNumeroRA(""+registroAtendimento.getId());
ObterDescricaoSituacaoRAHelper situacaoRA =
fachada.obterDescricaoSituacaoRA(registroAtendimento.getId());
consultarRegistroAtendimentoOS.setSituacaoRA(situacaoRA.getDescricaoSituacao());
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao =
registroAtendimento.getSolicitacaoTipoEspecificacao();
if(solicitacaoTipoEspecificacao != null){
if(solicitacaoTipoEspecificacao.getSolicitacaoTipo() != null){
consultarRegistroAtendimentoOS.setTipoSolicitacao(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getDescricao());
consultarRegistroAtendimentoOS.setTipoSolicitacaoId(solicitacaoTipoEspecificacao.getSolicitacaoTipo().getId()+"");
}
consultarRegistroAtendimentoOS.setEspecificacao(solicitacaoTipoEspecificacao.getDescricao());
consultarRegistroAtendimentoOS.setEspecificacaoId(solicitacaoTipoEspecificacao.getId()+"");
}
UnidadeOrganizacional unidadeAtual = fachada.obterUnidadeAtualRA(registroAtendimento.getId());
if(unidadeAtual != null){
consultarRegistroAtendimentoOS.setIdUnidadeAtual(""+unidadeAtual.getId());
consultarRegistroAtendimentoOS.setUnidadeAtual(unidadeAtual.getDescricao());
}
//OS's do RA
Collection<OrdemServico> colecaoOS = fachada.obterOSRA(registroAtendimento.getId());
if(colecaoOS != null &&
!colecaoOS.isEmpty()) {
consultarRegistroAtendimentoOS.setColecaoOS(colecaoOS);
} else {
throw new ActionServletException("atencao.consultar_os_consulta_vazia");
}
// o bot�o encerrar so aparece no popup de consultar ordem de servi�o
// qd for chamada a partir do manter RA
HttpSession sessao = httpServletRequest.getSession(false);
if (httpServletRequest.getParameter("botaoEncerraOs") != null){
sessao.setAttribute("botaoEncerraOs",httpServletRequest.getParameter("botaoEncerraOs"));
}
return retorno;
}
/**
* Consulta o registro atendimento pelo id informado
*
* @author Leonardo Regis
* @created 11/08/2006
*/
private RegistroAtendimento pesquisarRegistroAtendimento(Integer id){
RegistroAtendimento retorno = null;
Fachada fachada = Fachada.getInstancia();
Collection colecaoRegistroAtendimento = null;
FiltroRegistroAtendimento filtroRegistroAtendimento = new FiltroRegistroAtendimento();
filtroRegistroAtendimento.adicionarParametro(new ParametroSimples(
FiltroRegistroAtendimento.ID,id));
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade("solicitacaoTipoEspecificacao");
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade("solicitacaoTipoEspecificacao.solicitacaoTipo");
colecaoRegistroAtendimento = fachada.pesquisar(filtroRegistroAtendimento,
RegistroAtendimento.class.getName());
if (colecaoRegistroAtendimento != null && !colecaoRegistroAtendimento.isEmpty()) {
retorno = (RegistroAtendimento) Util.retonarObjetoDeColecao(colecaoRegistroAtendimento);
} else {
throw new ActionServletException("atencao.naocadastrado",null, "Registro Atendimento");
}
return retorno;
}
}