package gcom.gui.faturamento;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.EsferaPoder;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.cadastro.cliente.FiltroEsferaPoder;
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 gcom.util.filtro.ParametroSimplesIn;
import java.util.ArrayList;
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;
/**
* [UC1082] Informar dados para Prescrever D�bitos de Im�veis P�blicos
*
* @author Hugo Leonardo
* @date 15/10/2010
*/
public class ExibirPrescreverImoveisPublicosAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.
findForward("exibirPrescreverImoveisPublicos");
// Mudar isso quando tiver esquema de seguran�a
HttpSession sessao = httpServletRequest.getSession(false);
//Form
PrescreverImoveisPublicosActionForm form = (PrescreverImoveisPublicosActionForm) actionForm;
// Primeira vez que carrega a pagina
if ( httpServletRequest.getParameter("menu") != null &&
httpServletRequest.getParameter("menu").equals("sim")) {
form.setFormaPrescricao("0");
}
//Manual
if(form.getFormaPrescricao().equals("0")){
httpServletRequest.setAttribute("manual", true);
// Autom�tico
}else if(form.getFormaPrescricao().equals("1")){
httpServletRequest.setAttribute("manual", false);
}
// Se selecionar im�vel ou cliente desabilitar o campo "Esfera Poder"
if(!Util.verificarNaoVazio(form.getIdImovel()) && !Util.verificarNaoVazio(form.getIdCliente())){
httpServletRequest.setAttribute("esfera", true);
}else{
httpServletRequest.setAttribute("esfera", false);
}
// Pesquisa a Esfera de Poder de Acordo com a forma de Prescri��o.
pesquisarEsferaPoder(sessao, form);
if (Util.verificarNaoVazio( form.getIdCliente())) {
this.pesquisarCliente( httpServletRequest, form);
}
if(Util.verificarNaoVazio( form.getIdImovel())){
this.pesquisarImovel( httpServletRequest, form);
}
if(sessao.getAttribute("colecaoEsferaPoder") == null ){
this.pesquisarEsferaPoder(sessao, form);
}
return retorno;
}
private void pesquisarEsferaPoder(HttpSession sessao, PrescreverImoveisPublicosActionForm form){
Collection colTipoEsfera = new ArrayList();
// Manual
if(form.getFormaPrescricao().equals("0")){
colTipoEsfera.add(EsferaPoder.MUNICIPAL);
colTipoEsfera.add(EsferaPoder.ESTADUAL);
colTipoEsfera.add(EsferaPoder.FEDERAL);
}else if(form.getFormaPrescricao().equals("1")){
colTipoEsfera.add(EsferaPoder.ESTADUAL);
colTipoEsfera.add(EsferaPoder.FEDERAL);
}
FiltroEsferaPoder filtroEsferaPoder = new FiltroEsferaPoder();
filtroEsferaPoder.adicionarParametro(
new ParametroSimples(FiltroEsferaPoder.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroEsferaPoder.adicionarParametro( new ParametroSimplesIn(FiltroEsferaPoder.ID, colTipoEsfera));
filtroEsferaPoder.setCampoOrderBy(FiltroEsferaPoder.DESCRICAO);
Collection<EsferaPoder> colecaoEsferaPoder =
Fachada.getInstancia().pesquisar( filtroEsferaPoder, EsferaPoder.class.getName());
if (colecaoEsferaPoder == null || colecaoEsferaPoder.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null, "Esfera Poder");
}else{
sessao.setAttribute("colecaoEsferaPoder", colecaoEsferaPoder);
}
}
private void pesquisarCliente(HttpServletRequest httpServletRequest,
PrescreverImoveisPublicosActionForm form) {
// Pesquisa o Cliente na base
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(
FiltroCliente.ID, form.getIdCliente()));
Collection<Cliente> collCliente = Fachada.getInstancia().pesquisar(
filtroCliente, Cliente.class.getName());
// Se nenhum cliente for encontrado a mensagem � enviada para a p�gina
if (!Util.isVazioOrNulo(collCliente)) {
Cliente cliente = (Cliente) Util.retonarObjetoDeColecao(collCliente);
form.setIdCliente("" + cliente.getId());
form.setDescricaoCliente( cliente.getNome());
} else {
form.setIdCliente("");
form.setDescricaoCliente("CLIENTE INEXISTENTE");
httpServletRequest.setAttribute("clienteInexistente",true);
}
}
private void pesquisarImovel(HttpServletRequest httpServletRequest,
PrescreverImoveisPublicosActionForm form) {
// Pesquisa o Imovel na base
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(
FiltroImovel.ID, form.getIdImovel()));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOCALIDADE);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.QUADRA);
Collection<Imovel> collImovel = Fachada.getInstancia().pesquisar(
filtroImovel, Imovel.class.getName());
// Se nenhum cliente for encontrado a mensagem � enviada para a p�gina
if (!Util.isVazioOrNulo(collImovel)) {
Imovel imovel = (Imovel) Util.retonarObjetoDeColecao(collImovel);
form.setIdImovel("" + imovel.getId());
form.setDescricaoImovel( imovel.getInscricaoFormatada());
} else {
form.setIdImovel("");
form.setDescricaoImovel("IMOVEL INEXISTENTE");
httpServletRequest.setAttribute("imovelInexistente",true);
}
}
}