public class UsuarioBean {
private static final boolean DISPARO_EMAIL_ATIVADO = true;
// CONTANTES
private static final String NOME_ENTIDADE = "Usuário";
// ATRIBUTOS
private Usuario usuario = new Usuario();
private Usuario filtro;
private List<Usuario> listaUsuarios = new ArrayList<Usuario>();
private TipoOperacao operacao;
private List<SelectItem> perfilSelecItem;
private HtmlDataTable dataTable = new HtmlDataTable();
private DataModel dataModel = null;
private List<SelectItem> atributosEntidadesSelectItem;
private String atributoDeFiltragem;
private String valorDeFiltragem;
private int firstRow = -1;
private int tamanhoLista;
public String atualizarDadosPessoais() {
String retorno = null;
try {
retorno = "alteracaoDadosPessoais";
Usuario u = getUsuarioLogadoBean().getUsuarioLogado();
usuario = (u != null && u.getIdUsuario() != null ? UsuarioDAO.getInstance().findById(u.getIdUsuario()) : u);
operacao = TipoOperacao.ALTERAR_DADOS_PESSOAIS;
//retorno = usuario.isEhFuncionario() ? "cadastroUsuarioFuncionario" : "cadastroUsuarioTerceirizado";
//retorno = usuario.isEhAdministradorSistema() ? "cadastroUsuarioFuncionario" : retorno;
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
inicializarPermissoesPerfil(usuario);
if (usuario.isEhFuncionario()) {
// atualiza com os dados recentes da pessoa
usuario.setFuncionario(FuncionarioBO.getInstance().finfById(usuario.getFuncionario().getIdFuncionario()));
// seta foto do funcionário na sessão
getUsuarioLogadoBean().setFotoTemp(ImagemFuncionarioDAO.getInstance().findByAttribute("funcionario", usuario.getFuncionario()));
} else {
// atualiza com os dados recentes da pessoa
usuario.setTerceirizado(TerceirizadoDAO.getInstance().findById(usuario.getTerceirizado().getIdTerceirizado()));
// seta foto do funcionário na sessão
getUsuarioLogadoBean().setFotoTemp(ImagemFuncionarioDAO.getInstance().findByAttribute("terceirizado", usuario.getTerceirizado()));
}
// if (retorno == null)
// addInfoMessage("Formulario", "erro.cadastro.nao.localizado");
} catch (ObjetoNaoEncontradoHibernateException e) {
e.printStackTrace();
} catch (ObjetoNaoEncontradoException e) {
e.printStackTrace();
}
return retorno;
}
public void listener(UploadEvent event) throws Exception {
UploadItem f = event.getUploadItem();
getUsuarioLogadoBean().setFotoTemp(new ImagemFuncionario(FileUtil.getExtensao(f.getFileName()), f.getData()));
}
public void limparFoto(ActionEvent e) {
getUsuarioLogadoBean().setFotoTemp(null);
}
public String showCadastroUsuarioFuncionario() {
operacao = TipoOperacao.CADASTRAR;
usuario = new Usuario();
usuario.setFuncionario(new Funcionario());
usuario.setPerfil(new Perfil());
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
return “cadastroUsuarioFuncionario”;
}
public String showCadastroUsuarioTerceirizado() {
operacao = TipoOperacao.CADASTRAR;
usuario = new Usuario();
usuario.setTerceirizado(new Terceirizado());
usuario.setPerfil(new Perfil());
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
return “cadastroUsuarioTerceirizado”;
}
public String prepareUpdateUsuarioFuncionario() {
operacao = TipoOperacao.ALTERAR;
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
inicializarPermissoesPerfil(usuario);
return “cadastroUsuarioFuncionario”;
}
public String prepareUpdateUsuarioTerceirizado() {
operacao = TipoOperacao.ALTERAR;
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
inicializarPermissoesPerfil(usuario);
return “cadastroUsuarioTerceirizado”;
}
public String listaUsuarios() {
atributoDeFiltragem = “funcionario.dsNome”;
if (atributosEntidadesSelectItem == null) {
atributosEntidadesSelectItem = StringUtil.getAtributosEntidadeEscolhidosSelectItem(new Funcionario(), new String[] { “dsNome” }, true);
atributosEntidadesSelectItem.addAll(StringUtil.getAtributosEntidadeEscolhidosSelectItem(new Terceirizado(), new String[] { “nomeCompleto” }, true));
atributosEntidadesSelectItem.addAll(StringUtil.getAtributosEntidadeEscolhidosSelectItem(new Usuario(), new String[] { “login” }, false));
}
perfilSelecItem = PerfilBO.getInstance().getPerfilSelectItem();
filtro = new Usuario();
filtro.setPerfil(new Perfil());
return “showListaUsuarios”;
}
public String saveUsuario() {
try {
if (ValorUtil.isNaoNuloAndNaoVazio(usuario.getPerfil().getIdPerfil())) {
if (usuario.getFuncionario() != null) {
UsuarioBO.getInstance().saveUsuarioFuncionario(usuario, getUsuarioLogadoBean().getUsuarioLogado().getIdUsuario());
addInfoMessage("Formulario", "sucesso.salvar.entidade", "usuario servidor");
if(DISPARO_EMAIL_ATIVADO) {
DisparadorDeEmail.enviarMsgSucessoDeCadastroDeUsuarioParaUsuarioLogado(getUsuarioLogadoBean().getUsuarioLogado(), usuario);
addInfoMessage("Formulario", "msg.email.enviado", "usuario");
}
return showCadastroUsuarioFuncionario();
} else if (usuario.getTerceirizado() != null) {
UsuarioBO.getInstance().saveUsuarioTerceirizado(usuario, getUsuarioLogadoBean().getUsuarioLogado().getIdUsuario());
addInfoMessage("Formulario", "sucesso.salvar.entidade", "usuario terceirizado");
if(DISPARO_EMAIL_ATIVADO) {
DisparadorDeEmail.enviarMsgSucessoDeCadastroDeUsuarioParaUsuarioLogado(getUsuarioLogadoBean().getUsuarioLogado(), usuario);
addInfoMessage("Formulario", "msg.email.enviado", "usuario");
}
return showCadastroUsuarioTerceirizado();
}
} else {
addErrorMessage("formulario", "javax.faces.component.UIInput.REQUIRED", "Formulario:Perfil");
}
} catch (ViolacaoChaveHibernateException e) {
addErrorMessage(“Formulario”, “erro.salvar.entidade.exception”, “usuario”);
} catch (UnsupportedEncodingException e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
} catch (MessagingException e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
} catch (UsuarioSemEmailException e) {
addErrorMessage(“Formulario”, “erro.usuario.sem.email.cadastrado”);
} catch (ValorUnicoException e) {
addErrorMessage(“Formulario”, “erro.exception.valor.unico”, NOME_ENTIDADE.toLowerCase(), e.getAtributo(), usuario.getCpf());
} catch (FuncionarioNaoEncontradoException e) {
addErrorMessage(“Formulario”, “msg.funcionario.nao.encontrado”);
} catch (TerceirizadoNaoEncontradoException e) {
addErrorMessage(“Formulario”, “msg.terceirizado.nao.encontrado”);
} catch (UsuarioFuncionarioJaCadastradoException e) {
addErrorMessage(“Formulario”, “erro.usuario.funcionario.ja.utilizado”, “funcionário”, usuario.getFuncionario().getDsNome());
} catch (UsuarioTerceirizadoJaCadastradoException e) {
addErrorMessage(“Formulario”, “erro.usuario.funcionario.ja.utilizado”, “terceirizado”, usuario.getTerceirizado().getNomeCompleto());
} catch (LogException e) {
addErrorMessage(“Formulario”, “erro.geracao.log”, “usuário”, e.getMessage());
} catch (LdapUeceException e) {
addErrorMessage(“Formulario”, “erro.salvar.entidade.exception.detail”, “usuário”, e.getMessage());
} catch (Exception e) {
addErrorMessage(“Formulario”, “erro.geral”, e.getMessage());
}
return null;
}
public String updateUsuario() {
try {
if (ValorUtil.isNaoNuloAndNaoVazio(usuario.getPerfil().getIdPerfil())) {
if (usuario.getFuncionario() != null) {
if (getUsuarioLogadoBean().getFotoTemp() != null)
FotoBO.getInstance().setFoto(getUsuarioLogadoBean().getFotoTemp(), usuario.getFuncionario());
else// if null
getFuncionarioBean().excluirImagemFuncionario(usuario.getFuncionario());
getFuncionarioBean().setImagemUsuarioLogadoParaVerNaTelaHome(usuario.getFuncionario());
} else if (usuario.getTerceirizado() != null) {
if (getUsuarioLogadoBean().getFotoTemp() != null) {
FotoBO.getInstance().setFoto(getUsuarioLogadoBean().getFotoTemp(), usuario.getTerceirizado());
} else {// if null
getTerceirizadoBean().excluirImagemFuncionario(usuario.getTerceirizado());
}
getTerceirizadoBean().setImagemUsuarioLogadoParaVerNaTelaHome(usuario.getTerceirizado());
}
UsuarioBO.getInstance().updateUsuario(usuario, getUsuarioLogadoBean().getUsuarioLogado().getIdUsuario());
addInfoMessage("Formulario", "sucesso.editar.entidade", "usuario");
if(DISPARO_EMAIL_ATIVADO)
DisparadorDeEmail.enviarMsgSucessoDeAlteracaoDeUsuarioParaUsuarioLogado(getUsuarioLogadoBean().getUsuarioLogado(), usuario);
addInfoMessage("Formulario", "msg.email.enviado", "usuario");
} else {
addErrorMessage("formulario", "javax.faces.component.UIInput.REQUIRED", "Formulario:Perfil");
}
} catch (
ViolacaoChaveHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.exception”, “usuario”);
} catch (ObjetoNaoEncontradoHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.nao.encontrada.exception”, “usuario”);
} catch (UnsupportedEncodingException e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
} catch (MessagingException e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
} catch (UsuarioSemEmailException e) {
addErrorMessage(“Formulario”, “erro.usuario.sem.email.cadastrado”);
} catch (ValorUnicoException e) {
addErrorMessage(“Formulario”, “erro.exception.valor.unico”, NOME_ENTIDADE.toLowerCase(), e.getAtributo(), usuario.getLogin());
} catch (UsuarioFuncionarioJaCadastradoException e) {
addErrorMessage(“Formulario”, “erro.usuario.funcionario.ja.utilizado”, “funcionário”, usuario.getFuncionario().getDsNome());
} catch (UsuarioTerceirizadoJaCadastradoException e) {
addErrorMessage(“Formulario”, “erro.usuario.funcionario.ja.utilizado”, “terceirizado”, usuario.getTerceirizado().getNomeCompleto());
} catch (LogException e) {
addErrorMessage(“Formulario”, “erro.geracao.log”, “usuário”, e.getMessage());
} catch (LdapUeceException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.exception.detail”, “usuário”, e.getMessage());
} catch (SispessoalRuntimeException e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
}
return null;
}
/**
* Desativa o usuário, cotudo somente usuários que não possuem o perfil
* admistrador do sistema podem ser desativados.
*/
public void desativarUsuario() {
try {
boolean perfilEdescricaoNaoNulos = usuario != null && usuario.getPerfil() != null && usuario.getPerfil().getDescricao() != null;
if (perfilEdescricaoNaoNulos && usuario.getPerfil().getDescricao().equals(Perfil.ADMINISTRADOR_SISTEMA)) {
addErrorMessage("Formulario", "desativacao.usuario.admin.nao.autorizada", "usuario");
} else {
UsuarioBO.getInstance().desativarUsuario(usuario, getUsuarioLogadoBean().getUsuarioLogado().getIdUsuario());
}
} catch (ViolacaoChaveHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.exception”, “usuario”);
} catch (ObjetoNaoEncontradoHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.nao.encontrada.exception”, “usuario”);
} catch (LogException e) {
addErrorMessage(“Formulario”, “erro.geracao.log”, “usuário”, e.getMessage());
}
}
public void ativarUsuario() {
try {
UsuarioBO.getInstance().ativarUsuario(usuario, getUsuarioLogadoBean().getUsuarioLogado().getIdUsuario());
} catch (ViolacaoChaveHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.exception”, “usuario”);
} catch (ObjetoNaoEncontradoHibernateException e) {
addErrorMessage(“Formulario”, “erro.editar.entidade.nao.encontrada.exception”, “usuario”);
} catch (LogException e) {
addErrorMessage(“Formulario”, “erro.geracao.log”, “usuário”, e.getMessage());
}
}
public void detalharPerfil() throws Exception {
if (usuario.getPerfil() != null && ValorUtil.isNaoNuloAndNaoVazio(usuario.getPerfil().getIdPerfil())) {
usuario.getPerfil().setDescricao(obterLabel(perfilSelecItem, usuario.getPerfil().getIdPerfil()));
usuario.getPerfil().setPermissaoCollection(PermissaoBO.getInstance().listaPermissoes(usuario.getPerfil()));
}
}
public void inicializarPermissoesPerfil(Usuario usuario) {
try {
if (usuario.getPerfil() != null) {
usuario.getPerfil().setPermissaoCollection(PermissaoBO.getInstance().listaPermissoes(usuario.getPerfil()));
}
} catch (Exception e) {
addErrorMessage(“Formulario”, “erro.exception.detail”, e.getMessage());
}
}
public DataModel getDataModel() throws PreparacaoListaDemandaHibernateException {
if (firstRow != getDataTable().getFirst()) {
firstRow = getDataTable().getFirst();
getListaDemandaSemChaveDefaultBean().limpaListas();
getListaDemandaSemChaveDefaultBean().getAliasUece().add(new AliasUece("funcionario", "funcionario", CriteriaSpecification.LEFT_JOIN));
getListaDemandaSemChaveDefaultBean().getAliasUece().add(new AliasUece("terceirizado", "terceirizado", CriteriaSpecification.LEFT_JOIN));
getListaDemandaSemChaveDefaultBean().getOrdenacoes().add(Order.asc("funcionario.dsNome"));
getListaDemandaSemChaveDefaultBean().getOrdenacoes().add(Order.asc("terceirizado.nomeCompleto"));
if (ValorUtil.isNaoNuloAndNaoVazio(valorDeFiltragem)) {
getListaDemandaSemChaveDefaultBean().getRestricoes().add(Restrictions.like(atributoDeFiltragem, valorDeFiltragem, MatchMode.ANYWHERE).ignoreCase());
}
if (filtro.getPerfil() != null && ValorUtil.isNaoNuloAndNaoVazio(filtro.getPerfil().getIdPerfil())) {
getListaDemandaSemChaveDefaultBean().getRestricoes().add(Restrictions.eq("perfil", filtro.getPerfil()));
}
tamanhoLista = UsuarioDAO.getInstance().getListSize(getListaDemandaSemChaveDefaultBean().getRestricoes(), getListaDemandaSemChaveDefaultBean().getAliasUece());
listaUsuarios = UsuarioDAO.getInstance().getListaByDemanda(getDataTable().getFirst(), getDataTable().getRows(), getListaDemandaSemChaveDefaultBean().getRestricoes(), getListaDemandaSemChaveDefaultBean().getProjecoes(), getListaDemandaSemChaveDefaultBean().getOrdenacoes(), getListaDemandaSemChaveDefaultBean().getAliasUece());
}
dataModel = new PagedDataModel(listaUsuarios, tamanhoLista);
return dataModel;
}
public void setDataModel(DataModel dataModel) {
this.dataModel = dataModel;
}
public List<SelectItem> getPerfilSelecItem() {
return perfilSelecItem;
}
public void setPerfilSelecItem(List<SelectItem> perfilSelecItem) {
this.perfilSelecItem = perfilSelecItem;
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public List<Usuario> getListaUsuarios() {
return listaUsuarios;
}
public void setListaUsuarios(List<Usuario> listaUsuarios) {
this.listaUsuarios = listaUsuarios;
}
public TipoOperacao getOperacao() {
return operacao;
}
public void setOperacao(TipoOperacao operacao) {
this.operacao = operacao;
}
public List<SelectItem> getAtributosEntidadesSelectItem() {
return atributosEntidadesSelectItem;
}
public void setAtributosEntidadesSelectItem(List<SelectItem> atributosEntidadesSelectItem) {
this.atributosEntidadesSelectItem = atributosEntidadesSelectItem;
}
public String getAtributoDeFiltragem() {
return atributoDeFiltragem;
}
public void setAtributoDeFiltragem(String atributoDeFiltragem) {
this.atributoDeFiltragem = atributoDeFiltragem;
}
public String getValorDeFiltragem() {
return valorDeFiltragem;
}
public void setValorDeFiltragem(String valorDeFiltragem) {
this.valorDeFiltragem = valorDeFiltragem;
}
public HtmlDataTable getDataTable() {
return dataTable;
}
public void setDataTable(HtmlDataTable dataTable) {
this.dataTable = dataTable;
}
public int getFirstRow() {
return firstRow;
}
public void setFirstRow(int firstRow) {
this.firstRow = firstRow;
}
public int getTamanhoLista() {
return tamanhoLista;
}
public void setTamanhoLista(int tamanhoLista) {
this.tamanhoLista = tamanhoLista;
}
public Usuario getFiltro() {
return filtro;
}
public void setFiltro(Usuario filtro) {
this.filtro = filtro;
}
}