package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.registroatendimento.FiltroMeioSolicitacao;
import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoDocumentoObrigatorio;
import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipo;
import gcom.atendimentopublico.registroatendimento.FiltroSolicitacaoTipoEspecificacao;
import gcom.atendimentopublico.registroatendimento.MeioSolicitacao;
import gcom.atendimentopublico.registroatendimento.SolicitacaoDocumentoObrigatorio;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipo;
import gcom.atendimentopublico.registroatendimento.SolicitacaoTipoEspecificacao;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.atendimentopublico.registroatendimento.ExibirInformarSolicitacaoDocumentoObrigatorioActionForm;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ParametroSimples;
import gcom.util.filtro.ParametroSimplesIn;
import gcom.util.filtro.ParametroSimplesNotIn;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
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;
/**
* [UC1067] - Informar Obrigatoriedade Documento Especifica��o
*
* @author Hugo Leonardo
*
* @date 23/08/2010
*/
public class ExibirInformarSolicitacaoDocumentoObrigatorioAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("exibirInformarSolicitacaoDocumentoObrigatorioAction");
HttpSession sessao = httpServletRequest.getSession(false);
// Form
ExibirInformarSolicitacaoDocumentoObrigatorioActionForm form =
(ExibirInformarSolicitacaoDocumentoObrigatorioActionForm) actionForm;
if (httpServletRequest.getParameter("menu") != null
&& !httpServletRequest.getParameter("menu").equals("")) {
// Pesquisar Tipo Solicitacao
this.pesquisarTipoSolicitacao(sessao, form);
}
// Pesquisar Tipo Especificacao
if(form.getIdTipoSolicitacao() != null && !form.getIdTipoSolicitacao().equals("-1") &&
httpServletRequest.getParameter("pesquisa") != null &&
httpServletRequest.getParameter("pesquisa").equals("tipoEspecificacao") ) {
this.pesquisarTipoEspecificacao(httpServletRequest, sessao, form);
}else if(form.getIdTipoSolicitacao() != null && form.getIdTipoSolicitacao().equals("-1")){
form.setIcDocumentoSolicitanteObrigatorio(null);
form.setIdsTipoEspecificacao(null);
httpServletRequest.removeAttribute("colecaoDocumentoObrigatorio");
httpServletRequest.removeAttribute("colecaoDocumentoNaoObrigatorio");
sessao.removeAttribute("colecaoSolicitacaoTipoEspecificacao");
}else if(form.getIdsTipoEspecificacao() != null && form.getIdsTipoEspecificacao()[0].equals("-1")){
form.setIcDocumentoSolicitanteObrigatorio(null);
form.setIcValidarDocumentoClienteResponsavel(null);
form.setIdsTipoEspecificacao(null);
httpServletRequest.removeAttribute("colecaoDocumentoObrigatorio");
httpServletRequest.removeAttribute("colecaoDocumentoNaoObrigatorio");
}
// caso tenha selecionado mais de um Tipo de Especifica��o
if(httpServletRequest.getParameter("tipoEspecificacao") != null &&
httpServletRequest.getParameter("tipoEspecificacao").equals("muitos") ){
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
filtroMeioSolicitacao.setConsultaSemLimites(true);
filtroMeioSolicitacao.adicionarParametro(new ParametroSimples(
FiltroMeioSolicitacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoMeioSolicitacaoObrigatorio =
Fachada.getInstancia().pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName());
if (colecaoMeioSolicitacaoObrigatorio != null && !colecaoMeioSolicitacaoObrigatorio.isEmpty()) {
if( form.getIcDocumentoSolicitanteObrigatorio() != null &&
form.getIcDocumentoSolicitanteObrigatorio().equals("1")){
httpServletRequest.setAttribute("colecaoDocumentoObrigatorio", colecaoMeioSolicitacaoObrigatorio);
}else if(form.getIcDocumentoSolicitanteObrigatorio() != null && form.getIcDocumentoSolicitanteObrigatorio().equals("2")){
httpServletRequest.setAttribute("colecaoDocumentoNaoObrigatorio", colecaoMeioSolicitacaoObrigatorio);
}
}
// caso tenha selecionado apenas um Tipo de Especifica��o
}else if(( httpServletRequest.getParameter("tipoEspecificacao") == null )){
// Monta a colecao de tipos Servicos
if(form.getIdsTipoEspecificacao() != null && !form.getIdsTipoEspecificacao().equals("-1")){
Collection<Integer> colecaoIdsTipoEspecificacao = new ArrayList();
String[] array = form.getIdsTipoEspecificacao();
for (int i = 0; i < array.length; i++) {
if (new Integer(array[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
colecaoIdsTipoEspecificacao.add(new Integer(array[i]));
}
}
Collection<SolicitacaoTipoEspecificacao> colecaoSolTipoEspec = new ArrayList();
if(colecaoIdsTipoEspecificacao != null && !colecaoIdsTipoEspecificacao.isEmpty()){
FiltroSolicitacaoTipoEspecificacao filtroSolTipoEspec = new FiltroSolicitacaoTipoEspecificacao();
filtroSolTipoEspec.adicionarParametro(new ParametroSimplesIn(
FiltroSolicitacaoTipoEspecificacao.ID, colecaoIdsTipoEspecificacao));
colecaoSolTipoEspec = this.getFachada().pesquisar(filtroSolTipoEspec,
SolicitacaoTipoEspecificacao.class.getName());
SolicitacaoTipoEspecificacao solicitacaoTipoEspecificacao = null;
Iterator iterator = colecaoSolTipoEspec.iterator();
solicitacaoTipoEspecificacao = (SolicitacaoTipoEspecificacao) iterator.next();
if(httpServletRequest.getParameter("indicadorDoc") == null
|| !httpServletRequest.getParameter("indicadorDoc").equals("alterado")){
form.setIcDocumentoSolicitanteObrigatorio("" +
solicitacaoTipoEspecificacao.getIndicadorDocumentoObrigatorio());
}
if(httpServletRequest.getParameter("indicadorDoc") == null
|| !httpServletRequest.getParameter("indicadorDoc").equals("alterado")){
form.setIcValidarDocumentoClienteResponsavel("" +
solicitacaoTipoEspecificacao.getIndicadorValidarDocResponsavel());
}
this.pesquisarMeioSolicitacao(httpServletRequest, form);
}
}else{
form.setIcDocumentoSolicitanteObrigatorio("");
}
}
return retorno;
}
/**
* Pesquisa Tipo Solicitacao
*
* @author Hugo Leonardo
* @date 23/08/2010
*/
private void pesquisarTipoSolicitacao(HttpSession sessao,
ExibirInformarSolicitacaoDocumentoObrigatorioActionForm form) {
FiltroSolicitacaoTipo filtroSolicitacaoTipo = new FiltroSolicitacaoTipo();
filtroSolicitacaoTipo.setConsultaSemLimites(true);
filtroSolicitacaoTipo.adicionarParametro(new ParametroSimples( FiltroSolicitacaoTipo.INDICADOR_USO,
ConstantesSistema.INDICADOR_USO_ATIVO));
filtroSolicitacaoTipo.setCampoOrderBy(FiltroSolicitacaoTipo.DESCRICAO);
Collection colecaoSolicitacaoTipo =
this.getFachada().pesquisar(filtroSolicitacaoTipo, SolicitacaoTipo.class.getName());
if(colecaoSolicitacaoTipo == null || colecaoSolicitacaoTipo.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Tipo Solicita��o");
}else{
sessao.setAttribute("colecaoSolicitacaoTipo", colecaoSolicitacaoTipo);
}
}
/**
* Pesquisa Tipo Especificacao
*
* @author Hugo Leonardo
* @date 23/08/2010
*/
private void pesquisarTipoEspecificacao(HttpServletRequest httpServletRequest, HttpSession sessao,
ExibirInformarSolicitacaoDocumentoObrigatorioActionForm form) {
FiltroSolicitacaoTipoEspecificacao filtroSolicitacaoTipoEspecificacao = new FiltroSolicitacaoTipoEspecificacao();
filtroSolicitacaoTipoEspecificacao.setConsultaSemLimites(true);
filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroSolicitacaoTipoEspecificacao.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipoEspecificacao.SOLICITACAO_TIPO, new Integer(form.getIdTipoSolicitacao())) );
filtroSolicitacaoTipoEspecificacao.setCampoOrderBy(FiltroSolicitacaoTipoEspecificacao.DESCRICAO);
Collection colecaoSolicitacaoTipoEspecificacao =
this.getFachada().pesquisar(filtroSolicitacaoTipoEspecificacao, SolicitacaoTipoEspecificacao.class.getName());
form.setIcDocumentoSolicitanteObrigatorio(null);
form.setIcValidarDocumentoClienteResponsavel(null);
form.setIdsTipoEspecificacao(null);
httpServletRequest.removeAttribute("colecaoDocumentoObrigatorio");
httpServletRequest.removeAttribute("colecaoDocumentoNaoObrigatorio");
if(colecaoSolicitacaoTipoEspecificacao == null || colecaoSolicitacaoTipoEspecificacao.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Tipo Solicita��o Especifica��o");
}else{
sessao.setAttribute("colecaoSolicitacaoTipoEspecificacao", colecaoSolicitacaoTipoEspecificacao);
}
}
/**
* Pesquisa Meio Solicitacao
*
* @author Hugo Leonardo
* @date 23/08/2010
*/
private void pesquisarMeioSolicitacao(HttpServletRequest httpServletRequest,
ExibirInformarSolicitacaoDocumentoObrigatorioActionForm form){
FiltroSolicitacaoDocumentoObrigatorio filtro = new FiltroSolicitacaoDocumentoObrigatorio();
Collection<Integer> colecaoIdsTipoEspecificacao = new ArrayList();
String[] array = form.getIdsTipoEspecificacao();
for (int i = 0; i < array.length; i++) {
if (new Integer(array[i]).intValue() != ConstantesSistema.NUMERO_NAO_INFORMADO) {
colecaoIdsTipoEspecificacao.add(new Integer(array[i]));
}
}
filtro.setConsultaSemLimites(true);
filtro.adicionarParametro(new ParametroSimplesIn(
FiltroSolicitacaoDocumentoObrigatorio.SOLICITACAO_TIPO_ESPECIFICACAO_ID, colecaoIdsTipoEspecificacao) );
filtro.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoDocumentoObrigatorio.MEIO_SOLICITACAO);
Collection colecaoSolicEspecDocObrigMeio =
Fachada.getInstancia().pesquisar(filtro, SolicitacaoDocumentoObrigatorio.class.getName());
if (colecaoSolicEspecDocObrigMeio == null || colecaoSolicEspecDocObrigMeio.isEmpty()) {
// 4.4.1
if(form.getIdsTipoEspecificacao() != null && !form.getIdsTipoEspecificacao().equals("-1")
&& form.getIcDocumentoSolicitanteObrigatorio() != null
&& form.getIcDocumentoSolicitanteObrigatorio().equals("1")){
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
filtroMeioSolicitacao.setConsultaSemLimites(true);
filtroMeioSolicitacao.adicionarParametro(new ParametroSimples(
FiltroMeioSolicitacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoMeioSolicitacao =
Fachada.getInstancia().pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName());
if (colecaoMeioSolicitacao != null && !colecaoMeioSolicitacao.isEmpty()) {
httpServletRequest.setAttribute("colecaoDocumentoObrigatorio", colecaoMeioSolicitacao);
}
// 4.4.2
}else if(form.getIdsTipoEspecificacao() != null && !form.getIdsTipoEspecificacao().equals("-1")
&& form.getIcDocumentoSolicitanteObrigatorio() != null
&& form.getIcDocumentoSolicitanteObrigatorio().equals("2")){
FiltroMeioSolicitacao filtroMeioSolicitacao = new FiltroMeioSolicitacao();
filtroMeioSolicitacao.setConsultaSemLimites(true);
filtroMeioSolicitacao.adicionarParametro(new ParametroSimples(
FiltroMeioSolicitacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoMeioSolicitacaoObrigatorio =
Fachada.getInstancia().pesquisar(filtroMeioSolicitacao, MeioSolicitacao.class.getName());
if (colecaoMeioSolicitacaoObrigatorio != null && !colecaoMeioSolicitacaoObrigatorio.isEmpty()) {
httpServletRequest.setAttribute("colecaoDocumentoNaoObrigatorio", colecaoMeioSolicitacaoObrigatorio);
}
}
//4.4.3 Caso existam informacoes ja cadastradas em SOL_ESPEC_DOC_OBRIG_MEIO para o STEP_ID selecionado.
}else{
if(form.getIcDocumentoSolicitanteObrigatorio().equals("1")){
Iterator iterator = colecaoSolicEspecDocObrigMeio.iterator();
SolicitacaoDocumentoObrigatorio solicitacaoEspecificacao;
Collection<Integer> colecaoMeioSolicitacao = new ArrayList();
while (iterator.hasNext()) {
solicitacaoEspecificacao = (SolicitacaoDocumentoObrigatorio) iterator.next();
colecaoMeioSolicitacao.add(solicitacaoEspecificacao.getComp_id().getMeioSolicitacao().getId());
}
solicitacaoEspecificacao = null;
// Documento Obrigat�rio
FiltroMeioSolicitacao filtroMeioSolicitacaoObrigatorio = new FiltroMeioSolicitacao();
filtroMeioSolicitacaoObrigatorio.setConsultaSemLimites( true);
filtroMeioSolicitacaoObrigatorio.adicionarParametro( new ParametroSimplesIn( FiltroMeioSolicitacao.ID,
colecaoMeioSolicitacao));
Collection colecaoObrigatorio = Fachada.getInstancia().pesquisar(
filtroMeioSolicitacaoObrigatorio, MeioSolicitacao.class.getName());
if (colecaoObrigatorio != null && !colecaoObrigatorio.isEmpty()) {
httpServletRequest.setAttribute("colecaoDocumentoObrigatorio", colecaoObrigatorio);
}
// Documento N�o Obrigat�rio
FiltroMeioSolicitacao filtroMeioSolicitacaoNaoObrigatorio = new FiltroMeioSolicitacao();
filtroMeioSolicitacaoNaoObrigatorio.setConsultaSemLimites( true);
filtroMeioSolicitacaoNaoObrigatorio.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroMeioSolicitacaoNaoObrigatorio.adicionarParametro( new ParametroSimplesNotIn( FiltroMeioSolicitacao.ID,
colecaoMeioSolicitacao));
Collection colecaoNaoObrigatorio = Fachada.getInstancia().pesquisar(
filtroMeioSolicitacaoNaoObrigatorio, MeioSolicitacao.class.getName());
if (colecaoNaoObrigatorio != null && !colecaoNaoObrigatorio.isEmpty()) {
httpServletRequest.setAttribute("colecaoDocumentoNaoObrigatorio", colecaoNaoObrigatorio);
}
}else if(form.getIcDocumentoSolicitanteObrigatorio().equals("2")){
// Documento N�o Obrigat�rio
FiltroMeioSolicitacao filtroMeioSolicitacaoNaoObrigatorio = new FiltroMeioSolicitacao();
filtroMeioSolicitacaoNaoObrigatorio.setConsultaSemLimites( true);
filtroMeioSolicitacaoNaoObrigatorio.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoTipoEspecificacao.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
Collection colecaoNaoObrigatorio = Fachada.getInstancia().pesquisar(
filtroMeioSolicitacaoNaoObrigatorio, MeioSolicitacao.class.getName());
if (colecaoNaoObrigatorio != null && !colecaoNaoObrigatorio.isEmpty()) {
httpServletRequest.setAttribute("colecaoDocumentoNaoObrigatorio", colecaoNaoObrigatorio);
}
}
}
}
}