package br.com.ec.controller.managedbean;
import java.io.Serializable;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.context.annotation.Scope;
import br.com.ec.controller.managedbean.consultademanda.ProdutoConsultaPorDemanda;
import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.ParametrosConsultaProdutoDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Produto;
import br.com.ec.domain.model.Usuario;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.domain.service.seguranca.ContextoSeguranca;
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 ContagemConsultaBean
extends AbstractBean
<Produto
> implements Serializable {
private static final long serialVersionUID = 1L
;
private ProdutoConsultaPorDemanda lazy
;
private ContextoSeguranca contextoSeguranca
;
private Loja lojaSelecionada
;
private Usuario usuarioParaContagem
;
private LojaService lojaService
;
private ProdutoService produtoService
;
@Inject
public ContagemConsultaBean
(ProdutoConsultaPorDemanda lazy, ContextoSeguranca contextoSeguranca, LojaService lojaService,
ProdutoService produtoService
) {
this.
lazy = lazy
;
this.
contextoSeguranca = contextoSeguranca
;
this.
lojaService = lojaService
;
this.
produtoService = produtoService
;
}
@
Override
public void preCarregamento
() {
entidade =
new Produto
();
parametrosConsulta =
new ParametrosConsultaProdutoDTO
();
parametrosConsulta.
setEntidade(new Produto
());
lazy.
alterarParametroConsultarNaAbertura(true);
prepararConsultaDemanda
();
}
@
Override
public void limparEntidade
() {}
@
Override
public GenericService
<Produto
> getService
() {
return null;
}
@
Override
public Produto getEntidade
() {
return entidade
;
}
@
Override
public Produto getId
() {
return getEntidade
();
}
public ProdutoConsultaPorDemanda getLazy
() {
prepararConsultaDemanda
();
return lazy
;
}
public void setLazy
(ProdutoConsultaPorDemanda lazy
) {
this.
lazy = lazy
;
}
public void prepararConsultaDemanda
() {
((ParametrosConsultaProdutoDTO
)parametrosConsulta
).
setLojaSelecionadaParaContagem(getLojaSelecionada
());
((ParametrosConsultaProdutoDTO
)parametrosConsulta
).
setConsultarAtivo(1);
((ParametrosConsultaProdutoDTO
)parametrosConsulta
).
setUsuarioParaContagem(getUsuarioParaContagem
());
lazy.
setarParametrosConsulta(getParametrosConsulta
());
}
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 Usuario getUsuarioParaContagem
() {
return usuarioParaContagem
;
}
public void setUsuarioParaContagem
(Usuario usuarioParaContagem
) {
this.
usuarioParaContagem = usuarioParaContagem
;
}
public void cancelarContagem
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoService.
cancelarContagem((ParametrosConsultaProdutoDTO
)getParametrosConsulta
());
LancadorMensagem.
lancarSucesso("CONTAGEM CANCELADA COM SUCESSO!");
}
});
}
public void zerarEstoque
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
produtoService.
zerarEstoque((ParametrosConsultaProdutoDTO
)getParametrosConsulta
(), contextoSeguranca.
obterUsuario());
LancadorMensagem.
lancarSucesso("ESTOQUE ZERADO COM SUCESSO!");
}
});
}
}