package gcom.gui.atendimentopublico.ordemservico;
import gcom.atendimentopublico.ordemservico.Equipe;
import gcom.atendimentopublico.ordemservico.FiltroEquipe;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.util.filtro.ComparacaoTexto;
import gcom.util.filtro.ParametroSimples;
import java.util.Collection;
import java.util.Map;
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;
/**
* [UC0377] Pesquisar Equipe
*
* @author Leonardo Regis
* @date 31/07/2006
*
*/
public class PesquisarEquipeAction extends GcomAction {
/**
* [UC0377] Pesquisar Equipe
*
* @author Leonardo Regis
* @date 31/07/2006
*
* @param actionMapping
* @param actionForm
* @param httpServletRequest
* @param httpServletResponse
* @return ActionForward
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("exibirResultadoPesquisaEquipe");
HttpSession sessao = httpServletRequest.getSession(false);
PesquisarEquipeActionForm pesquisarEquipeActionForm = (PesquisarEquipeActionForm) actionForm;
FiltroEquipe filtroEquipe = new FiltroEquipe();
Fachada fachada = Fachada.getInstancia();
boolean peloMenosUmParametroInformado = false;
// Verifica se o campo id foi informado
if (pesquisarEquipeActionForm.getEquipeId() != null
&& !pesquisarEquipeActionForm.getEquipeId().trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.ID, pesquisarEquipeActionForm.getEquipeId()));
}
// Verifica se o campo nome foi informado
if (pesquisarEquipeActionForm.getNomeEquipe() != null
&& !pesquisarEquipeActionForm.getNomeEquipe().trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ComparacaoTexto(FiltroEquipe.NOME, pesquisarEquipeActionForm.getNomeEquipe()));
}
// Verifica se o campo placaVeiculo foi informado
if (pesquisarEquipeActionForm.getPlacaVeiculo() != null
&& !pesquisarEquipeActionForm.getPlacaVeiculo().trim().equalsIgnoreCase("")) {
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ComparacaoTexto(FiltroEquipe.PLACA_VEICULO, pesquisarEquipeActionForm.getPlacaVeiculo()));
}
// Verifica se o campo cargaTrabalho foi informado
if (pesquisarEquipeActionForm.getCargaTrabalhoDia() != null
&& !pesquisarEquipeActionForm.getCargaTrabalhoDia().trim().equals("")) {
int cargaTrabalhoMinutos = new Integer(pesquisarEquipeActionForm.getCargaTrabalhoDia()).intValue()*60;
Equipe equipe = new Equipe();
equipe.setCargaTrabalho(cargaTrabalhoMinutos);
fachada.validarInsercaoEquipe(equipe);
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.CARGA_TRABALHO, cargaTrabalhoMinutos));
}
// Verifica se o campo unidadeOrganizacional foi informado
if (pesquisarEquipeActionForm.getUnidadeOrganizacionalId() != null
&& !pesquisarEquipeActionForm.getUnidadeOrganizacionalId().trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.ID_UNIDADE_ORGANIZACIONAL, pesquisarEquipeActionForm.getUnidadeOrganizacionalId()));
}
// Verifica se o campo perfilServico foi informado
if (pesquisarEquipeActionForm.getTipoPerfilServicoId() != null
&& !pesquisarEquipeActionForm.getTipoPerfilServicoId().trim().equals("")) {
peloMenosUmParametroInformado = true;
filtroEquipe.adicionarParametro(new ParametroSimples(FiltroEquipe.ID_SERVICO_PERFIL_TIPO, pesquisarEquipeActionForm.getTipoPerfilServicoId()));
}
// Erro caso o usu�rio mandou Pesquisar sem nenhum par�metro
if (!peloMenosUmParametroInformado) {
throw new ActionServletException("atencao.filtro.nenhum_parametro_informado");
}
Collection colecaoEquipe = (Collection) fachada.pesquisar(filtroEquipe, Equipe.class.getName());
if (colecaoEquipe == null || colecaoEquipe.isEmpty()) {
throw new ActionServletException("atencao.naocadastrado", null, "Equipe");
} else {
// Aciona o controle de pagina��o para que sejam pesquisados apenas
// os registros que aparecem na p�gina
Map resultado = controlarPaginacao(httpServletRequest, retorno,
filtroEquipe, Equipe.class.getName());
colecaoEquipe = (Collection) resultado.get("colecaoRetorno");
retorno = (ActionForward) resultado.get("destinoActionForward");
sessao.setAttribute("colecaoEquipe", colecaoEquipe);
}
return retorno;
}
}