package gcom.gui.micromedicao.leitura;
import gcom.cadastro.cliente.Cliente;
import gcom.cadastro.cliente.FiltroCliente;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.cadastro.sistemaparametro.SistemaParametro;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.gui.micromedicao.leitura.FiltrarLeituristaActionForm;
import gcom.seguranca.acesso.usuario.FiltroUsuario;
import gcom.seguranca.acesso.usuario.Usuario;
import gcom.util.ConstantesSistema;
import gcom.util.filtro.ComparacaoTexto;
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;
/**
* Action que define o pr�-processamento da p�gina de pesquisa de leiturista
*
* Alterado em 11/06/2008
*
* @author Thiago Ten�rio e Thiago Nascimento
* @created 22 de Julho de 2007
*
*/
public class ExibirFiltrarLeituristaAction extends GcomAction {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping.findForward("filtrarLeiturista");
// Obt�m a sess�o
HttpSession sessao = httpServletRequest.getSession(false);
Fachada fachada = Fachada.getInstancia();
FiltrarLeituristaActionForm filtrarLeituristaActionForm = (FiltrarLeituristaActionForm) actionForm;
filtrarLeituristaActionForm.setAtualizar("1");
// Bloquear o campo Empresa quando a empresa do usuario nao seja a empresa do sistema
SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema();
Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado");
if (usuario.getEmpresa() == null) {
throw new ActionServletException("atencao.pesquisa_inexistente", null, "Empresa do usu�rio logado.");
}
if (!usuario.getEmpresa().getDescricao().equals(sistemaParametro.getNomeAbreviadoEmpresa())) {
sessao.setAttribute("bloquearEmpresa", true);
filtrarLeituristaActionForm.setEmpresaID(usuario.getEmpresa().getId().toString());
}
if (httpServletRequest.getParameter("menu") != null) {
filtrarLeituristaActionForm.setIdFuncionario("");
filtrarLeituristaActionForm.setDescricaoFuncionario("");
filtrarLeituristaActionForm.setIdCliente("");
filtrarLeituristaActionForm.setDescricaoCliente("");
filtrarLeituristaActionForm.setDdd("");
filtrarLeituristaActionForm.setTelefone("");
filtrarLeituristaActionForm.setIndicadorUso("");
filtrarLeituristaActionForm.setIndicadorAtualizar("1");
filtrarLeituristaActionForm.setLoginUsuario("");
filtrarLeituristaActionForm.setNomeUsuario("");
}
//Empresa
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
Collection colecaoEmpresa = fachada.pesquisar(filtroEmpresa,Empresa.class.getName());
if(colecaoEmpresa != null && !colecaoEmpresa.isEmpty()){
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
}
// Verificar Exist�ncia do Leiturista Respons�vel(Funcionario)
if ((filtrarLeituristaActionForm.getIdFuncionario() != null && !filtrarLeituristaActionForm
.getIdFuncionario().equals(""))) {
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroFuncionario.ID, filtrarLeituristaActionForm
.getIdFuncionario()));
Collection colecaoFuncionario = fachada.pesquisar(
filtroFuncionario, Funcionario.class.getName());
if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) {
Funcionario funcionario = (Funcionario) colecaoFuncionario
.iterator().next();
filtrarLeituristaActionForm.setDescricaoFuncionario(funcionario
.getNome());
} else {
httpServletRequest.setAttribute("funcionarioEncontrado",
"exception");
filtrarLeituristaActionForm.setIdFuncionario("");
filtrarLeituristaActionForm
.setDescricaoFuncionario("FUNCIONARIO INEXISTENTE");
}
}
if (httpServletRequest.getParameter("menu") != null
&& !httpServletRequest.getParameter("menu").equals("")) {
httpServletRequest.setAttribute("nomeCampo", "idFuncionario");
}
// Verificar Exist�ncia do Leiturista Respons�vel(Cliente)
if ((filtrarLeituristaActionForm.getIdCliente() != null && !filtrarLeituristaActionForm
.getIdCliente().equals(""))) {
FiltroCliente filtroCliente = new FiltroCliente();
filtroCliente.adicionarParametro(new ParametroSimples(
FiltroCliente.ID, filtrarLeituristaActionForm
.getIdCliente()));
Collection colecaoCliente = fachada.pesquisar(filtroCliente,
Cliente.class.getName());
if (colecaoCliente != null && !colecaoCliente.isEmpty()) {
Cliente cliente = (Cliente) colecaoCliente.iterator().next();
filtrarLeituristaActionForm.setDescricaoCliente(cliente
.getNome());
} else {
httpServletRequest.setAttribute("clienteEncontrado",
"exception");
filtrarLeituristaActionForm.setIdCliente("");
filtrarLeituristaActionForm
.setDescricaoCliente("CLIENTE INEXISTENTE");
}
}
filtrarLeituristaActionForm.setIndicadorAtualizar("1");
if (filtrarLeituristaActionForm.getTipoPesquisa() == null
|| filtrarLeituristaActionForm.getTipoPesquisa()
.equalsIgnoreCase("")) {
filtrarLeituristaActionForm
.setTipoPesquisa(ConstantesSistema.TIPO_PESQUISA_INICIAL
.toString());
}
//Usu�rio
if (filtrarLeituristaActionForm.getLoginUsuario() != null &&
!filtrarLeituristaActionForm.getLoginUsuario().equals("")) {
getUsuario(filtrarLeituristaActionForm, fachada,
filtrarLeituristaActionForm.getLoginUsuario(), sessao);
}
// c�digo para checar ou naum o Atualizar
String primeiraVez = httpServletRequest.getParameter("menu");
if (primeiraVez != null && !primeiraVez.equals("")) {
sessao.setAttribute("indicadorAtualizar", "1");
filtrarLeituristaActionForm.setIndicadorUso("3");
filtrarLeituristaActionForm
.setTipoPesquisa(ConstantesSistema.TIPO_PESQUISA_INICIAL
.toString());
}
// se voltou da tela de Atualizar Leiturista
if (sessao.getAttribute("voltar") != null
&& sessao.getAttribute("voltar").equals("filtrar")) {
sessao.setAttribute("indicadorAtualizar", "1");
if (sessao.getAttribute("tipoPesquisa") != null) {
filtrarLeituristaActionForm.setTipoPesquisa(sessao
.getAttribute("tipoPesquisa").toString());
}
}
sessao.removeAttribute("voltar");
sessao.removeAttribute("idRegistroAtualizacao");
sessao.removeAttribute("tipoPesquisa");
return retorno;
}
/**
* Recupera o Usu�rio
*
* @author Bruno Barros
* @date 11/12/2006
*
* @param filtrarRegistroAtendimentoActionForm
* @param fachada
* @param idUsuario
* @return Descri��o da Unidade Filtrada
*/
private void getUsuario(FiltrarLeituristaActionForm filtrarRegistroAtendimentoActionForm,
Fachada fachada, String idUsuario, HttpSession sessao) {
// Filtra Usuario
FiltroUsuario filtroUsuario = new FiltroUsuario();
filtroUsuario.adicionarParametro(new ComparacaoTexto(FiltroUsuario.LOGIN, idUsuario));
// Recupera Usu�rio
Collection<Usuario> colecaoUsuario = fachada.pesquisar(filtroUsuario, Usuario.class.getName());
if (colecaoUsuario != null && !colecaoUsuario.isEmpty()) {
Usuario usuario = colecaoUsuario.iterator().next();
sessao.setAttribute("usuarioEncontrado","true");
filtrarRegistroAtendimentoActionForm.setNomeUsuario(usuario.getNomeUsuario());
filtrarRegistroAtendimentoActionForm.setLoginUsuario(usuario.getLogin());
} else {
sessao.removeAttribute("usuarioEncontrado");
filtrarRegistroAtendimentoActionForm.setLoginUsuario("");
filtrarRegistroAtendimentoActionForm.setNomeUsuario("Usu�rio Inexistente");
}
}
}