package br.com.ec.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
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.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.domain.dto.AlertasGeralDTO;
import br.com.ec.domain.dto.AlertasLogisticaComprasDTO;
import br.com.ec.domain.dto.RankingComprasTransferenciasDTO;
import br.com.ec.domain.dto.RankingModeloDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaModelosMaisVendidosDTO;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AlertasService;
import br.com.ec.domain.service.VendaService;
import br.com.ec.web.generic.AbstractBean;
@Named
@Scope
("view")
public class AlertasComprasBean
extends AbstractBean
<AlertasGeralDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private AlertasService alertasService
;
private VendaService vendaService
;
private Integer tempoDeEstoqueParaAlerta =
30;
@Inject
public AlertasComprasBean
(AlertasService alertasService, VendaService vendaService
) {
this.
alertasService = alertasService
;
this.
vendaService = vendaService
;
}
@
Override
public GenericService
<AlertasGeralDTO
> getService
() {
return null;
}
@
Override
public AlertasGeralDTO getId
() {
return null;
}
@
Override
public void limparEntidade
() {
setEntidade
(new AlertasGeralDTO
());
getEntidade
().
setQuantidadeDiasVendas(90);
getEntidade
().
setTempoDeEstoqueParaAlerta(30);
getEntidade
().
setAdicionarModelosFavoritosSemVendas(true);
getEntidade
().
setTiposProdutoSelecionados(new ArrayList<TipoProduto
>());
}
@PostConstruct
private void iniciarConsolidacoes
() {
limparEntidade
();
}
public Integer getTempoDeEstoqueParaAlerta
() {
return tempoDeEstoqueParaAlerta
;
}
public void setTempoDeEstoqueParaAlerta
(Integer tempoDeEstoqueParaAlerta
) {
this.
tempoDeEstoqueParaAlerta = tempoDeEstoqueParaAlerta
;
}
public void verificarAlertasCapas
() {
limparEntidade
();
// CONSULTAR MODELOS MAIS VENDIDOS
List<RankingModeloDTO
> modelosMaisVendidos =
new ArrayList<RankingModeloDTO
>();
ParametrosConsultaModelosMaisVendidosDTO parametrosConsulta =
new ParametrosConsultaModelosMaisVendidosDTO
();
parametrosConsulta.
setDataFinal(DataUtils.
getDataAtual());
parametrosConsulta.
setDataInicial(DataUtils.
acrescentarDias(DataUtils.
getDataAtual(), getEntidade
().
getQuantidadeDiasVendas()*-
1));
modelosMaisVendidos.
addAll(vendaService.
consultarRankingModelos(parametrosConsulta, getEntidade
().
getAdicionarModelosFavoritosSemVendas()));
List<RankingComprasTransferenciasDTO
> rankingComprasTransferencias =
new ArrayList<RankingComprasTransferenciasDTO
>();
rankingComprasTransferencias.
addAll(vendaService.
consultarRankingComprasTransferencias(getEntidade
().
getQuantidadeDiasVendas(),
getEntidade
().
getTempoDeEstoqueParaAlerta(), modelosMaisVendidos,
false));
AlertasLogisticaComprasDTO alertasLogisticaComprasDTO =
new AlertasLogisticaComprasDTO
();
alertasLogisticaComprasDTO.
setQuantidadeAlertasModelosPossiveis(modelosMaisVendidos.
size());
alertasLogisticaComprasDTO.
setRankingsComprasTransferenciasDTO(rankingComprasTransferencias
);
getEntidade
().
setAlertasComprasCapasDTO(alertasLogisticaComprasDTO
);
}
public void verificarAlertas
() {
limparEntidade
();
getEntidade
().
setTempoDeEstoqueParaAlerta(getTempoDeEstoqueParaAlerta
());
getEntidade
().
setAlertasComprasDTO(alertasService.
consultarAlertasComprasGeral(getEntidade
()));
}
}