package gcom.gui.relatorio.atendimentopublico;
import gcom.cadastro.cliente.Cliente;
import gcom.fachada.Fachada;
import gcom.gui.cadastro.imovel.ConsultarImovelActionForm;
import gcom.micromedicao.hidrometro.HidrometroInstalacaoHistorico;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.atendimentopublico.RelatorioResumoImovelMicromedicao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
/**
* @author Ana Maria
* @date 13/02/2007
*/
public class GerarRelatorioResumoImovelMicromedicaoAction extends
ExibidorProcessamentoTarefaRelatorio {
/**
* < <Descri��o do m�todo>>
*
* @param actionMapping
* Descri��o do par�metro
* @param actionForm
* Descri��o do par�metro
* @param httpServletRequest
* Descri��o do par�metro
* @param httpServletResponse
* Descri��o do par�metro
* @return Descri��o do retorno
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// cria a vari�vel de retorno
ActionForward retorno = null;
Fachada fachada = Fachada.getInstancia();
// cria uma inst�ncia da classe do relat�rio
RelatorioResumoImovelMicromedicao relatorioResumoImovelMicromedicao = new RelatorioResumoImovelMicromedicao((Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
ConsultarImovelActionForm consultarImovelActionForm = (ConsultarImovelActionForm) actionForm;
// Collection<Integer> anosMeses = new ArrayList<Integer>();
//
// Collection colecaoMedicaoHistorico = fachada.carregarDadosMedicaoResumo(new Integer(
// consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo()), true);
//
// Collection imoveisMicromedicaoCarregamento = null;
// Collection colecaoImovelMicromedicao = new ArrayList();
//
// if (colecaoMedicaoHistorico != null && !colecaoMedicaoHistorico.isEmpty()) {
// Iterator iteratorMedicaoHistorico = colecaoMedicaoHistorico
// .iterator();
//
// while (iteratorMedicaoHistorico.hasNext()) {
// MedicaoHistorico medicaoHistoricoConsumo = (MedicaoHistorico) iteratorMedicaoHistorico
// .next();
// if (medicaoHistoricoConsumo.getAnoMesReferencia() != 0) {
//
//
// imoveisMicromedicaoCarregamento = fachada
// .carregarDadosConsumo(
// new Integer(consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo()),
// medicaoHistoricoConsumo
// .getAnoMesReferencia(), true);
//
// if (imoveisMicromedicaoCarregamento != null) {
// ImovelMicromedicao imovelMicromedicao = (ImovelMicromedicao)imoveisMicromedicaoCarregamento.iterator().next();
// if(imovelMicromedicao.getMedicaoHistorico() != null
// && imovelMicromedicao.getMedicaoHistorico().getNumeroConsumoMes() != null){
// medicaoHistoricoConsumo.setNumeroConsumoMes(imovelMicromedicao.getMedicaoHistorico().getNumeroConsumoMes());
//
// }
//
// imovelMicromedicao.setMedicaoHistorico(medicaoHistoricoConsumo);
//
// colecaoImovelMicromedicao.add(imovelMicromedicao);
// }
// }
// }
//
// // Organizar a cole��o de Conta
// if (colecaoImovelMicromedicao != null
// && !colecaoImovelMicromedicao.isEmpty()) {
//
// Collections.sort((List) colecaoImovelMicromedicao,
// new Comparator() {
// public int compare(Object a, Object b) {
//
// int retorno = 0;
// Integer anoMesReferencia1 = ((ImovelMicromedicao) a)
// .getMedicaoHistorico()
// .getAnoMesReferencia();
// Integer anoMesReferencia2 = ((ImovelMicromedicao) b)
// .getMedicaoHistorico()
// .getAnoMesReferencia();
//
// if (anoMesReferencia1
// .compareTo(anoMesReferencia2) == 1) {
// retorno = -1;
// } else if (anoMesReferencia1
// .compareTo(anoMesReferencia2) == -1) {
// retorno = 1;
// }
//
// return retorno;
//
// }
// });
// }
//
// }
String endereco = fachada.pesquisarEndereco(new Integer(consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo()));
Cliente cliente = fachada.pesquisarClienteUsuarioImovelExcluidoOuNao(new Integer(consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo()));
// relatorioResumoImovelMicromedicao.addParametro("colecaoImovelMicromedicao", colecaoImovelMicromedicao);
relatorioResumoImovelMicromedicao.addParametro("matricula", consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo());
relatorioResumoImovelMicromedicao.addParametro("inscricao", consultarImovelActionForm.getMatriculaImovelAnaliseMedicaoConsumo());
relatorioResumoImovelMicromedicao.addParametro("sitLigacaoAgua", consultarImovelActionForm.getSituacaoAguaAnaliseMedicaoConsumo());
relatorioResumoImovelMicromedicao.addParametro("sitLigacaoEsgoto", consultarImovelActionForm.getSituacaoEsgotoAnaliseMedicaoConsumo());
relatorioResumoImovelMicromedicao.addParametro("numeroHidrometro",consultarImovelActionForm.getNumeroHidrometro());
relatorioResumoImovelMicromedicao.addParametro("endereco", endereco);
/** [MA2011061013] Incluir no cabe�alho o N�mero do Hidr�metro Retirado e a Data da Retirada
* Autor: Paulo Diniz
* Data: 13/07/2011
* */
List<HidrometroInstalacaoHistorico> hidrometrosHistorico = fachada.pesquisarHidrometroPeloIdImovel(new Integer(consultarImovelActionForm.getIdImovelAnaliseMedicaoConsumo()));
if(hidrometrosHistorico != null && !hidrometrosHistorico.isEmpty()){
Date dataInstalacao = hidrometrosHistorico.get(0).getDataInstalacao();
String numeroRetirado = "";
Date dataRetirada = hidrometrosHistorico.get(0).getDataRetirada();
if(hidrometrosHistorico.get(0).getNumeroLeituraRetirada() != null){
numeroRetirado = hidrometrosHistorico.get(0).getNumeroLeituraRetirada().intValue()+"";
}
for (HidrometroInstalacaoHistorico hidrometroInstalacaoHistorico : hidrometrosHistorico) {
if(dataInstalacao == null || (hidrometroInstalacaoHistorico.getDataInstalacao() != null && dataInstalacao.before(hidrometroInstalacaoHistorico.getDataInstalacao()))){
dataInstalacao = hidrometroInstalacaoHistorico.getDataInstalacao();
}
if(dataRetirada == null || (hidrometroInstalacaoHistorico.getDataRetirada() != null && dataRetirada.before(hidrometroInstalacaoHistorico.getDataRetirada()))){
dataRetirada = hidrometroInstalacaoHistorico.getDataRetirada();
if(hidrometroInstalacaoHistorico.getNumeroLeituraRetirada() != null){
numeroRetirado = hidrometroInstalacaoHistorico.getNumeroLeituraRetirada().intValue()+"";
}else{
numeroRetirado = "";
}
}
}
relatorioResumoImovelMicromedicao.addParametro("dataInstalacao",Util.formatarData(dataInstalacao));
relatorioResumoImovelMicromedicao.addParametro("numeroRetirado",numeroRetirado);
relatorioResumoImovelMicromedicao.addParametro("dataRetirada",Util.formatarData(dataRetirada));
} else{
relatorioResumoImovelMicromedicao.addParametro("dataInstalacao","");
relatorioResumoImovelMicromedicao.addParametro("numeroRetirado","");
relatorioResumoImovelMicromedicao.addParametro("dataRetirada","");
}
if (cliente != null) {
relatorioResumoImovelMicromedicao.addParametro("clienteUsuario", cliente.getNome());
} else {
relatorioResumoImovelMicromedicao.addParametro("clienteUsuario", "");
}
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioResumoImovelMicromedicao.addParametro("tipoFormatoRelatorio",
Integer.parseInt(tipoRelatorio));
retorno = processarExibicaoRelatorio(relatorioResumoImovelMicromedicao,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
// devolve o mapeamento contido na vari�vel retorno
return retorno;
}
}