package gcom.gui.seguranca.acesso.usuario; 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.Grupo; import gcom.seguranca.acesso.usuario.FiltroUsuario; import gcom.seguranca.acesso.usuario.FiltroUsuarioGrupo; import gcom.seguranca.acesso.usuario.FiltroUsuarioTipo; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAbrangencia; import gcom.seguranca.acesso.usuario.UsuarioGrupo; import gcom.seguranca.acesso.usuario.UsuarioTipo; import gcom.util.Util; 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 conclui o inserir Usuario * * @author S�vio Luiz * @date 09/05/2006 */ public class ConcluirInserirUsuarioAction extends GcomAction { /** * < <Descri��o do m�todo>> * * @param actionMapping * Descri��o do par�metro * @param actionForm * Descri��o do par�metro * @param httpServletRequest * Descri��o do par�metro * @param httpServletResponse * Descri��o do par�metro * @return Descri��o do retorno */ /* (non-Javadoc) * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm, javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse) */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); HttpSession sessao = httpServletRequest.getSession(false); InserirUsuarioDadosGeraisActionForm form = (InserirUsuarioDadosGeraisActionForm) actionForm; String idSolicitacaoAcesso = (String) sessao.getAttribute("idSolicitacaoAcesso"); // Usuario logado no sistema Usuario usuario = (Usuario) sessao.getAttribute("usuarioLogado"); // Usuario que vai ser cadastrado no sistema, usado s� nessa // funcionalidade Usuario usuarioCadastrar = (Usuario) sessao .getAttribute("usuarioCadastrar"); // valida os campos obrigat�rios do usuario tipo if (!"".equals(form.getUsuarioTipo())) { FiltroUsuarioTipo filtroUsuarioTipo = new FiltroUsuarioTipo(); filtroUsuarioTipo.adicionarParametro(new ParametroSimples( FiltroUsuarioTipo.ID, form.getUsuarioTipo())); Collection coll = Fachada.getInstancia().pesquisar( filtroUsuarioTipo, UsuarioTipo.class.getSimpleName()); if (coll != null && !coll.isEmpty()) { UsuarioTipo usuarioTipo = (UsuarioTipo) Util .retonarObjetoDeColecao(coll); // caso n�o seja usuario tipo adiministrador ent�o valida os // campos if (!usuarioTipo.getId().equals( UsuarioTipo.USUARIO_TIPO_ADMINISTRADOR)) { // valida os campos obrigatorios if (usuarioTipo.getIndicadorFuncionario() == UsuarioTipo.INDICADOR_FUNCIONARIO) { if (form.getEmpresa() == null || form.getEmpresa().equals("")) { throw new ActionServletException( "atencao.required", null, "Empresa"); } // matricula do funcion�rio � obrigat�rio if (form.getIdFuncionario() == null || form.getIdFuncionario().equals("")) { throw new ActionServletException( "atencao.required", null, "Matr�cula Funcion�rio"); } if (form.getIdFuncionario() != null && (form.getNomeFuncionario() == null || form .getNomeFuncionario().equals(""))) { FiltroFuncionario filtroFuncionario = new FiltroFuncionario(); filtroFuncionario .adicionarParametro(new ParametroSimples( FiltroFuncionario.ID, form .getIdFuncionario())); filtroFuncionario .adicionarCaminhoParaCarregamentoEntidade(FiltroFuncionario.UNIDADE_ORGANIZACIONAL); Collection colecaoFuncionario = Fachada .getInstancia().pesquisar( filtroFuncionario, Funcionario.class .getSimpleName()); if (colecaoFuncionario != null && !colecaoFuncionario.isEmpty()) { Funcionario f = (Funcionario) colecaoFuncionario .iterator().next(); //Verifica se o funcionario ja esta cadastrado como usu�rio //pela matr�cula FiltroUsuario filtroUsuario = new FiltroUsuario(); filtroUsuario.adicionarParametro(new ParametroSimples(FiltroUsuario.FUNCIONARIO_ID, f.getId())); Collection colecaoFuncUsuario = Fachada.getInstancia().pesquisar(filtroUsuario, Usuario.class.getName()); if(!colecaoFuncUsuario.isEmpty()){ throw new ActionServletException( "atencao.usuario.funcionario.ja.existe", null, f.getNome()); } usuarioCadastrar.setFuncionario(f); form.setIdFuncionario(f.getId().toString()); form.setNomeFuncionario(f.getNome()); usuarioCadastrar .setNomeUsuario(f.getNome()); } else { throw new ActionServletException( "atencao.required", null, "Matr�cula Funcion�rio"); } } // nome do funcionario � obrigatorio if (form.getNome() == null || form.getNome().equals("")) { throw new ActionServletException( "atencao.required", null, "Nome Usu�rio"); } //CPF do funcionario � obrigatorio para usu�rio diferentes de rotina batch e/ou internet if(form.getIndicadorUsuarioBatch() != 1 && form.getIndicadorUsuarioInternet() != 1){ if (form.getCpf() == null || form.getCpf().equals("")) { throw new ActionServletException( "atencao.required", null, "N�mero do CPF"); } } //Data de Nascimento do funcionario � obrigatoria para usu�rios diferentes de rotina batch e/ou internet if(form.getIndicadorUsuarioBatch() != 1 && form.getIndicadorUsuarioInternet() != 1){ if (form.getDataNascimento() == null || form.getDataNascimento().equals("")) { throw new ActionServletException( "atencao.required", null, "Data de Nascimento"); } } //Indicador indicadorUsuarioBatch � obrigatorio if (form.getIndicadorUsuarioBatch() == null || form.getIndicadorUsuarioBatch().equals("")) { throw new ActionServletException( "atencao.required", null, "Indicador para rotina batch"); } //Indicador indicadorUsuarioInternet � obrigatorio if (form.getIndicadorUsuarioInternet() == null || form.getIndicadorUsuarioInternet().equals("")) { throw new ActionServletException( "atencao.required", null, "Indicador para internet"); } } else { if (usuarioTipo.getIndicadorFuncionario() != UsuarioTipo.INDICADOR_FUNCIONARIO) { // data inicio e data fim � obrigatorio if (form.getEmpresa() == null || form.getEmpresa().equals("")) { throw new ActionServletException( "atencao.required", null, "Empresa"); } // data inicio e data fim � obrigatorio if (form.getNome() == null || form.getNome().equals("")) { throw new ActionServletException( "atencao.required", null, "Nome Usu�rio"); } //CPF do funcionario � obrigatorio para usu�rios diferentes de rotina batch e/ou internet if(form.getIndicadorUsuarioBatch() != 1 && form.getIndicadorUsuarioInternet() != 1){ if (form.getCpf() == null || form.getCpf().equals("")) { throw new ActionServletException( "atencao.required", null, "N�mero do CPF"); } } //Data de Nascimento do funcionario � obrigatoria para usu�rios diferentes de rotina batch e/ou internet if(form.getIndicadorUsuarioBatch() != 1 && form.getIndicadorUsuarioInternet() != 1){ if (form.getDataNascimento() == null || form.getDataNascimento().equals("")) { throw new ActionServletException( "atencao.required", null, "Data de Nascimento"); } } // data inicio e data fim � obrigatorio if (form.getIdLotacao() == null || form.getIdLotacao().equals("")) { throw new ActionServletException( "atencao.required", null, "Unidade Lota��o"); } // data inicio e data fim � obrigatorio if (form.getDataInicial() == null || form.getDataInicial().equals("") || form.getDataFinal() == null || form.getDataFinal().equals("")) { throw new ActionServletException( "atencao.required", null, "Per�odo de Cadastramento"); } //Indicador indicadorUsuarioBatch � obrigatorio if (form.getIndicadorUsuarioBatch() == null || form.getIndicadorUsuarioBatch().equals("")) { throw new ActionServletException( "atencao.required", null, "Indicador para rotina batch"); } //Indicador indicadorUsuarioInternet � obrigatorio if (form.getIndicadorUsuarioInternet() == null || form.getIndicadorUsuarioInternet().equals("")) { throw new ActionServletException( "atencao.required", null, "Indicador para internet"); } } } } usuarioCadastrar.setUsuarioTipo(usuarioTipo); } else { usuarioCadastrar.setUsuarioTipo(null); } } else { throw new ActionServletException("atencao.required", null, "Usu�rio Tipo"); } if (form.getAbrangencia() != null && !form.getAbrangencia().equals("")) { if (form.getAbrangencia().equals( UsuarioAbrangencia.GERENCIA_REGIONAL)) { if (form.getGerenciaRegional() == null || form.getGerenciaRegional().equals("")) { throw new ActionServletException("atencao.required", null, "Ger�ncia Regional"); } } if (form.getAbrangencia().equals( UsuarioAbrangencia.UNIDADE_NEGOCIO_INT)) { if (form.getUnidadeNegocio() == null || form.getUnidadeNegocio().equals("")) { throw new ActionServletException("atencao.required", null, "Unidade Neg�cio"); } } if (form.getAbrangencia().equals(UsuarioAbrangencia.ELO_POLO)) { if (form.getIdElo() == null || form.getIdElo().equals("")) { throw new ActionServletException("atencao.required", null, "Elo P�lo"); } } if (form.getAbrangencia().equals(UsuarioAbrangencia.LOCALIDADE)) { if (form.getIdLocalidade() == null || form.getIdLocalidade().equals("")) { throw new ActionServletException("atencao.required", null, "Localidade"); } } } else { throw new ActionServletException("atencao.required", null, "Abrang�ncia do Acesso"); } // valida a unidade de lota��o if (!"".equals(form.getIdLotacao())) { if (!(usuarioCadastrar.getUnidadeOrganizacional() != null && usuarioCadastrar.getUnidadeOrganizacional().getId() != null && usuarioCadastrar.getUnidadeOrganizacional().getId() .toString().equals(form.getIdLotacao()) && usuarioCadastrar .getUnidadeOrganizacional().getDescricao().equals( form.getNomeLotacao()))) { FiltroUnidadeOrganizacional filtroUnidadeEmpresa = new FiltroUnidadeOrganizacional(); filtroUnidadeEmpresa.adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, form.getIdLotacao())); filtroUnidadeEmpresa .adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); Collection coll = Fachada.getInstancia().pesquisar( filtroUnidadeEmpresa, UnidadeOrganizacional.class.getSimpleName()); if ((coll != null && !coll.isEmpty())) { UnidadeOrganizacional unidadeEmpresa = (UnidadeOrganizacional) coll .iterator().next(); // caso o usu�rio que esteja efetuando a inser��o n�o // seja // do grupo de administradores FiltroUsuarioGrupo filtroUsuarioGrupo = new FiltroUsuarioGrupo(); filtroUsuarioGrupo.adicionarParametro(new ParametroSimples( FiltroUsuarioGrupo.USUARIO_ID, usuario.getId())); filtroUsuarioGrupo.adicionarParametro(new ParametroSimples( FiltroUsuarioGrupo.GRUPO_ID, Grupo.ADMINISTRADOR)); Collection colecaoUsuarioGrupo = Fachada.getInstancia() .pesquisar(filtroUsuarioGrupo, UsuarioGrupo.class.getName()); if (colecaoUsuarioGrupo == null || colecaoUsuarioGrupo.isEmpty()) { // se a unidade de lotacao do usuario que estiver // efetuando seja diferente da unidade de // lota��o informada if (usuario.getUnidadeOrganizacional() != null && usuario.getUnidadeOrganizacional().getId() != null && !usuario .getUnidadeOrganizacional() .getId() .equals( new Integer(form.getIdLotacao()))) { // recupera a unidade do usu�rio FiltroUnidadeOrganizacional filtroUnidadeEmpresaUsuario = new FiltroUnidadeOrganizacional(); filtroUnidadeEmpresaUsuario .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, usuario.getUnidadeOrganizacional() .getId())); filtroUnidadeEmpresaUsuario .adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); Collection colecaoUnidadeEmpresa = Fachada .getInstancia().pesquisar( filtroUnidadeEmpresaUsuario, UnidadeOrganizacional.class .getName()); UnidadeOrganizacional unidadeEmpresaUsuario = null; if (colecaoUnidadeEmpresa != null && !colecaoUnidadeEmpresa.isEmpty()) { unidadeEmpresaUsuario = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeEmpresa); } // se o nivel da unidade de lota��o do usu�rio // que // estiver efetuando a inser��o seja maior ou // igual // ao nivel de unidade de lota��o informada if (unidadeEmpresaUsuario != null) { if (unidadeEmpresaUsuario.getUnidadeTipo() .getNivel() != null && unidadeEmpresa.getUnidadeTipo() .getNivel() != null) { if (unidadeEmpresaUsuario.getUnidadeTipo() .getNivel().intValue() >= unidadeEmpresa .getUnidadeTipo().getNivel() .intValue()) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } } else { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } // ou a unidade superior da unidade de // lota��o // informada seja diferente da unidade de // lota��o do usu�rio // enquanto o nivel superior da unidade de // lota��o n�o esteja no mesmo nivel da // unidade // de lota��o do usu�rio boolean mesmoNivel = true; int idNivelUsuario = unidadeEmpresaUsuario .getUnidadeTipo().getNivel().intValue(); UnidadeOrganizacional unidadeEmpresaSuperior = null; while (mesmoNivel) { Integer idUnidadeEmpresaSuperior = null; if (unidadeEmpresaSuperior == null) { if (unidadeEmpresa.getUnidadeSuperior() != null && !unidadeEmpresa .getUnidadeSuperior() .equals("")) { idUnidadeEmpresaSuperior = unidadeEmpresa .getUnidadeSuperior() .getId(); } } else { if (unidadeEmpresaSuperior .getUnidadeSuperior() != null && !unidadeEmpresaSuperior .getUnidadeSuperior() .equals("")) { idUnidadeEmpresaSuperior = unidadeEmpresaSuperior .getUnidadeSuperior() .getId(); } } if (idUnidadeEmpresaSuperior == null) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } // recupera a unidade do usu�rio FiltroUnidadeOrganizacional filtroUnidadeEmpresaSuperior = new FiltroUnidadeOrganizacional(); filtroUnidadeEmpresaSuperior .adicionarParametro(new ParametroSimples( FiltroUnidadeOrganizacional.ID, idUnidadeEmpresaSuperior)); filtroUnidadeEmpresaSuperior .adicionarCaminhoParaCarregamentoEntidade("unidadeTipo"); Collection colecaoUnidadeEmpresaSuperior = Fachada .getInstancia() .pesquisar( filtroUnidadeEmpresaSuperior, UnidadeOrganizacional.class .getName()); if (colecaoUnidadeEmpresaSuperior != null && !colecaoUnidadeEmpresaSuperior .isEmpty()) { unidadeEmpresaSuperior = (UnidadeOrganizacional) Util .retonarObjetoDeColecao(colecaoUnidadeEmpresaSuperior); } if (unidadeEmpresaSuperior != null) { if (unidadeEmpresaSuperior .getUnidadeTipo().getNivel() == null || unidadeEmpresaSuperior .getUnidadeTipo() .getNivel().equals("")) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } // caso seja o mesmo nivel if (unidadeEmpresaSuperior .getUnidadeTipo().getNivel() .intValue() == idNivelUsuario) { mesmoNivel = false; // caso o id da unidade empresa // informado for diferente do id // da // unidade empresa do usu�rio no // mesmo nivel if (!unidadeEmpresaSuperior.getId() .equals( unidadeEmpresaUsuario .getId())) { throw new ActionServletException( "atencao.usuario.sem.permissao", usuario.getLogin(), unidadeEmpresa.getDescricao()); } } } } } } } usuarioCadastrar.setUnidadeOrganizacional(unidadeEmpresa); } else { usuarioCadastrar.setUnidadeOrganizacional(null); } } } Integer[] idGrupos = null; //N�o adiciona os grupos em caso de sele��o do indicador batch e/ou internet if(usuarioCadastrar.getIndicadorUsuarioBatch() == 2 && usuarioCadastrar.getIndicadorUsuarioInternet() == 2 ){ String[] grupo = form.getGrupo(); if (grupo != null) { idGrupos = new Integer[grupo.length]; for (int i = 0; i < idGrupos.length; i++) { idGrupos[i] = new Integer(grupo[i]); } } } usuarioCadastrar.setCpf(form.getCpf()); UsuarioAbrangencia usuarioAbragencia = new UsuarioAbrangencia(); usuarioAbragencia.setId(new Integer(form.getAbrangencia())); usuarioCadastrar.setUsuarioAbrangencia(usuarioAbragencia); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); Fachada.getInstancia().inserirUsuario(usuarioCadastrar, idGrupos, usuarioLogado, idSolicitacaoAcesso); if(usuario.getId() != null && usuario.getId().equals(usuarioCadastrar.getId())){ sessao.setAttribute("usuarioLogado",usuarioCadastrar); } montarPaginaSucesso(httpServletRequest, "Usu�rio de Login " + usuarioCadastrar.getLogin() + " inserido com sucesso!", "Inserir outro Usu�rio", "exibirInserirUsuarioAction.do?menu=sim"); // limpa a sess�o sessao.removeAttribute("usuarioCadastrar"); sessao.removeAttribute("grupo"); sessao.removeAttribute("collEmpresa"); sessao.removeAttribute("collUsuarioTipo"); sessao.removeAttribute("collUsuarioAbrangencia"); sessao.removeAttribute("collGrupo"); sessao.removeAttribute("collGerenciaRegional"); sessao.removeAttribute("collUnidadeNegocio"); return retorno; } }