package gcom.gui.atendimentopublico.ligacaoesgoto;
import gcom.atendimentopublico.ordemservico.OrdemServico;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.ClienteImovel;
import gcom.cadastro.cliente.ClienteRelacaoTipo;
import gcom.cadastro.cliente.FiltroClienteImovel;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.imovel.Imovel;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.filtro.ParametroNulo;
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;
/**
* Action respons�vel pela pre-exibi��o da pagina de atualizar volume m�nimo de
* liga��o de esgoto.
*
* @author Leonardo Regis
* @date 22/09/2006
*/
public class ExibirAtualizarVolumeMinimoLigacaoEsgotoAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Set no mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("atualizarVolumeMinimoLigacaoEsgotoActionExibir");
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarVolumeMinimoLigacaoEsgotoActionForm form = (AtualizarVolumeMinimoLigacaoEsgotoActionForm) actionForm;
Fachada fachada = Fachada.getInstancia();
Boolean veioEncerrarOS = null;
if (httpServletRequest.getAttribute("veioEncerrarOS") != null) {
veioEncerrarOS = Boolean.TRUE;
} else {
if (form.getVeioEncerrarOS() != null
&& !form
.getVeioEncerrarOS().equals("")) {
if (form.getVeioEncerrarOS()
.toLowerCase().equals("true")) {
veioEncerrarOS = veioEncerrarOS = Boolean.TRUE;
} else {
veioEncerrarOS = veioEncerrarOS = Boolean.FALSE;
}
} else {
veioEncerrarOS = Boolean.FALSE;
}
}
form.setVeioEncerrarOS("" + veioEncerrarOS);
// Variavel responsav�l pelo preenchimento do imovel no formul�rio
String idOrdemServico = null;
if (form.getIdOrdemServico() != null) {
idOrdemServico = form.getIdOrdemServico();
} else {
idOrdemServico = (String) httpServletRequest
.getAttribute("veioEncerrarOS");
sessao.setAttribute("caminhoRetornoIntegracaoComercial",
httpServletRequest
.getAttribute("caminhoRetornoIntegracaoComercial"));
}
if (httpServletRequest.getAttribute("semMenu") != null) {
sessao.setAttribute("semMenu", "SIM");
} else {
sessao.removeAttribute("semMenu");
}
if (idOrdemServico != null && !idOrdemServico.equals("")) {
OrdemServico ordemServico = fachada.recuperaOSPorId(new Integer(
idOrdemServico));
if (ordemServico != null && !ordemServico.equals("")) {
// Valida��es
fachada.validarExibirAtualizarVolumeMinimoLigacaoEsgoto(
ordemServico, veioEncerrarOS);
form.setIdOrdemServico(idOrdemServico);
// Preenchar dados da ordem de servico
form.setNomeOrdemServico(ordemServico.getServicoTipo()
.getDescricao());
// Preencher dados do imovel
this.preencherDadosImovel(form, ordemServico);
// Preencher dados do Cliente
this.pesquisarCliente(form, ordemServico);
sessao.setAttribute("osEncontrada", "true");
} else {
sessao.removeAttribute("osEncontrada");
form.setNomeOrdemServico("Ordem de Servi�o inexistente");
}
} else {
httpServletRequest.setAttribute("nomeCampo", "idOrdemServico");
form.setDataConcorrencia(new Date());
}
return retorno;
}
/**
* Preencher dados do im�vel
*
* @author Leonardo Regis
* @date 22/09/2006
*/
private void preencherDadosImovel(
AtualizarVolumeMinimoLigacaoEsgotoActionForm form,
OrdemServico ordemServico) {
Fachada fachada = Fachada.getInstancia();
Imovel imovel = ordemServico.getRegistroAtendimento().getImovel();
// Matricula Im�vel
form.setMatriculaImovel(imovel.getId().toString());
// Inscri��o Im�vel
String inscricaoImovel = fachada.pesquisarInscricaoImovel(imovel
.getId());
form.setInscricaoImovel(inscricaoImovel);
// Situa��o da Liga��o de Agua
String situacaoLigacaoAgua = imovel.getLigacaoAguaSituacao()
.getDescricao();
form.setSituacaoLigacaoAgua(situacaoLigacaoAgua);
// Situa��o da Liga��o de Esgoto
String situacaoLigacaoEsgoto = imovel.getLigacaoEsgotoSituacao()
.getDescricao();
form.setSituacaoLigacaoEsgoto(situacaoLigacaoEsgoto);
// Categoria do Imovel
Categoria categoria = fachada.obterDescricoesCategoriaImovel(imovel);
form.setCategoriaImovel(categoria.getDescricao());
// Quatidade de Economias
int qtdeconomias = fachada.obterQuantidadeEconomias(imovel);
form.setQtdeEconomia(qtdeconomias + "");
// Volume M�nimo
if (imovel.getLigacaoEsgoto().getConsumoMinimo() != null
&& !imovel.getLigacaoEsgoto().getConsumoMinimo()
.equals("")) {
form.setConsumoMinimoFixado(imovel.getLigacaoEsgoto()
.getConsumoMinimo()
+ "");
} else {
form.setConsumoMinimoFixado("");
}
// Valor Obtido
String valorObtido = fachada.obterConsumoMinimoLigacao(imovel, null)
+ "";
form.setValorObtido(valorObtido);
// Consumo Tarifa
form.setConsumoTarifaId(imovel.getConsumoTarifa().getId() + "");
}
/**
* Pesquisa Cliente
*
* @author Leonardo Regis
* @date 22/09/2006
*/
private void pesquisarCliente(
AtualizarVolumeMinimoLigacaoEsgotoActionForm form,
OrdemServico ordemServico) {
// Filtro para carregar o Cliente
FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel();
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.IMOVEL_ID, ordemServico
.getRegistroAtendimento().getImovel().getId()));
filtroClienteImovel.adicionarParametro(new ParametroSimples(
FiltroClienteImovel.CLIENTE_RELACAO_TIPO,
ClienteRelacaoTipo.USUARIO));
filtroClienteImovel.adicionarParametro(new ParametroNulo(
FiltroClienteImovel.DATA_FIM_RELACAO));
filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade("cliente");
Collection colecaoClienteImovel = Fachada.getInstancia().pesquisar(
filtroClienteImovel, ClienteImovel.class.getName());
if (colecaoClienteImovel != null && !colecaoClienteImovel.isEmpty()) {
ClienteImovel clienteImovel = (ClienteImovel) colecaoClienteImovel
.iterator().next();
Cliente cliente = clienteImovel.getCliente();
String documento = "";
if (cliente.getCpf() != null && !cliente.getCpf().equals("")) {
documento = cliente.getCpfFormatado();
} else {
documento = cliente.getCnpjFormatado();
}
// Cliente Nome/CPF-CNPJ
form.setClienteUsuario(cliente.getNome());
form.setCpfCnpjCliente(documento);
} else {
throw new ActionServletException("atencao.naocadastrado", null,
"Cliente");
}
}
}