package br.com.triadworks.issuetracker.controller;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
import org.conventionsframework.bean.BaseMBean;
import org.conventionsframework.qualifier.SecurityMethod;
import br.com.triadworks.issuetracker.controller.util.FacesUtils;
import br.com.triadworks.issuetracker.model.Usuario;
import br.com.triadworks.issuetracker.service.UsuarioService;
@Named
@ViewAccessScoped
public class UsuarioBean extends BaseMBean<Usuario> implements Serializable {
private Usuario usuario = new Usuario();
private String confirmacaoDeSenha;
@Inject
private FacesUtils facesUtils;
@Inject
public void setService(UsuarioService usuarioService) {
super.setBaseService(usuarioService);
super.setFindState();
}
public UsuarioService getUsuarioService() {
return (UsuarioService) super.getBaseService();
}
public void lista() {
super.setFindState();
}
@SecurityMethod(rolesAllowed = { "godlike" }, message = "Somente o usuário com perfil 'godlike' pode incluir usuários.")
public void preparaParaAdicionar() {
this.usuario = new Usuario();
super.setInsertState();
}
public void adiciona() {
boolean senhaInvalida = !confirmacaoDeSenha.equals(usuario.getSenha());
if (senhaInvalida) {
facesUtils
.adicionaMensagemDeErro("Senha e confirmação de senha não conferem.");
return;
}
getUsuarioService().salva(usuario);
facesUtils
.adicionaMensagemDeInformacao("Usuário adicionado com sucesso!");
lista();
}
@SecurityMethod(rolesAllowed = { "godlike" }, message = "Somente o usuário admin pode remover usuários.")
public void remove() {
getUsuarioService().remove(usuario);
facesUtils
.adicionaMensagemDeInformacao("Usuário removido com sucesso!");
lista();
}
@SecurityMethod(rolesAllowed = { "godlike" }, message = "Somente o usuário com perfil 'godlike' pode alterar usuários.")
public void preparaParaAlterar(Usuario usuario) {
this.usuario = getUsuarioService().crud().get(usuario.getId()); // evita
setUpdateState();
}
public void altera() {
boolean senhaInvalida = !confirmacaoDeSenha.equals(usuario.getSenha());
if (senhaInvalida) {
facesUtils
.adicionaMensagemDeErro("Senha e confirmação de senha não conferem.");
return;
}
getUsuarioService().atualiza(usuario);
facesUtils
.adicionaMensagemDeInformacao("Usuário atualizado com sucesso!");
lista();
}
public void voltar() {
this.usuario = new Usuario();
lista();
}
public boolean isAdicionando() {
return super.isInsertState();
}
public boolean isEditando() {
return super.isUpdateState();
}
public boolean isPesquisando() {
return super.isFindState();
}
public Usuario getUsuario() {
return usuario;
}
public void setUsuario(Usuario usuario) {
this.usuario = usuario;
}
public String getConfirmacaoDeSenha() {
return confirmacaoDeSenha;
}
public void setConfirmacaoDeSenha(String confirmacaoDeSenha) {
this.confirmacaoDeSenha = confirmacaoDeSenha;
}
public void setFacesUtils(FacesUtils facesUtils) {
this.facesUtils = facesUtils;
}
@Override
public Usuario create() {
return new Usuario();
}
}