package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ligacaoagua.LigacaoAguaSituacao;
import gcom.atendimentopublico.ordemservico.FiltroOrdemServico;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.atendimentopublico.ordemservico.ServicoTipo;
import gcom.atendimentopublico.ordemservico.ServicoTipoSeletiva;
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.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;
/**
* [UC1054] Gerar Ordem de Corte
*
*
* @author Hugo Amorim
* @data 23/07/2010
*
*/
public class ExibirEmitirOrdemCorteAction extends GcomAction {
/**
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return forward
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping
.findForward("exibirEmitirOrdemCorteAction");
EmitirOrdemCorteForm form =
(EmitirOrdemCorteForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
// Verifica se entrou apartir
// do menu
//
if(httpServletRequest.getParameter("menu")!=null
&& httpServletRequest.getParameter("menu").toString().equalsIgnoreCase("sim")){
this.limpar(form, sessao);
}
// Pesquisa Imovel
// Enter ou Reload PopUp
//
if(httpServletRequest.getParameter("pesquisarImovel")!=null
&& httpServletRequest.getParameter("pesquisarImovel").toString().equalsIgnoreCase("sim")){
if(httpServletRequest.getParameter("idImovel")!=null
&& !httpServletRequest.getParameter("idImovel").toString().equals("")){
form.setMatriculaImovel(httpServletRequest.getParameter("idImovel"));
}
if(form.getMatriculaImovel()!=null &&
!form.getMatriculaImovel().equals("")){
getImovel(form,httpServletRequest);
}
}
return retorno;
}
private void getImovel(EmitirOrdemCorteForm form,
HttpServletRequest httpServletRequest) {
Fachada fachada = Fachada.getInstancia();
HttpSession sessao = httpServletRequest.getSession(false);
FiltroImovel filtroImovel = new FiltroImovel();
filtroImovel.adicionarParametro(new ParametroSimples(FiltroImovel.ID,
form.getMatriculaImovel()));
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LOCALIDADE);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.SETOR_COMERCIAL);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.QUADRA);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_AGUA_SITUACAO);
filtroImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroImovel.LIGACAO_ESGOTO_SITUACAO);
Collection colecaoImovel = fachada.pesquisar(filtroImovel, Imovel.class.getName());
if (colecaoImovel != null && !colecaoImovel.isEmpty()) {
String enderecoFormatado = null;
Imovel imovel = (Imovel) Util.retonarObjetoDeColecao(colecaoImovel);
if(imovel.getLigacaoAguaSituacao()!=null
&& imovel.getLigacaoAguaSituacao().getId()
.compareTo(LigacaoAguaSituacao.LIGADO)!=0
&& imovel.getLigacaoAguaSituacao().getId()
.compareTo(LigacaoAguaSituacao.LIGADO_EM_ANALISE)!=0){
throw new ActionServletException("atencao.situacao_ligacao_agua_invalida");
}
enderecoFormatado = fachada.pesquisarEndereco(imovel.getId());
sessao.setAttribute("enderecoFormatado",enderecoFormatado);
sessao.setAttribute("inscricaoImovelEncontrada", "true");
form.setInscricaoImovel(imovel.getInscricaoFormatada());
form.setEnderecoImovel(enderecoFormatado);
if(imovel.getLigacaoAguaSituacao()!=null){
form.setSituacaoAguaDebitos(imovel.getLigacaoAguaSituacao().getDescricao());
}
if(imovel.getLigacaoEsgotoSituacao()!=null){
form.setSituacaoEsgotoDebitos(imovel.getLigacaoEsgotoSituacao().getDescricao());
}
this.validarExistenciaOs(form,httpServletRequest,fachada);
} else {
this.limpar(form, sessao);
sessao.removeAttribute("inscricaoImovelEncontrada");
form.setMatriculaImovel("");
form.setInscricaoImovel("Matr�cula inexistente");
}
}
private void validarExistenciaOs(EmitirOrdemCorteForm form,
HttpServletRequest httpServletRequest,Fachada fachada){
ServicoTipo servicoTipo =
fachada.recuperaServicoTipoPorConstante(
ServicoTipo.TIPO_CORTE_LIGACAO_AGUA);
if(servicoTipo==null){
servicoTipo =
fachada.recuperaServicoTipoPorConstanteServicoTipoSeletivo(
ServicoTipoSeletiva.CORTE_SELETIVO);
}
if(servicoTipo==null){
throw new ActionServletException("atencao.servico_tipo_nao_existe");
}
FiltroOrdemServico filtro = new FiltroOrdemServico();
filtro.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.ID_IMOVEL, form.getMatriculaImovel()));
filtro.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.SITUACAO, OrdemServico.SITUACAO_PENDENTE));
filtro.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.ID_SERVICO_TIPO,servicoTipo.getId()));
Collection colecaoOrdensServico
= fachada.pesquisar(filtro, OrdemServico.class.getName());
OrdemServico ordemServico = (OrdemServico) Util.retonarObjetoDeColecao(colecaoOrdensServico);
if(ordemServico == null){
servicoTipo =
fachada.recuperaServicoTipoPorConstanteServicoTipoSeletivo(
ServicoTipoSeletiva.CORTE_SELETIVO);
FiltroOrdemServico filtroSeletiva = new FiltroOrdemServico();
filtroSeletiva.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.ID_IMOVEL, form.getMatriculaImovel()));
filtroSeletiva.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.SITUACAO, OrdemServico.SITUACAO_PENDENTE));
filtroSeletiva.adicionarParametro(
new ParametroSimples(FiltroOrdemServico.ID_SERVICO_TIPO,servicoTipo.getId()));
Collection colecaoOrdensServicoSeletiva
= fachada.pesquisar(filtroSeletiva, OrdemServico.class.getName());
ordemServico = (OrdemServico) Util.retonarObjetoDeColecao(colecaoOrdensServicoSeletiva);
}
if(ordemServico!=null){
form.setOrdemServico(ordemServico.getId().toString());
form.setIndicadorPermitirEmitir("sim");
form.setIndicadorPermitirGerarOs("nao");
}else{
form.setIndicadorPermitirEmitir("nao");
form.setIndicadorPermitirGerarOs("sim");
}
}
private void limpar(EmitirOrdemCorteForm form,HttpSession sessao){
form.setTipo("1");
form.setInscricaoImovel(null);
form.setMatriculaImovel(null);
form.setIndicadorPermitirEmitir("nao");
form.setIndicadorPermitirGerarOs("nao");
sessao.removeAttribute("enderecoFormatado");
sessao.removeAttribute("inscricaoImovelEncontrada");
}
}