Subversion Repositories Integrator Subversion

Rev

Rev 106 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.HashSet;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;
import javax.servlet.http.HttpSession;

import org.springframework.context.annotation.Scope;

import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.exception.NegocioException;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Perfil;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.model.UsuarioPerfil;
import br.com.ec.domain.service.perfil.PerfilService;
import br.com.ec.domain.service.usuario.UsuarioService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;
import br.com.ec.web.util.TipoOperacao;

@Named
@Scope("view")
public class UsuarioBean extends AbstractBean<Usuario> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private UsuarioService usuarioService;
        private PerfilService perfilService;
       
        private Usuario usuarioSelecionado;
        private Perfil perfilSelecionado;
        private List<Perfil> perfis;
        private List<Perfil> perfisSetores;

        @Inject
        public UsuarioBean(UsuarioService usuarioService, PerfilService perfilService) {
                this.usuarioService = usuarioService;
                this.perfilService = perfilService;
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new Usuario());
        }

        @Override
        public GenericService<Usuario> getService() {
                return usuarioService;
        }
       
        @Override
        public Usuario getEntidade() {
                return entidade;
        }

        @Override
        public Usuario getId() {
                return getEntidade();
        }
       
        public Usuario getUsuarioSelecionado() {
                return usuarioSelecionado;
        }
        public void setUsuarioSelecionado(Usuario usuarioSelecionado) {
                this.usuarioSelecionado = usuarioSelecionado;
        }
       
        public Perfil getPerfilSelecionado() {
                return perfilSelecionado;
        }
        public void setPerfilSelecionado(Perfil perfilSelecionado) {
                this.perfilSelecionado = perfilSelecionado;
        }
       
        public List<Perfil> getPerfis() {
                if (VerificadorUtil.estaNulo(perfis)) {
                        setPerfis(perfilService.consultarTodos(new Perfil()));
                }
                return perfis;
        }
        public void setPerfis(List<Perfil> perfis) {
                this.perfis = perfis;
        }
       
        public List<Perfil> getPerfisSetores() {
                if (VerificadorUtil.estaNulo(perfisSetores)) {
                        setPerfisSetores(perfilService.consultarPerfisComSetoresAtivos());
                }
                return perfisSetores;
        }
        public void setPerfisSetores(List<Perfil> perfisSetores) {
                this.perfisSetores = perfisSetores;
        }
       
        @Override
        public void preCarregamento() {
                parametrosConsulta = new ParametrosConsulta<Usuario>();
                parametrosConsulta.setEntidade(new Usuario());
        }
       
        /***************************************************************/
       
        @Override
        public void preDetalhar(Usuario usuario) {
                detalhar(usuario);
                setTipoOperacao(TipoOperacao.DETALHAR);
        }
       
        @Override
        public void preAlterar(Usuario usuario) {
                detalhar(usuario);
                setTipoOperacao(TipoOperacao.ALTERAR);
        }
       
        public void detalhar(Usuario usuario) {
                setEntidade(usuarioService.detalhar(usuario));
        }
       
        public void detalhar(final Pessoa pessoa) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Usuario usuarioConsultado = usuarioService.consultarUsuarioPorPessoa(pessoa);
                                if (VerificadorUtil.estaNulo(usuarioConsultado)) {
                                        throw new NegocioException("Usuário não existe para esta pessoa");
                                }
                                setEntidade(usuarioService.detalhar(usuarioConsultado));
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void selecionarPessoa(Pessoa pessoa) {
                getEntidade().setPessoa(pessoa);
        }
       
        public void retirarPessoa() {
                getEntidade().setPessoa(null);
        }
       
        public void limparPerfil() {
                setPerfilSelecionado(null);
        }
       
        public void adicionarPerfil() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                if (VerificadorUtil.estaNulo(getPerfilSelecionado())) {
                                        throw new NegocioException("Selecione o perfil");
                                }
                                UsuarioPerfil usuarioPerfil = new UsuarioPerfil();
                                usuarioPerfil.setPerfil(getPerfilSelecionado());
                                usuarioPerfil.setUsuario(getEntidade());
                                if (VerificadorUtil.estaNulo(getEntidade().getPerfis())) {
                                        getEntidade().setPerfis(new HashSet<UsuarioPerfil>());
                                }
                                getEntidade().getPerfis().add(usuarioPerfil);
                                adicionandoParametroArgsConfirmandoAcao(true);
                        }
                });
        }
       
        public void removerPerfil(UsuarioPerfil usuarioPerfil) {
                getEntidade().getPerfis().remove(usuarioPerfil);
        }
       
        public void alterarSenhaUsuario() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                usuarioService.alterarSenhaUsuario(getEntidade());
                                LancadorMensagem.lancarSucesso("SENHA ALTERADA COM SUCESSO");
                        }
                });
        }
       
        public int sessoesAtivas() {
                try {
                        HttpSession sessao = (HttpSession) getContext().getExternalContext().getSession(false);
                        int qnt = (int) sessao.getAttribute("SessionCount");
                        return qnt;
                } catch (Exception e) {
                }
                return (Integer) null;
        }
       
}