package br.com.ec.controller.managedbean;
import java.io.Serializable;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.domain.model.Perfil;
import br.com.ec.domain.model.UniversidadeConteudo;
import br.com.ec.domain.model.UniversidadeModulo;
import br.com.ec.domain.model.UniversidadeTopico;
import br.com.ec.domain.model.UniversidadeTopicoUsuario;
import br.com.ec.domain.model.tipos.TipoUniversidadeConteudo;
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
import br.com.ec.domain.service.universidadeconteudo.UniversidadeConteudoService;
import br.com.ec.domain.service.universidademodulo.UniversidadeModuloService;
import br.com.ec.domain.service.universidadetopico.UniversidadeTopicoService;
import br.com.ec.domain.service.universidadetopicousuario.UniversidadeTopicoUsuarioService;
import br.edu.cesmac.core.generic.GenericService;
import br.edu.cesmac.core.util.VerificadorUtil;
import br.edu.cesmac.web.exception.VerificadorLancamentoException;
import br.edu.cesmac.web.exception.VerificadorLancamentoException.CommandBean;
import br.edu.cesmac.web.generic.AbstractBean;
import br.edu.cesmac.web.message.LancadorMensagem;
import br.edu.cesmac.web.util.TipoOperacao;
@Named
@Scope
("view")
public class UniversidadeModuloBean
extends AbstractBean
<UniversidadeModulo
> implements Serializable {
private static final long serialVersionUID = 1L
;
private UniversidadeTopico topicoSelecionado
;
private UniversidadeConteudo conteudoSelecionado
;
private List<UniversidadeTopico
> topicos
;
private List<UniversidadeTopicoUsuario
> acessosTopico
;
private List<UniversidadeConteudo
> conteudos
;
private List<UniversidadeModulo
> listaModulos
;
private List<UniversidadeModulo
> listaModulosAtivos
;
private List<Perfil
> perfisSelecionados
;
private UniversidadeModuloService universidadeModuloService
;
private UniversidadeTopicoService universidadeTopicoService
;
private UniversidadeTopicoUsuarioService universidadeTopicoUsuarioService
;
private UniversidadeConteudoService universidadeConteudoService
;
private ContextoSeguranca contextoSeguranca
;
@Inject
public UniversidadeModuloBean
(UniversidadeModuloService universidadeModuloService, UniversidadeTopicoService universidadeTopicoService,
UniversidadeTopicoUsuarioService universidadeTopicoUsuarioService, UniversidadeConteudoService universidadeConteudoService,
ContextoSeguranca contextoSeguranca
) {
this.
universidadeModuloService = universidadeModuloService
;
this.
universidadeTopicoService = universidadeTopicoService
;
this.
universidadeTopicoUsuarioService = universidadeTopicoUsuarioService
;
this.
universidadeConteudoService = universidadeConteudoService
;
this.
contextoSeguranca = contextoSeguranca
;
}
@
Override
public void limparEntidade
() {
setEntidade
(new UniversidadeModulo
());
}
@
Override
public GenericService
<UniversidadeModulo
> getService
() {
return universidadeModuloService
;
}
@
Override
public UniversidadeModulo getEntidade
() {
return entidade
;
}
@
Override
public UniversidadeModulo getId
() {
return getEntidade
();
}
public UniversidadeTopico getTopicoSelecionado
() {
return topicoSelecionado
;
}
public void setTopicoSelecionado
(UniversidadeTopico topicoSelecionado
) {
this.
topicoSelecionado = topicoSelecionado
;
}
public UniversidadeConteudo getConteudoSelecionado
() {
return conteudoSelecionado
;
}
public void setConteudoSelecionado
(UniversidadeConteudo conteudoSelecionado
) {
this.
conteudoSelecionado = conteudoSelecionado
;
}
public List<UniversidadeTopico
> getTopicos
() {
return topicos
;
}
public void setTopicos
(List<UniversidadeTopico
> topicos
) {
this.
topicos = topicos
;
}
public List<UniversidadeTopicoUsuario
> getAcessosTopico
() {
return acessosTopico
;
}
public void setAcessosTopico
(List<UniversidadeTopicoUsuario
> acessosTopico
) {
this.
acessosTopico = acessosTopico
;
}
public List<UniversidadeConteudo
> getConteudos
() {
return conteudos
;
}
public void setConteudos
(List<UniversidadeConteudo
> conteudos
) {
this.
conteudos = conteudos
;
}
public List<UniversidadeModulo
> getListaModulos
() {
// if (VerificadorUtil.estaNulo(listaModulos)) {
setListaModulos
(universidadeModuloService.
consultarTodos(new UniversidadeModulo
()));
// }
return listaModulos
;
}
public void setListaModulos
(List<UniversidadeModulo
> listaModulos
) {
this.
listaModulos = listaModulos
;
}
public List<UniversidadeModulo
> getListaModulosAtivos
() {
if (VerificadorUtil.
estaNulo(listaModulosAtivos
)) {
setListaModulosAtivos
(universidadeModuloService.
listarModulosAtivos());
}
return listaModulosAtivos
;
}
public void setListaModulosAtivos
(List<UniversidadeModulo
> listaModulosAtivos
) {
this.
listaModulosAtivos = listaModulosAtivos
;
}
public List<Perfil
> getPerfisSelecionados
() {
return perfisSelecionados
;
}
public void setPerfisSelecionados
(List<Perfil
> perfisSelecionados
) {
this.
perfisSelecionados = perfisSelecionados
;
}
public TipoUniversidadeConteudo
[] getTiposConteudo
() {
return TipoUniversidadeConteudo.
values();
}
public void prepararTopico
() {
setTopicoSelecionado
(new UniversidadeTopico
());
}
public void cadastrarTopico
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getTopicoSelecionado
().
setModulo(getEntidade
());
universidadeTopicoService.
cadastrar(getTopicoSelecionado
());
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO
));
consultarTopicos
(getEntidade
());
}
});
}
public void alterarTopico
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
universidadeTopicoService.
alterar(getTopicoSelecionado
());
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO
));
}
});
}
public void selecionarTopico
(UniversidadeTopico universidadeTopico
) {
setTopicoSelecionado
(universidadeTopico
);
setConteudos
(universidadeTopicoService.
consultarConteudos(universidadeTopico,
true));
}
public void prepararConteudo
() {
setConteudoSelecionado
(new UniversidadeConteudo
());
}
public void cadastrarConteudo
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getConteudoSelecionado
().
setTopico(getTopicoSelecionado
());
universidadeConteudoService.
cadastrar(getConteudoSelecionado
());
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_CADASTRADO_COM_SUCESSO
));
selecionarTopico
(getTopicoSelecionado
());
}
});
}
public void alterarConteudo
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
universidadeConteudoService.
alterar(getConteudoSelecionado
());
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO
));
}
});
}
public void acessarTopicos
(UniversidadeModulo universidadeModulo
) {
setEntidade
(universidadeModulo
);
setTopicos
(universidadeTopicoService.
consultarTopicos(universidadeModulo,
true));
}
public void acessarConteudo
(UniversidadeTopico universidadeTopico
) {
setTopicoSelecionado
(universidadeTopico
);
setConteudos
(universidadeTopicoService.
consultarConteudos(universidadeTopico,
true));
universidadeTopicoService.
atualizarAcessoUsuario(universidadeTopico, contextoSeguranca.
obterUsuario());
}
public void consultarTopicos
(UniversidadeModulo universidadeModulo
) {
setTipoOperacao
(TipoOperacao.
REALIZAR);
setEntidade
(universidadeModuloService.
detalharModulo(universidadeModulo
));
setConteudoSelecionado
(null);
setConteudos
(null);
setAcessosTopico
(null);
}
public void acessosTopico
(UniversidadeTopico universidadeTopico
) {
setTopicoSelecionado
(universidadeTopico
);
setAcessosTopico
(universidadeTopicoUsuarioService.
acessosTopico(universidadeTopico
));
}
public void excluirTopico
(final UniversidadeTopico universidadeTopico
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
universidadeTopicoService.
excluir(universidadeTopico
);
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_EXCLUIDO_COM_SUCESSO
));
consultarTopicos
(getEntidade
());
}
});
}
public void excluirConteudo
(final UniversidadeConteudo universidadeConteudo
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
universidadeConteudoService.
excluir(universidadeConteudo
);
LancadorMensagem.
lancarSucesso(getMensagens
().
get(IDENTIFICADOR_MENSAGEM_EXCLUIDO_COM_SUCESSO
));
selecionarTopico
(getTopicoSelecionado
());
}
});
}
}