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.core.consulta.ParametrosConsulta;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Categoria;
import br.com.ec.domain.model.tipos.TipoCategoria;
import br.com.ec.domain.service.categoria.CategoriaService;
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;
@Named
@Scope
("view")
public class CategoriaBean
extends AbstractBean
<Categoria
> implements Serializable {
private static final long serialVersionUID = 1L
;
private CategoriaService categoriaService
;
private Categoria categoriaSelecionado
;
private List<Categoria
> categorias
;
@Inject
public CategoriaBean
(CategoriaService categoriaService
) {
this.
categoriaService = categoriaService
;
}
@
Override
public void preCarregamento
() {
if (VerificadorUtil.
estaNulo(parametrosConsulta
)) {
entidade =
new Categoria
();
parametrosConsulta =
new ParametrosConsulta
<Categoria
>();
parametrosConsulta.
setEntidade(entidade
);
}
}
@
Override
public void limparEntidade
() {
Categoria categoria =
new Categoria
();
setEntidade
(categoria
);
}
@
Override
public GenericService
<Categoria
> getService
() {
return categoriaService
;
}
@
Override
public Categoria getEntidade
() {
return entidade
;
}
@
Override
public Categoria getId
() {
return getEntidade
();
}
public List<Categoria
> getCategorias
() {
if (VerificadorUtil.
estaNulo(categorias
)) {
setCategorias
(categoriaService.
consultarTodos(new Categoria
()));
}
return categorias
;
}
public void setCategorias
(List<Categoria
> categorias
) {
this.
categorias = categorias
;
}
public TipoCategoria
[] getTiposCategoria
() {
return TipoCategoria.
values();
}
public Categoria getCategoriaSelecionado
() {
return categoriaSelecionado
;
}
public void setCategoriaSelecionado
(Categoria categoriaSelecionado
) {
this.
categoriaSelecionado = categoriaSelecionado
;
}
public void prepararConsulta
() {
setCategorias
(categoriaService.
consultarPassandoEntidade(getParametrosConsulta
().
getEntidade(),
0, categoriaService.
obterQuantidadeDeRegistrosPassandoEntidade(getParametrosConsulta
().
getEntidade())));
}
public List<Categoria
> listarCategorias
() {
return categoriaService.
consultarPassandoEntidade(getParametrosConsulta
().
getEntidade(),
0, categoriaService.
obterQuantidadeDeRegistrosPassandoEntidade(getParametrosConsulta
().
getEntidade()));
}
public List<Categoria
> listarCategoriasPai
() {
return categoriaService.
consultarCategoriasPaiAtivas(null);
}
public List<Categoria
> listarCategoriasPaiReceitas
() {
return categoriaService.
consultarCategoriasPaiAtivas(TipoCategoria.
RECEITAS.
getValor());
}
public List<Categoria
> listarCategoriasPaiDespesas
() {
return categoriaService.
consultarCategoriasPaiAtivas(TipoCategoria.
DESPESAS.
getValor());
}
public void excluirCategoria
(final Categoria categoria
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
categoriaService.
excluir(categoria
);
setCategorias
(categoriaService.
consultarTodos(new Categoria
()));
LancadorMensagem.
lancarSucesso("Categoria excluĂda com sucesso");
}
});
}
}