package gcom.gui.atendimentopublico;
import gcom.atendimentopublico.bean.RegistroAtendimentoDevolucaoValoresHelper;
import gcom.atendimentopublico.registroatendimento.FiltroRegistroAtendimento;
import gcom.atendimentopublico.registroatendimento.RegistroAtendimento;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
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;
public class FiltrarRegistroAtendimentoDevolucaoValoresAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("manterRegistroAtendimentoDevolucaoValores");
Fachada fachada = Fachada.getInstancia();
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
FiltrarRegistroAtendimentoDevolucaoValoresActionForm filtrarGuiaDevolucaoActionForm = (FiltrarRegistroAtendimentoDevolucaoValoresActionForm) actionForm;
// Recupera os par�metros do form
String[] idPerfilImovel = filtrarGuiaDevolucaoActionForm.getPerfilImovel();
String dataAtendimentoInicio = filtrarGuiaDevolucaoActionForm.getDataAtendimentoInicio();
String dataAtendimentoFim = filtrarGuiaDevolucaoActionForm.getDataAtendimentoFim();
boolean peloMenosUmParametroInformado = false;
Date dataAtendimentoInicioFormatada = null;
Date dataAtendimentoFimFormatada = null;
// Per�odo Data Emiss�o
if ((dataAtendimentoInicio != null && !dataAtendimentoInicio.equals(""))
|| (dataAtendimentoFim != null && !dataAtendimentoFim.equals(""))) {
peloMenosUmParametroInformado = true;
if (dataAtendimentoInicio != null && !dataAtendimentoInicio.trim().equals("")) {
dataAtendimentoInicioFormatada = Util.converteStringParaDate(dataAtendimentoInicio);
}
if (dataAtendimentoFim != null && !dataAtendimentoFim.trim().equals("")) {
dataAtendimentoFimFormatada = Util.converteStringParaDate(dataAtendimentoFim);
}
if(dataAtendimentoInicioFormatada != null && dataAtendimentoFimFormatada != null &&
dataAtendimentoInicioFormatada.compareTo(dataAtendimentoFimFormatada) == 1){
throw new ActionServletException("atencao.data.intervalo.invalido");
}
}
Integer numeroRA = null;
if(filtrarGuiaDevolucaoActionForm.getNumeroRA() != null && !filtrarGuiaDevolucaoActionForm.getNumeroRA().equals("")){
numeroRA = new Integer(filtrarGuiaDevolucaoActionForm.getNumeroRA());
FiltroRegistroAtendimento filtroRegistroAtendimento = new FiltroRegistroAtendimento();
filtroRegistroAtendimento.adicionarParametro(new ParametroSimples(FiltroRegistroAtendimento.ID, numeroRA));
filtroRegistroAtendimento.adicionarCaminhoParaCarregamentoEntidade(FiltroRegistroAtendimento.SOLICITACAO_TIPO_ESPECIFIC);
Collection colecaoRegistroAtendimento = fachada
.pesquisar(filtroRegistroAtendimento,RegistroAtendimento.class.getName());
RegistroAtendimento registroAtendimento = (RegistroAtendimento) Util.retonarObjetoDeColecao(colecaoRegistroAtendimento);
if(registroAtendimento == null){
//[FS0003] - Verificar exist�ncia do Registro de atendimento
//Caso o registro de atendimento informado n�o exista na tabela REGISTRO_ATENDIMENTO,
//exibir a mensagem �Registro de atendimento inexistente�
throw new ActionServletException("atencao.pesquisa_inexistente", null,"Registro de Atendimento");
}
if(registroAtendimento.getCodigoSituacao() != RegistroAtendimento.SITUACAO_PENDENTE.shortValue()){
//[FS0004] - Verificar situa��o do ra informado
//Caso a situa��o do ra informado diferente de �PENDENTE� na tabela REGISTRO_ATENDIMENTO,
//exibir a mensagem �Situa��o do registro de atendimento deve ser pendente para devolu��o de pagamentos�
throw new ActionServletException("atencao.situacao.ra.deve.ser.pendente");
}
if(registroAtendimento.getSolicitacaoTipoEspecificacao() != null &&
registroAtendimento.getSolicitacaoTipoEspecificacao().getIndicadorInformarPagamentoDuplicidade().equals(ConstantesSistema.NAO)){
//[FS0005] - Verificar tipo do ra informado
//Caso o indicador (IC_INFORMAPAGTODUPLICIDADE) = 2 da tabela SOLICITACAO_TIPO_ESPEC
//com STEP_ID = STEP_ID da tabela REGISTRO_ATENDIMENTO com o RGAT_ID do ra informado)
//exibir a mensagem �Registro de Atendimento n�o corresponde a uma solicita��o de devolu��o de pagamento�
throw new ActionServletException("atencao.ra.nao.corresponde.devolucao.pagamento");
}
peloMenosUmParametroInformado = true;
}
Integer idImovel = null;
if (filtrarGuiaDevolucaoActionForm.getIdImovelHidden() != null && !filtrarGuiaDevolucaoActionForm.getIdImovelHidden().equals("")) {
idImovel = new Integer(filtrarGuiaDevolucaoActionForm.getIdImovelHidden());
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("localidade");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("setorComercial");
filtroImovel.adicionarCaminhoParaCarregamentoEntidade("quadra");
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel));
Collection imoveis = fachada.pesquisar(filtroImovel, Imovel.class.getName());
if(imoveis == null || imoveis.isEmpty()){
throw new ActionServletException("atencao.pesquisa_inexistente", null,"Im�vel");
}
peloMenosUmParametroInformado = true;
}
if (idPerfilImovel != null) {
peloMenosUmParametroInformado = true;
}
// Erro caso o usu�rio mandou filtrar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
RegistroAtendimentoDevolucaoValoresHelper helper = new RegistroAtendimentoDevolucaoValoresHelper();
helper.setIdImovel(idImovel);
helper.setIdPerfilImovel(idPerfilImovel);
helper.setDataAtendimentoInicioFormatada(dataAtendimentoInicioFormatada);
helper.setDataAtendimentoFimFormatada(dataAtendimentoFimFormatada);
helper.setNumeroRA(numeroRA);
sessao.setAttribute("registroAtendimentoDevolucaoValoresHelper",helper);
// Devolve o mapeamento de retorno
return retorno;
}
}