package gcom.gui.relatorio.atendimentopublico;
import gcom.gui.ActionServletException;
import gcom.gui.atendimentopublico.ordemservico.GerarRelatorioGestaoServicosUPAActionForm;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.atendimentopublico.RelatorioGestaoServicosUPA;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.tarefa.TarefaRelatorio;
import gcom.util.Util;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
/**
* [UC0776] Filtrar Relat�rio de Gest�o de Servi�os UPA
*
* @see gcom.gui.atendimentopublico.ordemservico.ExibirGerarRelatorioGestaoServicosUPAAction
* @see gcom.gui.atendimentopublico.ordemservico.GerarRelatorioGestaoServicosUPAActionForm
* @see gcom.relatorio.atendimentopublico.RelatorioGestaoServicosUPA
*
* @author Victor Cisneiros
* @date 19/05/2008
*/
public class GerarRelatorioGestaoServicosUPAAction
extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(
ActionMapping mapping,
ActionForm actionForm,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
Usuario usuario = (Usuario) request.getSession(false).getAttribute("usuarioLogado");
GerarRelatorioGestaoServicosUPAActionForm form = (GerarRelatorioGestaoServicosUPAActionForm) actionForm;
// ------------------------------
// -- Parametros
// ------------------------------
Short situacao = null;
Collection<Integer> collectionServicoTipo = null;
Date periodoGeracaoInicial = null;
Date periodoGeracaoFinal = null;
Integer idUnidadeOrganizacional = null;
Integer idUnidadeSuperior = null;
Integer idEmpresa = null;
// ------------------------------
// -- Situacao
// ------------------------------
if (form.getSituacaoOrdemServico() != null && !form.getSituacaoOrdemServico().trim().equals("")) {
situacao = new Short(form.getSituacaoOrdemServico());
}
// ------------------------------
// -- Tipos de Servi�os
// ------------------------------
// Se o usu�rio selecionou Tipos de Servi�os, popular a Collection
if (form.getTipoServicoSelecionados() != null && !form.getTipoServicoSelecionados()[0].equals("-1")) {
collectionServicoTipo = new ArrayList<Integer>();
for (String idServico : form.getTipoServicoSelecionados()) {
collectionServicoTipo.add(new Integer(idServico));
}
}
// ------------------------------
// -- Per�odo de Gera��o Inicial
// ------------------------------
if (form.getPeriodoGeracaoInicial() != null && !form.getPeriodoGeracaoInicial().trim().equals("")) {
periodoGeracaoInicial = Util.converteStringParaDate(form.getPeriodoGeracaoInicial());
} else {
throw new ActionServletException("atencao.required", null, "Per�odo de Gera��o Inicial");
}
// ------------------------------
// -- Per�odo de Gera��o Final
// ------------------------------
if (form.getPeriodoGeracaoFinal() != null && !form.getPeriodoGeracaoFinal().trim().equals("")) {
periodoGeracaoFinal = Util.converteStringParaDate(form.getPeriodoGeracaoFinal());
} else {
periodoGeracaoFinal = periodoGeracaoInicial;
}
if ((periodoGeracaoFinal.getTime() - periodoGeracaoInicial.getTime()) > 1000L * 60L * 60L * 24L * 31L) {
throw new ActionServletException("atencao.filtrar_intervalo_limite", null, "Data de Atendimento");
}
// ------------------------------
// -- UnidadeOrganizacional ou UnidadeSuperior ou Empresa
// ------------------------------
if (form.getIdUnidadeOrganizacional() != null && !form.getIdUnidadeOrganizacional().trim().equals("")) {
idUnidadeOrganizacional = new Integer(form.getIdUnidadeOrganizacional());
}
else if (form.getIdUnidadeSuperior() != null && !form.getIdUnidadeSuperior().trim().equals("")) {
idUnidadeSuperior = new Integer(form.getIdUnidadeSuperior());
}
else if (form.getIdEmpresa() != null && !form.getIdEmpresa().trim().equals("")) {
idEmpresa = new Integer(form.getIdEmpresa());
}
else {
throw new ActionServletException("atencao.required", null, "Unidade Organizacional OU Unidade Superior OU Empresa");
}
// ------------------------------
// -- Tipo do Relatorio
// ------------------------------
int tipoRelatorio = TarefaRelatorio.TIPO_PDF;
try {
tipoRelatorio = Integer.parseInt(request.getParameter("tipoRelatorio"));
} catch (NumberFormatException e) { }
// ------------------------------
// -- Geracao do Relatorio
// ------------------------------
RelatorioGestaoServicosUPA relatorio = new RelatorioGestaoServicosUPA(usuario);
relatorio.addParametro("situacao", situacao);
relatorio.addParametro("periodoGeracaoInicial", periodoGeracaoInicial);
relatorio.addParametro("periodoGeracaoFinal", periodoGeracaoFinal);
relatorio.addParametro("collectionServicoTipo", collectionServicoTipo);
relatorio.addParametro("idUnidadeOrganizacional", idUnidadeOrganizacional);
relatorio.addParametro("idUnidadeSuperior", idUnidadeSuperior);
relatorio.addParametro("idEmpresa", idEmpresa);
relatorio.addParametro("tipoRelatorio", tipoRelatorio);
return processarExibicaoRelatorio(
relatorio, tipoRelatorio, request, response, mapping);
// byte[] bytes = (byte[]) relatorio.executar();
//
// if (tipoRelatorio == TarefaRelatorio.TIPO_PDF) {
// response.addHeader("Content-Disposition",
// "attachment; filename=relatorio.pdf");
// response.setContentType("application/pdf");
// } else if (tipoRelatorio == TarefaRelatorio.TIPO_RTF) {
// response.addHeader("Content-Disposition",
// "attachment; filename=relatorio.rtf");
// response.setContentType("application/rtf");
// } else if (tipoRelatorio == TarefaRelatorio.TIPO_XLS) {
// response.addHeader("Content-Disposition",
// "attachment; filename=relatorio.xls");
// response.setContentType("application/vnd.ms-excel");
// } else if (tipoRelatorio == TarefaRelatorio.TIPO_HTML) {
// response.addHeader("Content-Disposition",
// "attachment; filename=relatorio.zip");
// response.setContentType("application/zip");
// }
//
// OutputStream out = response.getOutputStream();
// out.write(bytes);
// out.flush();
// out.close();
//
// return null;
}
}