package gcom.gui.faturamento.conta;
import gcom.cadastro.imovel.FiltroImovel;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.faturamento.debito.DebitoCreditoSituacao;
import gcom.faturamento.debito.FiltroDebitoCreditoSituacao;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
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 pesquisar contas do im�vel
*
* @author Pedro Alexandre
* @date 02/03/2006
*/
public class ExibirPesquisarContaAction extends GcomAction {
/**
* Pesquisa as contas existentes para o im�vel
*
* [UC0248] Pesquisar Contas do Im�vel
*
* <Breve descri��o sobre o subfluxo>
*
* <Identificador e nome do subfluxo>
*
* <Breve descri��o sobre o fluxo secund�rio>
*
* <Identificador e nome do fluxo secund�rio>
*
* @author Pedro Alexandre
* @date 02/03/2006
*
* @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 para a tela de pesquisar contas do im�vel
ActionForward retorno = actionMapping.findForward("pesquisarConta");
//Cria uma inst�ncia da fachada
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
//Recupera o c�digo do im�vel do request
String idImovel = httpServletRequest.getParameter("idImovel");
//PesquisarContaActionForm pesquisarContaActionForm = (PesquisarContaActionForm) actionForm;
//Caso o c�digo do im�vel tenha sido informado pelo caso de uso que chamou a tela de pesquisar contas,
//Caso contr�rio levanta a exce��o para o usu�rio indicando que o im�vel n�o foi informado
if(idImovel != null && !idImovel.trim().equalsIgnoreCase("")){
//Pesquisa se o im�vel informado esta cadastrado no sistema,
//Caso contr�rio, levanta a exce��o para o usu�rio indicando que o im�vel n�o existe
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID, idImovel));
Collection colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName());
//Caso o im�vel informado n�o tenha sido cadastrado no sistema
if (colecaoImovel == null || colecaoImovel.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Im�vel");
}
}else{
throw new ActionServletException("atencao.naoinformado",null, "Im�vel");
}
//Cria o filtro para pesquisar as situa��es de conta no sistema
FiltroDebitoCreditoSituacao filtroDebitoCreditoSituacao = new FiltroDebitoCreditoSituacao();
filtroDebitoCreditoSituacao.setCampoOrderBy(FiltroDebitoCreditoSituacao.DESCRICAO);
Collection colecaoSituacaoConta = null;
if (httpServletRequest.getParameter("situacaoConta") != null){
// so mostras as situa��es : normal, retificada e incluida
// utilizado a partir do inserir Pagamento (Manual)
sessao.setAttribute("situacaoConta",httpServletRequest.getParameter("situacaoConta"));
}else{
//Pesquisa todas as situa��es de conta cadastradas no sistema
colecaoSituacaoConta = fachada.pesquisar(filtroDebitoCreditoSituacao, DebitoCreditoSituacao.class.getName());
sessao.removeAttribute("situacaoConta");
}
//[FS0005] Caso n�o exista nenhuma situa��o de conta no sistema, levanta a exce��o para o usu�rio indicando que
//nenhuma situa��o de conta est� cadastrada no sistema.
//Caso contr�rio, manda as situa��es de contas cadastradas no request e o c�digo do im�vel
if((colecaoSituacaoConta == null || colecaoSituacaoConta.isEmpty())&& httpServletRequest.getParameter("situacaoConta") == null ){
throw new ActionServletException("atencao.naocadastrado",null, "Situa��o de Conta");
}else{
httpServletRequest.setAttribute("colecaoSituacaoConta",colecaoSituacaoConta);
httpServletRequest.setAttribute("idImovel",idImovel);
}
if (httpServletRequest
.getParameter("caminhoRetornoTelaPesquisaConta") != null) {
sessao
.setAttribute(
"caminhoRetornoTelaPesquisaConta",
httpServletRequest
.getParameter("caminhoRetornoTelaPesquisaConta"));
}
//Retorna o mapeamento contido na vari�vel retorno
return retorno;
}
}