package gcom.gui.seguranca.acesso.usuario;
import gcom.cadastro.empresa.Empresa;
import gcom.cadastro.empresa.FiltroEmpresa;
import gcom.cadastro.funcionario.FiltroFuncionario;
import gcom.cadastro.funcionario.Funcionario;
import gcom.cadastro.unidade.FiltroUnidadeOrganizacional;
import gcom.cadastro.unidade.UnidadeOrganizacional;
import gcom.fachada.Fachada;
import gcom.gui.ActionServletException;
import gcom.gui.GcomAction;
import gcom.seguranca.acesso.FiltroGrupo;
import gcom.seguranca.acesso.Grupo;
import gcom.seguranca.acesso.usuario.FiltroSolicitacaoAcesso;
import gcom.seguranca.acesso.usuario.FiltroSolicitacaoAcessoGrupo;
import gcom.seguranca.acesso.usuario.FiltroUsuarioTipo;
import gcom.seguranca.acesso.usuario.SolicitacaoAcesso;
import gcom.seguranca.acesso.usuario.SolicitacaoAcessoGrupo;
import gcom.seguranca.acesso.usuario.UsuarioTipo;
import gcom.util.ConstantesSistema;
import gcom.util.Util;
import gcom.util.filtro.ParametroSimples;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
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;
/**
* Descri��o da classe
*
* @author Hugo Leonardo
* @date 16/11/2010
*/
public class ExibirAtualizarSolicitacaoAcessoAction extends GcomAction {
/**
* [UC1093] Manter Solicita��o de Acesso.
*
* Este caso de uso permite cadastrar um novo Usu�rio.
*/
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
// Seta o mapeamento de retorno
ActionForward retorno = actionMapping
.findForward("atualizarSolicitacaoAcesso");
HttpSession sessao = httpServletRequest.getSession(false);
AtualizarSolicitacaoAcessoActionForm form = (AtualizarSolicitacaoAcessoActionForm) actionForm;
SolicitacaoAcesso solicitacaoAcesso = null;
Fachada fachada = Fachada.getInstancia();
String idSolicitacaoAcesso = "";
if ( sessao.getAttribute("solicitacaoAcesso") != null ) {
solicitacaoAcesso = (SolicitacaoAcesso) sessao.getAttribute("solicitacaoAcesso");
} else if(sessao.getAttribute("objetoSolicitacaoAcesso") != null){
solicitacaoAcesso = (SolicitacaoAcesso) sessao.getAttribute("objetoSolicitacaoAcesso");
}else {
idSolicitacaoAcesso = (String) httpServletRequest.getParameter("idRegistroAtualizar");
if( idSolicitacaoAcesso != null ) {
FiltroSolicitacaoAcesso filtroSolicitacaoAcesso = new FiltroSolicitacaoAcesso();
filtroSolicitacaoAcesso.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcesso.SOLICITACAO_ACESSO_SITUACAO);
filtroSolicitacaoAcesso.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcesso.FUNCIONARIO_RESPONSAVEL);
filtroSolicitacaoAcesso.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcesso.FUNCIONARIO_SOLICITANTE);
filtroSolicitacaoAcesso.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcesso.UNIDADE_ORGANIZACIONAL);
filtroSolicitacaoAcesso.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcesso.EMPRESA);
filtroSolicitacaoAcesso.adicionarParametro(
new ParametroSimples(FiltroSolicitacaoAcesso.ID, new Integer(idSolicitacaoAcesso)));
solicitacaoAcesso = (SolicitacaoAcesso) fachada.pesquisar(filtroSolicitacaoAcesso,
SolicitacaoAcesso.class.getName()).iterator().next();
}
}
if(httpServletRequest.getParameter("filtrar") != null
&& httpServletRequest.getParameter("filtrar").equals("sim")){
//Pesquisar Tipo Usuario
this.pesquisarTipoUsuario(sessao, form);
//Pesquisar Empresa
this.pesquisarEmpresa(sessao, form);
// Pesquisar Grupo
this.pesquisarGrupo(sessao, form);
// pesquisar Funcion�rio
if(solicitacaoAcesso.getFuncionario() != null){
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroFuncionario.ID, solicitacaoAcesso.getFuncionario().getId()));
Collection<Funcionario> funcionarioPesquisado = fachada.pesquisar(
filtroFuncionario, Funcionario.class.getName());
if (funcionarioPesquisado != null && !funcionarioPesquisado.isEmpty()) {
Funcionario funcionario = (Funcionario) Util.retonarObjetoDeColecao(funcionarioPesquisado);
form.setIdFuncionario(funcionario.getId().toString());
form.setNomeFuncionario(funcionario.getNome());
}
}
// Funcion�rio Solicitante
if(solicitacaoAcesso.getFuncionarioSolicitante() != null){
form.setIdFuncionarioSolicitante(solicitacaoAcesso.getFuncionarioSolicitante().getId().toString());
form.setNomeFuncionarioSolicitante(solicitacaoAcesso.getFuncionarioSolicitante().getNome());
}
// Funcion�rio Respons�vel
if(solicitacaoAcesso.getFuncionarioResponsavel() != null){
form.setIdFuncionarioSuperior(solicitacaoAcesso.getFuncionarioResponsavel().getId().toString());
form.setNomeFuncionarioSuperior(solicitacaoAcesso.getFuncionarioResponsavel().getNome());
}
// Unidade de Lota��o
if(solicitacaoAcesso.getUnidadeOrganizacional() != null){
form.setIdLotacao(solicitacaoAcesso.getUnidadeOrganizacional().getId().toString());
form.setNomeLotacao(solicitacaoAcesso.getUnidadeOrganizacional().getDescricao());
}
// Empresa
form.setIdEmpresa(solicitacaoAcesso.getEmpresa().getId().toString());
// Tipo de Usu�rio
form.setIdTipoUsuario(solicitacaoAcesso.getUsuarioTipo().getId().toString());
// Nome Usu�rio
form.setNomeUsuario(solicitacaoAcesso.getNomeUsuario());
// Login
form.setLogin(solicitacaoAcesso.getLogin());
// Email
form.setEmail(solicitacaoAcesso.getEmail());
// Data Nascimento
if(solicitacaoAcesso.getDataNascimento() != null){
form.setDataNascimento( Util.formatarData(solicitacaoAcesso.getDataNascimento()));
}
// CPF
if(Util.verificarNaoVazio(solicitacaoAcesso.getCpf())){
form.setCpf(solicitacaoAcesso.getCpf());
}
// Per�odo de Cadastramento
if(solicitacaoAcesso.getPeriodoInicial() != null
&& solicitacaoAcesso.getPeriodoFinal() != null){
form.setDataInicial( Util.formatarData(solicitacaoAcesso.getPeriodoInicial()));
form.setDataFinal( Util.formatarData(solicitacaoAcesso.getPeriodoFinal()));
}
// Notificar Respons�vel
if(solicitacaoAcesso.getIndicadorNotificarResponsavel() != null){
if(solicitacaoAcesso.getIndicadorNotificarResponsavel().compareTo(ConstantesSistema.SIM) == 0){
form.setIcNotificar("0");
}else{
form.setIcNotificar("1");
}
}
// Grupos
FiltroSolicitacaoAcessoGrupo filtroSolicitacaoAcessoGrupo = new FiltroSolicitacaoAcessoGrupo();
filtroSolicitacaoAcessoGrupo.setConsultaSemLimites(true);
filtroSolicitacaoAcessoGrupo.adicionarCaminhoParaCarregamentoEntidade(
FiltroSolicitacaoAcessoGrupo.GRUPO);
filtroSolicitacaoAcessoGrupo.adicionarParametro(new ParametroSimples(
FiltroSolicitacaoAcessoGrupo.SOLICITACAO_ACESSO_ID, solicitacaoAcesso.getId()) );
Collection colecaoSolicitacaoAcessoGrupo =
Fachada.getInstancia().pesquisar(
filtroSolicitacaoAcessoGrupo, SolicitacaoAcessoGrupo.class.getName());
Collection<Integer> colecaoIdsGrupos = new ArrayList();
if (colecaoSolicitacaoAcessoGrupo != null && !colecaoSolicitacaoAcessoGrupo.isEmpty()) {
Iterator iterator = colecaoSolicitacaoAcessoGrupo.iterator();
SolicitacaoAcessoGrupo solicitacaoAcessoGrupo = null;
while (iterator.hasNext()) {
solicitacaoAcessoGrupo = (SolicitacaoAcessoGrupo) iterator.next();
colecaoIdsGrupos.add(solicitacaoAcessoGrupo.getComp_id().getGrupo().getId());
}
}
if(!colecaoIdsGrupos.isEmpty()){
Object[] array = colecaoIdsGrupos.toArray();
String[] array2 = new String[array.length];
for (int i = 0; i < array.length; i++){
array2[i] = array[i].toString();
}
form.setIdsGrupo(array2);
}
}
httpServletRequest.setAttribute("dataAtual", Util.formatarData(new Date()));
// IDADE M�NIMA
httpServletRequest.setAttribute("idadeMinimaUsuario", "18");
// Flag indicando que o usu�rio fez uma consulta a partir da tecla Enter
String objetoConsulta = httpServletRequest.getParameter("objetoConsulta");
if (objetoConsulta != null && !objetoConsulta.trim().equals("") &&
(objetoConsulta.trim().equals("1")|| objetoConsulta.trim().equals("2"))) {
// Pega os codigos que o usuario digitou para a pesquisa direta do funcion�rio
if (form.getIdFuncionario() != null && !form.getIdFuncionario().trim().equals("")
|| (form.getIdFuncionarioSuperior() != null && !form.getIdFuncionarioSuperior().trim().equals(""))) {
this.pesquisarFuncionario( httpServletRequest, form, objetoConsulta);
}
}
// Pega os codigos que o usuario digitou para a pesquisa direta da lota��o
if(form.getIdLotacao() != null && !form.getIdLotacao().trim().equals("")){
this.pesquisarLotacao(httpServletRequest, form);
}
Date timeStamp = solicitacaoAcesso.getUltimaAlteracao();
sessao.setAttribute("idSolicitacaoAcesso", idSolicitacaoAcesso);
sessao.setAttribute("solicitacaoAcesso", solicitacaoAcesso);
sessao.setAttribute("timeStamp", timeStamp);
httpServletRequest.setAttribute("idSolicitacaoAcesso", idSolicitacaoAcesso);
return retorno;
}
/**
* Pesquisar Empresa
*
* @author Hugo Leonardo
* @date 16/11/2010
*/
private void pesquisarEmpresa(HttpSession sessao, AtualizarSolicitacaoAcessoActionForm form) {
FiltroEmpresa filtroEmpresa = new FiltroEmpresa();
filtroEmpresa.setConsultaSemLimites(true);
filtroEmpresa.adicionarParametro(new ParametroSimples(
FiltroUsuarioTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroEmpresa.setCampoOrderBy(FiltroEmpresa.DESCRICAO);
Collection colecaoEmpresa = this.getFachada().pesquisar(filtroEmpresa, Empresa.class.getName());
if(colecaoEmpresa == null || colecaoEmpresa.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Empresa");
}else{
sessao.setAttribute("colecaoEmpresa", colecaoEmpresa);
}
}
/**
* Pesquisar Usuario Tipo
*
* @author Hugo Leonardo
* @date 16/11/2010
*/
private void pesquisarTipoUsuario(HttpSession sessao, AtualizarSolicitacaoAcessoActionForm form) {
FiltroUsuarioTipo filtroUsuarioTipo = new FiltroUsuarioTipo();
filtroUsuarioTipo.setConsultaSemLimites(true);
filtroUsuarioTipo.adicionarParametro(new ParametroSimples(
FiltroUsuarioTipo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroUsuarioTipo.setCampoOrderBy(FiltroUsuarioTipo.DESCRICAO);
Collection colecaoUsuarioTipo = this.getFachada().pesquisar(filtroUsuarioTipo, UsuarioTipo.class.getName());
if(colecaoUsuarioTipo == null || colecaoUsuarioTipo.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Usu�rio Tipo");
}else{
sessao.setAttribute("colecaoUsuarioTipo", colecaoUsuarioTipo);
}
}
/**
* Pesquisar Grupo
*
* @author Hugo Leonardo
* @date 17/11/2010
*/
private void pesquisarGrupo(HttpSession sessao, AtualizarSolicitacaoAcessoActionForm form) {
FiltroGrupo filtroGrupo = new FiltroGrupo();
filtroGrupo.setConsultaSemLimites(true);
filtroGrupo.adicionarParametro(new ParametroSimples(
FiltroGrupo.INDICADOR_USO, ConstantesSistema.INDICADOR_USO_ATIVO));
filtroGrupo.setCampoOrderBy(FiltroGrupo.DESCRICAO);
Collection colecaoGrupo = this.getFachada().pesquisar(filtroGrupo, Grupo.class.getName());
if(colecaoGrupo == null || colecaoGrupo.isEmpty()){
throw new ActionServletException("atencao.naocadastrado", null, "Grupos");
}else{
sessao.setAttribute("colecaoGrupo", colecaoGrupo);
}
}
/**
* Pesquisar Funcion�rio
*
* @author Hugo Leonardo
* @date 09/11/2010
*/
private void pesquisarFuncionario(HttpServletRequest httpServletRequest,
AtualizarSolicitacaoAcessoActionForm form, String objetoConsulta) {
Fachada fachada = Fachada.getInstancia();
Object local = null;
if(objetoConsulta.trim().equals("1")){
local = form.getIdFuncionarioSuperior();
}else if(objetoConsulta.trim().equals("2")){
local = form.getIdFuncionario();
}
FiltroFuncionario filtroFuncionario = new FiltroFuncionario();
filtroFuncionario.adicionarParametro(new ParametroSimples(
FiltroFuncionario.ID, local));
Collection<Funcionario> funcionarioPesquisado = fachada.pesquisar(
filtroFuncionario, Funcionario.class.getName());
if (funcionarioPesquisado != null && !funcionarioPesquisado.isEmpty()) {
Funcionario funcionario = (Funcionario) Util.retonarObjetoDeColecao(funcionarioPesquisado);
if(objetoConsulta.trim().equals("1")){
form.setIdFuncionarioSuperior(""+funcionario.getId());
form.setNomeFuncionarioSuperior(funcionario.getNome());
}else if(objetoConsulta.trim().equals("2")){
form.setIdFuncionario("" + funcionario.getId());
form.setNomeFuncionario( funcionario.getNome());
}
} else {
if(objetoConsulta.trim().equals("1")){
form.setIdFuncionarioSuperior(null);
form.setNomeFuncionarioSuperior("FUNCION�RIO INEXISTENTE");
httpServletRequest.setAttribute("funcionarioInexistente1","true");
}
if(objetoConsulta.trim().equals("2")){
form.setIdFuncionario(null);
form.setNomeFuncionario("FUNCION�RIO INEXISTENTE");
httpServletRequest.setAttribute("funcionarioInexistente","true");
}
}
}
/**
* Pesquisar Lota��o
*
* @author Hugo Leonardo
* @date 10/11/2010
*/
private void pesquisarLotacao(HttpServletRequest httpServletRequest,
AtualizarSolicitacaoAcessoActionForm form) {
Fachada fachada = Fachada.getInstancia();
FiltroUnidadeOrganizacional filtroUnidadeOrganizacional = new FiltroUnidadeOrganizacional();
filtroUnidadeOrganizacional.adicionarParametro(new ParametroSimples(
FiltroUnidadeOrganizacional.ID, form.getIdLotacao()));
Collection<UnidadeOrganizacional> lotacaoPesquisada = fachada.pesquisar(
filtroUnidadeOrganizacional, UnidadeOrganizacional.class.getName());
if (lotacaoPesquisada != null && !lotacaoPesquisada.isEmpty()) {
UnidadeOrganizacional unidadeOrganizacional = (UnidadeOrganizacional) Util.retonarObjetoDeColecao(lotacaoPesquisada);
form.setIdLotacao("" + unidadeOrganizacional.getId());
form.setNomeLotacao( unidadeOrganizacional.getDescricao());
} else {
form.setIdFuncionario("");
form.setNomeFuncionario("LOTA��O INEXISTENTE");
httpServletRequest.setAttribute("lotacaoInexistente",true);
httpServletRequest.setAttribute("nomeCampo", "idLotacao");
}
}
}