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.Loja;
import br.com.ec.domain.model.Pendencia;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.pendencia.PendenciaService;
import br.edu.cesmac.core.consulta.ParametrosConsulta;
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;
@Named
@Scope
("view")
public class PendenciaBean
extends AbstractBean
<Pendencia
> implements Serializable {
private static final long serialVersionUID = 1L
;
private List<Pendencia
> pendencias
;
private PendenciaService pendenciaService
;
private LojaService lojaService
;
private Pendencia pendenciaSelecionado
;
private Loja lojaSelecionada
;
@Inject
public PendenciaBean
(PendenciaService pendenciaService, LojaService lojaService
) {
this.
pendenciaService = pendenciaService
;
this.
lojaService = lojaService
;
}
@
Override
public void preCarregamento
() {
entidade =
new Pendencia
();
entidade.
setLoja(getLojaSelecionada
());
entidade.
setIndicadorFinalizado(false);
parametrosConsulta =
new ParametrosConsulta
<Pendencia
>();
parametrosConsulta.
setEntidade(entidade
);
}
@
Override
public void limparEntidade
() {
setEntidade
(new Pendencia
());
}
@
Override
public GenericService
<Pendencia
> getService
() {
return pendenciaService
;
}
@
Override
public Pendencia getEntidade
() {
return entidade
;
}
@
Override
public Pendencia getId
() {
return getEntidade
();
}
public List<Pendencia
> getPendencias
() {
if (VerificadorUtil.
estaNulo(pendencias
)) {
consultarPendencias
();
}
return pendencias
;
}
public void setPendencias
(List<Pendencia
> pendencias
) {
this.
pendencias = pendencias
;
}
public void consultarPendencias
() {
setPendencias
(pendenciaService.
consultarPassandoEntidade(parametrosConsulta.
getEntidade(),
0, pendenciaService.
obterQuantidadeDeRegistrosPassandoEntidade(parametrosConsulta.
getEntidade())));
}
public Pendencia getPendenciaSelecionado
() {
return pendenciaSelecionado
;
}
public void setPendenciaSelecionado
(Pendencia pendenciaSelecionado
) {
this.
pendenciaSelecionado = pendenciaSelecionado
;
}
public Loja getLojaSelecionada
() {
if (VerificadorUtil.
estaNulo(lojaSelecionada
)) {
if (VerificadorUtil.
naoEstaNulo(getParametro
("sequencialLoja"))) {
Loja loja =
new Loja
();
loja.
setSequencial(new Long(getParametro
("sequencialLoja").
toString()));
lojaSelecionada = lojaService.
consultarPorId(loja
);
}
}
return lojaSelecionada
;
}
public void setLojaSelecionada
(Loja lojaSelecionada
) {
this.
lojaSelecionada = lojaSelecionada
;
}
public Integer quantidadePendenciasNaoFinalizadas
(Loja loja
) {
return pendenciaService.
quantidadePendenciasNaoFinalizadas(loja
);
}
@
Override
public void cadastrar
() {
if (VerificadorUtil.
naoEstaNulo(getLojaSelecionada
())) {
getEntidade
().
setLoja(getLojaSelecionada
());
}
super.
cadastrar();
consultarPendencias
();
}
@
Override
public void alterar
() {
super.
alterar();
consultarPendencias
();
}
public void finalizar
(final Pendencia pendencia
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
pendencia.
setIndicadorFinalizado(true);
getService
().
alterar(pendencia
);
consultarPendencias
();
LancadorMensagem.
lancarSucesso("PendĂȘncia finalizada com sucesso!");
}
});
}
public void aguardar
(final Pendencia pendencia
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
pendencia.
setIndicadorFinalizado(false);
getService
().
alterar(pendencia
);
consultarPendencias
();
LancadorMensagem.
lancarSucesso("PendĂȘncia ativa novamente!");
}
});
}
}