package gcom.gui.relatorio.arrecadacao;
import gcom.cadastro.geografico.FiltroMunicipio;
import gcom.cadastro.geografico.Municipio;
import gcom.cadastro.localidade.FiltroLocalidade;
import gcom.cadastro.localidade.Localidade;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.RelatorioVazioException;
import gcom.relatorio.arrecadacao.RelatorioResumoArrecadacao;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.ConstantesSistema;
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;
/**
* Gera��o do relat�rio [UC0345] Gerar Relat�rio de Resumo do Arrecadacao
*
* @author Vivianne Sousa
*/
public class GerarRelatorioResumoArrecadacaoAction extends
ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = null;
//Fachada fachada = Fachada.getInstancia();
GerarRelatorioResumoArrecadacaoActionForm form = (GerarRelatorioResumoArrecadacaoActionForm) actionForm;
HttpSession sessao = httpServletRequest.getSession(false);
String mesAno = form.getMesAno();
Integer gerenciaRegional = null;
Integer localidade = null;
Integer unidadeNegocio = null;
Integer municipio = null;
String opcaoTotalizacao = form.getOpcaoTotalizacao();
if((mesAno == null || mesAno.equals("")) && sessao.getAttribute("mesAno") == null){
throw new ActionServletException("atencao.required", null,
"M�s/Ano da Arrecada��o");
}
sessao.setAttribute("mesAno", mesAno);
if (opcaoTotalizacao == null || opcaoTotalizacao.equalsIgnoreCase("")) {
if (sessao.getAttribute("opcaoTotalizacao") == null) {
throw new ActionServletException("atencao.required", null, "Op��o de Totaliza��o ");
} else {
opcaoTotalizacao = (String) sessao.getAttribute("opcaoTotalizacao");
}
}
if (opcaoTotalizacao.trim().equals("gerenciaRegional")) {
gerenciaRegional = (Integer) sessao.getAttribute("gerenciaRegional");
if (form.getGerenciaRegionalId() != null
&& !form.getGerenciaRegionalId().equals("")
&& !form.getGerenciaRegionalId().equals("-1")) {
gerenciaRegional = Integer.parseInt(form
.getGerenciaRegionalId());
}
if (gerenciaRegional == null
|| gerenciaRegional
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)) {
throw new ActionServletException("atencao.required", null,
"Ger�ncia Regional");
}
} else if (opcaoTotalizacao.trim().equals("gerenciaRegionalLocalidade")) {
gerenciaRegional = (Integer) sessao
.getAttribute("gerenciaRegional");
if (form.getGerenciaRegionalId() != null
&& !form.getGerenciaRegionalId().equals("")
&& !form.getGerenciaRegionalId().equals("-1")) {
gerenciaRegional = Integer.parseInt(form
.getGerenciaRegionalporLocalidadeId());
}
if (gerenciaRegional == null
|| gerenciaRegional
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO)) {
throw new ActionServletException("atencao.required", null,
"Ger�ncia Regional");
}
}else if (opcaoTotalizacao.trim().equals("localidade")) {
String codigoLocalidade = form.getCodigoLocalidade();
if (codigoLocalidade == null || codigoLocalidade.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "Localidade ");
} else {
pesquisarLocalidade(codigoLocalidade, httpServletRequest);
}
localidade = Integer.parseInt(codigoLocalidade);
} else if (opcaoTotalizacao.trim().equals("municipio")) {
String codigoMunicipio = form.getCodigoMunicipio();
if (codigoMunicipio == null || codigoMunicipio.equalsIgnoreCase("")) {
throw new ActionServletException("atencao.required", null, "Munic�pio ");
} else {
pesquisarMunicipio(codigoMunicipio, httpServletRequest);
}
municipio = Integer.parseInt(codigoMunicipio);
}
if (opcaoTotalizacao.trim().equals("unidadeNegocio")) {
String idUnidadeNegocio = form.getUnidadeNegocioId();
unidadeNegocio = (Integer) sessao.getAttribute("unidadeNegocio");
if (idUnidadeNegocio == null
|| idUnidadeNegocio
.equals(ConstantesSistema.NUMERO_NAO_INFORMADO) && unidadeNegocio == null) {
throw new ActionServletException("atencao.required", null, "Unidade de Neg�cio ");
}
unidadeNegocio = Integer.parseInt(idUnidadeNegocio);
}
int mesAnoInteger = Integer.parseInt(mesAno.substring(0, 2)
+ mesAno.substring(3, 7));
// Parte que vai mandar o relat�rio para a tela
// cria uma inst�ncia da classe do relat�rio
RelatorioResumoArrecadacao relatorioResumoArrecadacao = new RelatorioResumoArrecadacao(
(Usuario)(httpServletRequest.getSession(false)).getAttribute("usuarioLogado"));
relatorioResumoArrecadacao.addParametro("opcaoTotalizacao", opcaoTotalizacao);
relatorioResumoArrecadacao.addParametro("mesAnoInteger", mesAnoInteger);
relatorioResumoArrecadacao.addParametro("localidade", localidade);
relatorioResumoArrecadacao.addParametro("municipio", municipio);
relatorioResumoArrecadacao.addParametro("unidadeNegocio", unidadeNegocio);
relatorioResumoArrecadacao.addParametro("gerenciaRegional", gerenciaRegional);
sessao.setAttribute("opcaoTotalizacao", opcaoTotalizacao);
sessao.setAttribute("localidade", localidade);
sessao.setAttribute("gerenciaRegional", gerenciaRegional);
sessao.setAttribute("unidadeNegocio", unidadeNegocio);
sessao.setAttribute("municipio", municipio);
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
relatorioResumoArrecadacao.addParametro("tipoFormatoRelatorio", Integer
.parseInt(tipoRelatorio));
try {
retorno = processarExibicaoRelatorio(relatorioResumoArrecadacao,
tipoRelatorio, httpServletRequest, httpServletResponse,
actionMapping);
} catch (RelatorioVazioException ex) {
// manda o erro para a p�gina no request atual
reportarErros(httpServletRequest, "atencao.relatorio.vazio");
// seta o mapeamento de retorno para a tela de aten��o de popup
retorno = actionMapping.findForward("telaAtencaoPopup");
}
return retorno;
}
private void pesquisarLocalidade(String idLocalidade, HttpServletRequest httpServletRequest) {
Fachada fachada = Fachada.getInstancia();
FiltroLocalidade filtroLocalidade = new FiltroLocalidade();
filtroLocalidade.adicionarParametro(new ParametroSimples(
FiltroLocalidade.ID, idLocalidade));
Collection<Localidade> localidadePesquisada = fachada.pesquisar(
filtroLocalidade, Localidade.class.getName());
if (localidadePesquisada == null || localidadePesquisada.isEmpty()) {
throw new ActionServletException("atencao.localidade.inexistente");
}
}
private void pesquisarMunicipio(String idMunicipio, HttpServletRequest httpServletRequest) {
Fachada fachada = Fachada.getInstancia();
FiltroMunicipio filtroMunicipio = new FiltroMunicipio();
filtroMunicipio.adicionarParametro(new ParametroSimples(
FiltroMunicipio.ID, idMunicipio));
Collection<Municipio> municipioPesquisado = fachada.pesquisar(
filtroMunicipio, Municipio.class.getName());
if (municipioPesquisado == null || municipioPesquisado.isEmpty()) {
throw new ActionServletException("atencao.localidade.inexistente");
}
}
}