package br.com.ec.controller.seguranca;
import java.io.IOException;
import java.io.Serializable;
import javax.faces.context.FacesContext;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Parametro;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.UsuarioLoja;
import br.com.ec.domain.model.tipos.TipoAno;
import br.com.ec.domain.model.tipos.TipoMes;
import br.com.ec.domain.service.perfil.PerfilService;
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
import br.com.ec.domain.service.usuario.UsuarioService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.message.LancadorMensagem;
@Named
@Scope
("view")
public class SegurancaBean
implements Serializable{
private static final long serialVersionUID = 1L
;
private ContextoSeguranca contextoSeguranca
;
private Usuario usuario
;
private String novaSenha
;
private UsuarioService usuarioService
;
private PerfilService perfilService
;
@Inject
public SegurancaBean
(ContextoSeguranca contextoSeguranca, UsuarioService usuarioService, PerfilService perfilService
) {
this.
contextoSeguranca = contextoSeguranca
;
this.
usuarioService = usuarioService
;
this.
perfilService = perfilService
;
}
public ContextoSeguranca getContextoSeguranca
() {
return contextoSeguranca
;
}
public void setContextoSeguranca
(ContextoSeguranca contextoSeguranca
) {
this.
contextoSeguranca = contextoSeguranca
;
}
public Usuario getUsuario
() {
if (usuario ==
null) {
setUsuario
(contextoSeguranca.
obterUsuario());
}
return usuario
;
}
public void setUsuario
(Usuario usuario
) {
this.
usuario = usuario
;
}
public String getNovaSenha
() {
return novaSenha
;
}
public void setNovaSenha
(String novaSenha
) {
this.
novaSenha = novaSenha
;
}
/************************************************************************/
public Boolean temPerfilAdministrador
() {
return perfilService.
temPerfilAdministrador(getUsuario
());
}
public Boolean temPerfilGerenteAdministrativo
() {
return perfilService.
temPerfilGerenteAdministrativo(getUsuario
());
}
/************************************************************************/
public Boolean temPerfilFinanceiro
() {
return perfilService.
temPerfilFinanceiro(getUsuario
());
}
public Boolean temPerfilComercial
() {
return perfilService.
temPerfilComercial(getUsuario
());
}
public Boolean temPerfilLojistica
() {
return perfilService.
temPerfilLojistica(getUsuario
());
}
public Boolean temPerfilVendedor
() {
return perfilService.
temPerfilVendedor(getUsuario
());
}
public Boolean temPerfilCompras
() {
return perfilService.
temPerfilCompras(getUsuario
());
}
public Boolean temPerfilGerenteVivo
() {
return perfilService.
temPerfilGerenteVivo(getUsuario
());
}
public Boolean temPerfilTecnico
() {
return perfilService.
temPerfilTecnico(getUsuario
());
}
public Boolean temPerfilRecursosHumanos
() {
return perfilService.
temPerfilRecursosHumanos(getUsuario
());
}
public Boolean temPerfilOperacoes
() {
return perfilService.
temPerfilOperacoes(getUsuario
());
}
public Boolean temPerfilProducao
() {
return perfilService.
temPerfilProducao(getUsuario
());
}
public Boolean temPerfilSupervisor
() {
return perfilService.
temPerfilSupervisor(getUsuario
());
}
public Boolean temPerfilTreinamento
() {
return perfilService.
temPerfilTreinamento(getUsuario
());
}
public Boolean temPerfilLoja
() {
return perfilService.
temPerfilLoja(getUsuario
());
}
public Boolean temAcessoLoja
(Long sequencialLoja
) {
return temPerfilGerenteAdministrativo
() || verificarAcessoLoja
(getUsuario
(), sequencialLoja
);
}
public Boolean temAcessoLojaVivo
() {
return temPerfilGerenteAdministrativo
() || verificarAcessoLoja
(getUsuario
(), ConstantesSEC.
SEQUENCIAL_LOJA_VIVO_4);
}
public Boolean temAcessoLojaCasaDasCapas
() {
return temPerfilCompras
() || temPerfilComercial
() ||
(verificarAcessoLoja
(getUsuario
(), ConstantesSEC.
SEQUENCIAL_CASA_DAS_CAPAS_17) && temPerfilVendedor
());
}
public Boolean naoTemAcessoLojaCasaDasCapas
() {
return temPerfilCompras
() || temPerfilComercial
() ||
!(verificarAcessoLoja
(getUsuario
(), ConstantesSEC.
SEQUENCIAL_CASA_DAS_CAPAS_17) && temPerfilVendedor
());
}
private Boolean verificarAcessoLoja
(Usuario usuario,
Long sequencialLoja
) {
for (UsuarioLoja usuarioLoja : usuario.
getLojas()) {
if (usuarioLoja.
getLoja().
getSequencial().
equals(sequencialLoja
)) {
return true;
}
}
return false;
}
public void restaurarTelaPDV
(Loja loja
) throws IOException {
FacesContext.
getCurrentInstance().
getExternalContext().
redirect(FacesContext.
getCurrentInstance().
getExternalContext().
getRequestContextPath() +
"/sistema/pdv.xhtml?sequencialLoja=" + loja.
getSequencial());
}
public void restaurarTelaPDVVivo
(Loja loja
) throws IOException {
FacesContext.
getCurrentInstance().
getExternalContext().
redirect(FacesContext.
getCurrentInstance().
getExternalContext().
getRequestContextPath() +
"/sistema/pdv_vivo.xhtml?sequencialLoja=" + loja.
getSequencial());
}
public void restaurarTelaPDVFarma
(Loja loja
) throws IOException {
FacesContext.
getCurrentInstance().
getExternalContext().
redirect(FacesContext.
getCurrentInstance().
getExternalContext().
getRequestContextPath() +
"/sistema/pdv.xhtml?sequencialLoja=" + loja.
getSequencial());
}
public void invalidarSessao
() {
FacesContext.
getCurrentInstance().
getExternalContext().
invalidateSession();
}
public void alterarSenhaUsuario
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getUsuario
().
setSenha(getNovaSenha
());
usuarioService.
alterarSenhaUsuario(getUsuario
());
setNovaSenha
("");
LancadorMensagem.
lancarSucesso("SENHA ALTERADA COM SUCESSO");
}
});
}
public Integer getTempoEstoqueMinimoParaComprasEmDias
() {
Parametro parametro =
new Parametro
();
parametro.
setCodigo(ConstantesSEC.
Parametro.
CODIGO_PARAMETRO_TEMPO_ESTOQUE_MINIMO_PARA_COMPRAS);
parametro = getUsuario
().
getParametros().
get(getUsuario
().
getParametros().
indexOf(parametro
));
return VerificadorUtil.
naoEstaNulo(parametro
)? new Integer(parametro.
getValor()) :
15;
}
public Integer getTempoEstoqueParaReporEmDias
() {
Parametro parametro =
new Parametro
();
parametro.
setCodigo(ConstantesSEC.
Parametro.
CODIGO_PARAMETRO_TEMPO_ESTOQUE_REPOSICAO_PARA_COMPRAS);
parametro = getUsuario
().
getParametros().
get(getUsuario
().
getParametros().
indexOf(parametro
));
return VerificadorUtil.
naoEstaNulo(parametro
)? new Integer(parametro.
getValor()) :
60;
}
public TipoAno
[] getTiposAno
() {
return TipoAno.
values();
}
public TipoMes
[] getTiposMes
() {
return TipoMes.
values();
}
public String textoSobreCorMargem
() {
return ConstantesSEC.
Textos.
TEXTO_COR_MARGEM;
}
}