package br.com.ec.controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.model.charts.bar.BarChartModel;
import org.primefaces.model.charts.pie.PieChartModel;
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.AtestadoFuncionarioDTO;
import br.com.ec.domain.dto.AvaliacaoFuncionarioDTO;
import br.com.ec.domain.dto.ExameFuncionarioDTO;
import br.com.ec.domain.dto.FuncionarioFeriasDTO;
import br.com.ec.domain.dto.FormaPagamentoDTO;
import br.com.ec.domain.dto.FuncionarioDTO;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.dto.PessoaDTO;
import br.com.ec.domain.dto.PontoDTO;
import br.com.ec.domain.dto.consulta.ParametrosConsultaVendasDTO;
import br.com.ec.domain.dto.consulta.ParametrosPeriodoDTO;
import br.com.ec.domain.dto.grafico.GraficoBarraDTO;
import br.com.ec.domain.model.FuncionarioFerias;
import br.com.ec.domain.model.tipos.TipoProduto;
import br.com.ec.domain.service.AvaliacaoFuncionarioService;
import br.com.ec.domain.service.FuncionarioFeriasService;
import br.com.ec.domain.service.FuncionarioService;
import br.com.ec.domain.service.GraficoService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
@Named
@Scope
("view")
public class RelatorioAnaliticoBean
extends AbstractBean
<FuncionarioDTO
> implements Serializable {
private static final long serialVersionUID = 1L
;
private FuncionarioService funcionarioService
;
private GraficoService graficoService
;
private AvaliacaoFuncionarioService avaliacaoFuncionarioService
;
private FuncionarioFeriasService funcionarioFeriasService
;
private List<FuncionarioDTO
> listaFuncionariosDTO
;
private Long sequencialFuncionarioSelecionado
;
private FuncionarioDTO funcionarioSelecionado
;
private ParametrosPeriodoDTO parametrosPeriodoDTO
;
private Boolean graficoConsultado
;
private GraficoBarraDTO graficoVendas
;
private GraficoBarraDTO graficoPercentuaisMeta
;
private AvaliacaoFuncionarioDTO avaliacaoFuncionarioSelecionada
;
@Inject
public RelatorioAnaliticoBean
(FuncionarioService funcionarioService, GraficoService graficoService, AvaliacaoFuncionarioService avaliacaoFuncionarioService,
FuncionarioFeriasService funcionarioFeriasService
) {
this.
funcionarioService = funcionarioService
;
this.
graficoService = graficoService
;
this.
avaliacaoFuncionarioService = avaliacaoFuncionarioService
;
this.
funcionarioFeriasService = funcionarioFeriasService
;
}
@
Override
public GenericService
<FuncionarioDTO
> getService
() {
return null;
}
@
Override
public FuncionarioDTO getId
() {
return null;
}
@
Override
public void preCarregamento
() {
limparEntidade
();
consultarFuncionariosAdmitidos
();
}
@
Override
public void limparEntidade
() {
setEntidade
(new FuncionarioDTO
());
setParametrosPeriodoDTO
(new ParametrosPeriodoDTO
());
setFuncionarioSelecionado
(null);
setGraficoConsultado
(false);
}
public TipoProduto
[] getTiposProduto
() {
return TipoProduto.
values();
}
public List<FuncionarioDTO
> getListaFuncionariosDTO
() {
return listaFuncionariosDTO
;
}
public void setListaFuncionariosDTO
(List<FuncionarioDTO
> listaFuncionariosDTO
) {
this.
listaFuncionariosDTO = listaFuncionariosDTO
;
}
public Long getSequencialFuncionarioSelecionado
() {
return sequencialFuncionarioSelecionado
;
}
public void setSequencialFuncionarioSelecionado
(Long sequencialFuncionarioSelecionado
) {
this.
sequencialFuncionarioSelecionado = sequencialFuncionarioSelecionado
;
}
public FuncionarioDTO getFuncionarioSelecionado
() {
return funcionarioSelecionado
;
}
public void setFuncionarioSelecionado
(FuncionarioDTO funcionarioSelecionado
) {
this.
funcionarioSelecionado = funcionarioSelecionado
;
}
public ParametrosPeriodoDTO getParametrosPeriodoDTO
() {
return parametrosPeriodoDTO
;
}
public void setParametrosPeriodoDTO
(ParametrosPeriodoDTO parametrosPeriodoDTO
) {
this.
parametrosPeriodoDTO = parametrosPeriodoDTO
;
}
public Boolean getGraficoConsultado
() {
return graficoConsultado
;
}
public void setGraficoConsultado
(Boolean graficoConsultado
) {
this.
graficoConsultado = graficoConsultado
;
}
public GraficoBarraDTO getGraficoVendas
() {
return graficoVendas
;
}
public void setGraficoVendas
(GraficoBarraDTO graficoVendas
) {
this.
graficoVendas = graficoVendas
;
}
public GraficoBarraDTO getGraficoPercentuaisMeta
() {
return graficoPercentuaisMeta
;
}
public void setGraficoPercentuaisMeta
(GraficoBarraDTO graficoPercentuaisMeta
) {
this.
graficoPercentuaisMeta = graficoPercentuaisMeta
;
}
public AvaliacaoFuncionarioDTO getAvaliacaoFuncionarioSelecionada
() {
return avaliacaoFuncionarioSelecionada
;
}
public void setAvaliacaoFuncionarioSelecionada
(AvaliacaoFuncionarioDTO avaliacaoFuncionarioSelecionada
) {
this.
avaliacaoFuncionarioSelecionada = avaliacaoFuncionarioSelecionada
;
}
/**********************************/
public void consultarFuncionariosAdmitidos
() {
setListaFuncionariosDTO
(funcionarioService.
consultarFuncionariosAdmitidos());
}
public void analisarFuncionario
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
FuncionarioDTO funcionarioDTO = funcionarioService.
analisarFuncionario(getFuncionarioSelecionado
());
setFuncionarioSelecionado
(funcionarioDTO
);
}
});
}
public void gerarGraficosFuncionario
() {
setGraficoConsultado
(true);
ParametrosConsultaVendasDTO parametrosConsulta =
new ParametrosConsultaVendasDTO
();
parametrosConsulta.
setParametrosPeriodoDTO(getParametrosPeriodoDTO
());
parametrosConsulta.
setVendedorSelecionado(getFuncionarioSelecionado
().
getVendedorDTO());
parametrosConsulta.
setFormasDePagamentoDTO(new FormaPagamentoDTO
[0]);
setGraficoVendas
(new GraficoBarraDTO
(parametrosConsulta
));
setGraficoVendas
(graficoService.
gerarGraficoVendas(getGraficoVendas
().
getParametrosConsulta(),
null));
setGraficoPercentuaisMeta
(graficoService.
gerarGraficoPercentuaisMeta(getGraficoVendas
().
getParametrosConsulta()));
/*********************/
BarChartModel graficoComparativoCustosLucro = funcionarioService.
consultarGraficoComparativoCustosLucro(getFuncionarioSelecionado
().
getSequencialFuncionario(), getParametrosPeriodoDTO
());
getFuncionarioSelecionado
().
setGraficoComparativoCustosLucro(graficoComparativoCustosLucro
);
PieChartModel graficoTiposProdutos = funcionarioService.
consultarGraficoTiposProdutos(getFuncionarioSelecionado
().
getSequencialFuncionario(), getParametrosPeriodoDTO
(),
Arrays.
asList(getTiposProduto
()));
getFuncionarioSelecionado
().
setGraficoTiposProdutos(graficoTiposProdutos
);
PieChartModel graficoFormasPagamento = funcionarioService.
consultarGraficoFormasPagamento(getFuncionarioSelecionado
().
getSequencialFuncionario(), getParametrosPeriodoDTO
());
getFuncionarioSelecionado
().
setGraficoFormasPagamento(graficoFormasPagamento
);
}
public void consultarAvaliacoes
() {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
getFuncionarioSelecionado
().
setAvaliacoesDTO(avaliacaoFuncionarioService.
consultarAvaliacoesFuncionario(getFuncionarioSelecionado
().
getSequencialFuncionario()));
}
});
}
public void detalharAvaliacao
(final AvaliacaoFuncionarioDTO avaliacaoFuncionarioDTO
) {
new VerificadorLancamentoException
().
tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean
() {
public void execute
() {
avaliacaoFuncionarioDTO.
setItensAvaliacao(avaliacaoFuncionarioService.
consultarItensDaAvaliacao(avaliacaoFuncionarioDTO.
getSequencialFuncionario(), avaliacaoFuncionarioDTO.
getSequencialAvaliacao()));
setAvaliacaoFuncionarioSelecionada
(avaliacaoFuncionarioDTO
);
}
});
}
}