Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

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!");
                        }
                });
        }
       
}