Subversion Repositories Integrator Subversion

Rev

Rev 124 | Rev 258 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
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.DataUtils;
import br.com.ec.domain.dto.DashboardLogisticaDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.domain.model.Perfil;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.loja.LojaService;
import br.com.ec.domain.service.pendencia.PendenciaService;
import br.com.ec.domain.service.produto.ProdutoService;
import br.com.ec.domain.service.produtodaloja.ProdutoLojaService;
import br.com.ec.domain.service.transferencia.TransferenciaService;
import br.com.ec.domain.shared.ConstantesSEC;
import br.com.ec.web.generic.AbstractBean;

@Named
@Scope("view")
public class DashboardLogisticaBean extends AbstractBean<DashboardLogisticaDTO> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private LojaService lojaService;
        private ProdutoLojaService produtoLojaService;
        private ProdutoService produtoService;
        private PendenciaService pendenciaService;
        private TransferenciaService transferenciaService;
       
        private List<DashboardLogisticaDTO> acompanhamentos;
       
        @Inject
        public DashboardLogisticaBean(LojaService lojaService, ProdutoLojaService produtoLojaService, ProdutoService produtoService,
                        PendenciaService pendenciaService, TransferenciaService transferenciaService) {
                this.lojaService = lojaService;
                this.produtoLojaService = produtoLojaService;
                this.produtoService = produtoService;
                this.pendenciaService = pendenciaService;
                this.transferenciaService = transferenciaService;
        }
       
        @PostConstruct
        private void iniciarDashboard() {
                List<DashboardLogisticaDTO> acompanhamentos = new ArrayList<DashboardLogisticaDTO>();
                List<Loja> lojas = lojaService.listarLojasAtivasEspacoCaseEeCasaDasCapas();
                for (Loja loja : lojas) {
                        DashboardLogisticaDTO acompanhamento = new DashboardLogisticaDTO();
                        LojaDTO lojaDTO = new LojaDTO();
                        lojaDTO.setSequencial(loja.getSequencial());
                        lojaDTO.setDescricao(loja.getDescricao());
                        lojaDTO.setLimitadorProdutos(loja.getLimitadorProdutos());
                       
                        acompanhamento.setLojaDTO(lojaDTO);
                        acompanhamento.setQuantidadeEstoqueTotal(produtoLojaService.consultarEstoqueTipoProdutoEeLoja(TipoProduto.CAPA.getValor(), loja.getSequencial()));
                        acompanhamento.setQuantidadePendencias(pendenciaService.obterQuantidadePendenciasNaoFinalizadasPorLojaPerfilEePeriodo(loja, new Perfil(ConstantesSEC.PERFIL_GERENTE_LOJISTICA_4), null, null));
                        acompanhamento.setQuantidadeTransferenciasParaReceberAbertas(transferenciaService.obterQuantidadeDeTransferenciasParaReceberAbertas(loja, null, null));
                        acompanhamento.setQuantidadeContagensAbertas(produtoService.quantidadeParaContagem(loja));
                        acompanhamento.setQuantidadeContagensRealizadas(produtoLojaService.obterQuantidadeDeContagens(loja, DataUtils.getDataAtual(), DataUtils.getDataAtual()));
                       
                        Date cincoDiasAntes = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -5);
                        acompanhamento.setQuantidadeAlertaTransferenciasAbertasPorMaiorPeriodo(transferenciaService.obterQuantidadeDeTransferenciasParaReceberAbertas(loja, null, cincoDiasAntes));
                       
                        Date seteDiasAntes = DataUtils.acrescentarDias(DataUtils.getDataAtual(), -7);
                        acompanhamento.setQuantidadeAlertaPendenciasAbertasPorMaiorPeriodo(pendenciaService.obterQuantidadePendenciasNaoFinalizadasPorLojaPerfilEePeriodo(loja, new Perfil(ConstantesSEC.PERFIL_GERENTE_LOJISTICA_4), null, seteDiasAntes));
                        acompanhamento.setQuantidadeAlertaModelosNaoFavoritos(produtoLojaService.obterQuantidadeEstoqueModelosNaoFavoritos(TipoProduto.CAPA.getValor(), loja.getSequencial()));
                       
                        acompanhamentos.add(acompanhamento);
                }
                setAcompanhamentos(acompanhamentos);
        }
       
        @Override
        public void preCarregamento() {
                entidade = new DashboardLogisticaDTO();
                parametrosConsulta = new ParametrosConsulta<DashboardLogisticaDTO>();
                parametrosConsulta.setEntidade(entidade);
        }
       
        @Override
        public void limparEntidade() {
                DashboardLogisticaDTO consolidado = new DashboardLogisticaDTO();
                setEntidade(consolidado);
        }

        @Override
        public GenericService<DashboardLogisticaDTO> getService() {
                return null;
        }
       
        @Override
        public DashboardLogisticaDTO getEntidade() {
                return entidade;
        }

        @Override
        public DashboardLogisticaDTO getId() {
                return getEntidade();
        }
       
        public List<DashboardLogisticaDTO> getAcompanhamentos() {
                return acompanhamentos;
        }
        public void setAcompanhamentos(List<DashboardLogisticaDTO> acompanhamentos) {
                this.acompanhamentos = acompanhamentos;
        }
       
}