package gcom.gui.portal;
import gcom.cadastro.imovel.Categoria;
import gcom.cadastro.sistemaparametro.FiltroSistemaParametro;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.gui.GcomAction;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import java.io.IOException;
import java.io.OutputStream;
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;
/**[UC1194] Consultar Estrutura Tarif�ria Loja Virtual
*
* Classe respons�vel por configurar as cole��es da estrutura
* tarif�ria para serem exibidas na tela
* informacoes_estrutura_tarifaria_portal_consultar.jsp
*
* @author Diogo Peixoto
* @since 14/07/2011
*
*/
public class ExibirConsultarEstruturaTarifariaPortalAction extends GcomAction {
public ActionForward execute(ActionMapping mapping, ActionForm actionForm,
HttpServletRequest request, HttpServletResponse response) throws Exception {
ActionForward retorno = mapping.findForward("exibirConsultarEstruturaTarifariaPortalAction");
HttpSession sessao = request.getSession(false);
request.setAttribute("voltarInformacoes", true);
//Verifica se os downloads dos arquivos est�o dispon�veis.
FiltroSistemaParametro filtroSistemaParametro = new FiltroSistemaParametro();
Collection<SistemaParametro> colecaoSistemaParametro = this.getFachada().pesquisar(filtroSistemaParametro, SistemaParametro.class.getName());
SistemaParametro sistemaParametro = colecaoSistemaParametro.iterator().next();
this.setarDownloadsLoja(sistemaParametro, request);
String download = (String)request.getParameter("download");
if(Util.verificarNaoVazio(download)){
this.retornaArquivo(download, response, sistemaParametro, request);
}
//Consumos N�o medidos
ArrayList<ConsultarEstruturaTarifariaPortalHelper> consumosNaoMedidos = new ArrayList<ConsultarEstruturaTarifariaPortalHelper>();
ConsultarEstruturaTarifariaPortalHelper consumoNaoMedido = null;
//Consumos Medidos Residencial
ArrayList<ConsultarEstruturaTarifariaPortalHelper> helperResidencial =
this.getFachada().pesquisarEstruturaTarifaria(Categoria.RESIDENCIAL);
if(!Util.isVazioOrNulo(helperResidencial)){
request.setAttribute("helperResidencial", helperResidencial);
//------------------------- Carregando os consumos n�o medidos (Residencial) -------------------------//
//Recupera os dados referentes ao consumo da tarifa social
consumoNaoMedido = helperResidencial.get(0);
if(consumoNaoMedido != null){
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper(
"Residencial Tarifa Social", "por m�s", consumoNaoMedido.getValor(), 2));
}
//Recupera os dados referentes ao consumo da tarifa m�nima
consumoNaoMedido = helperResidencial.get(1);
if(consumoNaoMedido != null){
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("Residencial", "por m�s", consumoNaoMedido.getValor(), 2));
}
//------------------------- Fim do carregar os consumos n�o medidos (Residencial) -------------------------//
}
//Consumos Medidos Comercial
ArrayList<ConsultarEstruturaTarifariaPortalHelper> helperComercial =
this.getFachada().pesquisarEstruturaTarifaria(Categoria.COMERCIAL);
if(!Util.isVazioOrNulo(helperComercial)){
request.setAttribute("helperComercial", helperComercial);
//------------------------- Carregando os consumos n�o medidos (Residencial) -------------------------//
consumoNaoMedido = helperComercial.get(0);
if(consumoNaoMedido != null){
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("Comercial", "por m�s", consumoNaoMedido.getValor(), 2));
}
}
//Consumos Medidos Industrial
ArrayList<ConsultarEstruturaTarifariaPortalHelper> helperIndustrial =
this.getFachada().pesquisarEstruturaTarifaria(Categoria.INDUSTRIAL);
if(!Util.isVazioOrNulo(helperIndustrial)){
request.setAttribute("helperIndustrial", helperIndustrial);
//------------------------- Carregando os consumos n�o medidos (Industrial) -------------------------//
consumoNaoMedido = helperIndustrial.get(0);
if(consumoNaoMedido != null){
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("Industrial", "por m�s", consumoNaoMedido.getValor(), 2));
}
}
//Consumos Medidos P�blica
ArrayList<ConsultarEstruturaTarifariaPortalHelper> helperPublica =
this.getFachada().pesquisarEstruturaTarifaria(Categoria.PUBLICO);
if(!Util.isVazioOrNulo(helperPublica)){
request.setAttribute("helperPublica", helperPublica);
//------------------------- Carregando os consumos n�o medidos (Publico) -------------------------//
consumoNaoMedido = helperPublica.get(0);
if(consumoNaoMedido != null){
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("P�blico", "por m�s", consumoNaoMedido.getValor(), 2));
}
}
//------------------------- Carregando os consumos n�o medidos -------------------------//
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("Fornecimento por Carros-pipa ", "por 1.000L", "9,58", 2));
consumosNaoMedidos.add(new ConsultarEstruturaTarifariaPortalHelper("Fornecimento por Carros-pipa �rg�os P�blicos ", "por 1.000L", "1,33", 2));
consumosNaoMedidos.add(this.getFachada().pesquisarEstruturaTarifariaChafarizPublico());
request.setAttribute("consumosNaoMedidos", consumosNaoMedidos);
/*
* Serve para inicializar as tarifas de �gua bruta. O �ndice de consumo para a tarifa de �gua bruta
* � 3. Necessita iterar pelos 3 helper (Residencial, Comercial, Industrial)
*/
ArrayList<ConsultarEstruturaTarifariaPortalHelper> helperAguaBruta = new ArrayList<ConsultarEstruturaTarifariaPortalHelper>();
helperAguaBruta = this.getFachada().pesquisarEstruturaTarifariaAguaBruta(Categoria.RESIDENCIAL);
helperAguaBruta.addAll(this.getFachada().pesquisarEstruturaTarifariaAguaBruta(Categoria.COMERCIAL));
helperAguaBruta.addAll(this.getFachada().pesquisarEstruturaTarifariaAguaBruta(Categoria.INDUSTRIAL));
request.setAttribute("helperAguaBruta", helperAguaBruta);
/*
* Vai colocar na sess�o o bean que ser� neces�rio para gerar o ralat�rio,
* caso o usu�rio selecione para gerar o relat�rio.
*/
ArrayList<ConsultarEstruturaTarifariaPortalHelper> estruturaTarifariaBeans = new ArrayList<ConsultarEstruturaTarifariaPortalHelper>();
estruturaTarifariaBeans.addAll(helperResidencial);
estruturaTarifariaBeans.addAll(helperComercial);
estruturaTarifariaBeans.addAll(helperIndustrial);
estruturaTarifariaBeans.addAll(helperPublica);
estruturaTarifariaBeans.addAll(consumosNaoMedidos);
estruturaTarifariaBeans.addAll(helperAguaBruta);
sessao.setAttribute("estruturaTarifariaBeans", estruturaTarifariaBeans);
return retorno;
}
//Verifica a existencias dos arquivos no banco
private void setarDownloadsLoja(SistemaParametro sistemaParametro, HttpServletRequest request){
if(sistemaParametro.getArquivoLeiEstTarif() != null && sistemaParametro.getArquivoLeiEstTarif().length != 0){
request.setAttribute("leiEstadual", true);
if(Util.verificarNaoVazio(sistemaParametro.getDescricaoLeiEstTarif())){
request.setAttribute("labelLeiEstadual", sistemaParametro.getDescricaoLeiEstTarif());
}
}
if(sistemaParametro.getArquivoLeiEstTarif() != null && sistemaParametro.getArquivoLeiEstTarif().length != 0){
request.setAttribute("decretoEstadual", true);
if(Util.verificarNaoVazio(sistemaParametro.getDescricaoDecreto())){
request.setAttribute("labelDecretoEstadual", sistemaParametro.getDescricaoDecreto());
}
}
}
//N�todo respons�vel por retornar o arquivo para o usu�rio caso ele aperte no link do pdf.
private void retornaArquivo(String arquivo, HttpServletResponse response, SistemaParametro sistemaParametro, HttpServletRequest request){
String mimeType = ConstantesSistema.CONTENT_TYPE_PDF;
OutputStream out = null;
byte[] file = null;
if(arquivo.equalsIgnoreCase("decretoEstadual")){
file = sistemaParametro.getArquivoDecreto();
}else if(arquivo.equalsIgnoreCase("leiEstadual")){
file = sistemaParametro.getArquivoLeiEstTarif();
}
try {
response.setContentType(mimeType);
out = response.getOutputStream();
out.write(file);
out.flush();
out.close();
}
catch (IOException e) {
request.setAttribute("arquivoNaoEncontrado", true);
}
}
}